xref: /reactos/drivers/storage/ide/uniata/inc/misc.h (revision 53221834)
1 #ifndef __CROSSNT_MISC__H__
2 #define __CROSSNT_MISC__H__
3 
4 #ifdef USE_REACTOS_DDK
5 
6 /* The definitions look so crappy, because the code doesn't care
7    whether the source is an array or an integer */
8 #define MOV_DD_SWP(a,b) ( ((PULONG)&(a))[0] = RtlUlongByteSwap(*(PULONG)&(b)))
9 #define MOV_DW_SWP(a,b) ( ((PUSHORT)&(a))[0] = RtlUshortByteSwap(*(PUSHORT)&(b)))
10 #define MOV_SWP_DW2DD(a,b) ((a) = RtlUshortByteSwap(*(PUSHORT)&(b)))
11 #define MOV_QD_SWP(a,b) { ((PULONG)&(a))[0] = RtlUlongByteSwap( ((PULONG)&(b))[1]); ((PULONG)&(a))[1] = RtlUlongByteSwap( ((PULONG)&(b))[0]); }
12 
13 #else
14 
15 typedef void
16 (__fastcall *ptrMOV_DD_SWP)(
17     void* a, // ECX
18     void* b  // EDX
19     );
20 extern "C" ptrMOV_DD_SWP _MOV_DD_SWP;
21 
22 extern "C"
23 void
24 __fastcall
25 _MOV_DD_SWP_i486(
26     void* a, // ECX
27     void* b  // EDX
28     );
29 
30 extern "C"
31 void
32 __fastcall
33 _MOV_DD_SWP_i386(
34     void* a, // ECX
35     void* b  // EDX
36     );
37 #define MOV_DD_SWP(a,b) _MOV_DD_SWP(&(a),&(b))
38 
39 /********************/
40 
41 typedef void
42 (__fastcall *ptrMOV_QD_SWP)(
43     void* a, // ECX
44     void* b  // EDX
45     );
46 extern "C" ptrMOV_QD_SWP _MOV_QD_SWP;
47 
48 extern "C"
49 void
50 __fastcall
51 _MOV_QD_SWP_i486(
52     void* a, // ECX
53     void* b  // EDX
54     );
55 
56 extern "C"
57 void
58 __fastcall
59 _MOV_QD_SWP_i386(
60     void* a, // ECX
61     void* b  // EDX
62     );
63 #define MOV_QD_SWP(a,b) _MOV_QD_SWP(&(a),&(b))
64 
65 /********************/
66 
67 extern "C"
68 void
69 __fastcall
70 _MOV_DW_SWP(
71     void* a, // ECX
72     void* b  // EDX
73     );
74 
75 #define MOV_DW_SWP(a,b) _MOV_DW_SWP(&(a),&(b))
76 
77 /********************/
78 
79 typedef void
80 (__fastcall *ptrREVERSE_DD)(
81     void* a  // ECX
82     );
83 extern "C" ptrREVERSE_DD _REVERSE_DD;
84 
85 void
86 __fastcall
87 _REVERSE_DD_i486(
88     void* a  // ECX
89     );
90 
91 void
92 __fastcall
93 _REVERSE_DD_i386(
94     void* a  // ECX
95     );
96 #define REVERSE_DD(a,b) _REVERSE_DD(&(a),&(b))
97 
98 /********************/
99 
100 extern "C"
101 void
102 __fastcall
103 _REVERSE_DW(
104     void* a  // ECX
105     );
106 
107 #define REVERSE_DW(a) _REVERSE_DW(&(a))
108 
109 /********************/
110 
111 extern "C"
112 void
113 __fastcall
114 _MOV_DW2DD_SWP(
115     void* a, // ECX
116     void* b  // EDX
117     );
118 
119 #define MOV_DW2DD_SWP(a,b) _MOV_DW2DD_SWP(&(a),&(b))
120 
121 /********************/
122 
123 extern "C"
124 void
125 __fastcall
126 _MOV_SWP_DW2DD(
127     void* a, // ECX
128     void* b  // EDX
129     );
130 
131 #define MOV_SWP_DW2DD(a,b) _MOV_SWP_DW2DD(&(a),&(b))
132 
133 /********************/
134 
135 extern "C"
136 void
137 __fastcall
138 _MOV_MSF(
139     void* a, // ECX
140     void* b  // EDX
141     );
142 #define MOV_MSF(a,b) _MOV_MSF(&(a),&(b))
143 
144 /********************/
145 
146 typedef void
147 (__fastcall *ptrMOV_MSF_SWP)(
148     void* a, // ECX
149     void* b  // EDX
150     );
151 extern "C" ptrMOV_MSF_SWP _MOV_MSF_SWP;
152 
153 extern "C"
154 void
155 __fastcall
156 _MOV_MSF_SWP_i486(
157     void* a, // ECX
158     void* b  // EDX
159     );
160 
161 extern "C"
162 void
163 __fastcall
164 _MOV_MSF_SWP_i386(
165     void* a, // ECX
166     void* b  // EDX
167     );
168 #define MOV_MSF_SWP(a,b) _MOV_MSF_SWP(&(a),&(b))
169 
170 /********************/
171 
172 extern "C"
173 void
174 __fastcall
175 _XCHG_DD(
176     void* a, // ECX
177     void* b  // EDX
178     );
179 #define XCHG_DD(a,b) _XCHG_DD(&(a),&(b))
180 
181 #endif //USE_REACTOS_DDK
182 
183 #endif // __CROSSNT_MISC__H__
184