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