4 * Windows NT Device Driver Kit
6 * This file is part of the ReactOS DDK package.
9 * Hermes Belusca-Maito (hermes.belusca@sfr.fr)
11 * THIS SOFTWARE IS NOT COPYRIGHTED
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
37 call_ica_hw_interrupt(
42 #define VDDSimulateInterrupt(ms, line, count) \
43 call_ica_hw_interrupt((ms), (line), (count)) // Windows specifies a count of 1 ...
57 _In_ BOOLEAN ProtectedMode
);
59 #define Sim32GetVDMPointer(Address, Size, Mode) \
60 MGetVdmPointer((Address), (Size), (Mode))
62 #define Sim32FlushVDMPointer(Address, Size, Buffer, Mode) TRUE
71 _In_ BOOLEAN ProtectedMode
);
79 _In_ BOOLEAN ProtectedMode
);
87 _In_ BOOLEAN ProtectedMode
);
89 /* This API appears to have never been implemented anywhere... */
90 #define Sim32FreeVDMPointer(Address, Size, Buffer, Mode) TRUE
92 #define GetVDMAddress(usSeg, usOff) (((ULONG)(usSeg) << 4) + (ULONG)(usOff))
94 #define GetVDMPointer(Address, Size, Mode) \
95 Sim32GetVDMPointer(Address, Size, Mode)
97 #define FlushVDMPointer(Address, Size, Buffer, Mode) \
98 Sim32FlushVDMPointer(Address, Size, Buffer, Mode)
100 #define FreeVDMPointer(Address, Size, Buffer, Mode) \
101 Sim32FreeVDMPointer(Address, Size, Buffer, Mode)
105 * Registers manipulation
107 PVOID WINAPI
getIntelRegistersPointer(VOID
);
111 ULONG WINAPI
getEAX(VOID
);
112 VOID WINAPI
setEAX(ULONG
);
113 USHORT WINAPI
getAX(VOID
);
114 VOID WINAPI
setAX(USHORT
);
115 UCHAR WINAPI
getAH(VOID
);
116 VOID WINAPI
setAH(UCHAR
);
117 UCHAR WINAPI
getAL(VOID
);
118 VOID WINAPI
setAL(UCHAR
);
120 ULONG WINAPI
getEBX(VOID
);
121 VOID WINAPI
setEBX(ULONG
);
122 USHORT WINAPI
getBX(VOID
);
123 VOID WINAPI
setBX(USHORT
);
124 UCHAR WINAPI
getBH(VOID
);
125 VOID WINAPI
setBH(UCHAR
);
126 UCHAR WINAPI
getBL(VOID
);
127 VOID WINAPI
setBL(UCHAR
);
129 ULONG WINAPI
getECX(VOID
);
130 VOID WINAPI
setECX(ULONG
);
131 USHORT WINAPI
getCX(VOID
);
132 VOID WINAPI
setCX(USHORT
);
133 UCHAR WINAPI
getCH(VOID
);
134 VOID WINAPI
setCH(UCHAR
);
135 UCHAR WINAPI
getCL(VOID
);
136 VOID WINAPI
setCL(UCHAR
);
138 ULONG WINAPI
getEDX(VOID
);
139 VOID WINAPI
setEDX(ULONG
);
140 USHORT WINAPI
getDX(VOID
);
141 VOID WINAPI
setDX(USHORT
);
142 UCHAR WINAPI
getDH(VOID
);
143 VOID WINAPI
setDH(UCHAR
);
144 UCHAR WINAPI
getDL(VOID
);
145 VOID WINAPI
setDL(UCHAR
);
149 ULONG WINAPI
getESP(VOID
);
150 VOID WINAPI
setESP(ULONG
);
151 USHORT WINAPI
getSP(VOID
);
152 VOID WINAPI
setSP(USHORT
);
154 ULONG WINAPI
getEBP(VOID
);
155 VOID WINAPI
setEBP(ULONG
);
156 USHORT WINAPI
getBP(VOID
);
157 VOID WINAPI
setBP(USHORT
);
159 ULONG WINAPI
getESI(VOID
);
160 VOID WINAPI
setESI(ULONG
);
161 USHORT WINAPI
getSI(VOID
);
162 VOID WINAPI
setSI(USHORT
);
164 ULONG WINAPI
getEDI(VOID
);
165 VOID WINAPI
setEDI(ULONG
);
166 USHORT WINAPI
getDI(VOID
);
167 VOID WINAPI
setDI(USHORT
);
169 ULONG WINAPI
getEIP(VOID
);
170 VOID WINAPI
setEIP(ULONG
);
171 USHORT WINAPI
getIP(VOID
);
172 VOID WINAPI
setIP(USHORT
);
174 USHORT WINAPI
getCS(VOID
);
175 VOID WINAPI
setCS(USHORT
);
176 USHORT WINAPI
getSS(VOID
);
177 VOID WINAPI
setSS(USHORT
);
178 USHORT WINAPI
getDS(VOID
);
179 VOID WINAPI
setDS(USHORT
);
180 USHORT WINAPI
getES(VOID
);
181 VOID WINAPI
setES(USHORT
);
182 USHORT WINAPI
getFS(VOID
);
183 VOID WINAPI
setFS(USHORT
);
184 USHORT WINAPI
getGS(VOID
);
185 VOID WINAPI
setGS(USHORT
);
187 ULONG WINAPI
getCF(VOID
);
188 VOID WINAPI
setCF(ULONG
);
189 ULONG WINAPI
getPF(VOID
);
190 VOID WINAPI
setPF(ULONG
);
191 ULONG WINAPI
getAF(VOID
);
192 VOID WINAPI
setAF(ULONG
);
193 ULONG WINAPI
getZF(VOID
);
194 VOID WINAPI
setZF(ULONG
);
195 ULONG WINAPI
getSF(VOID
);
196 VOID WINAPI
setSF(ULONG
);
197 ULONG WINAPI
getIF(VOID
);
198 VOID WINAPI
setIF(ULONG
);
199 ULONG WINAPI
getDF(VOID
);
200 VOID WINAPI
setDF(ULONG
);
201 ULONG WINAPI
getOF(VOID
);
202 VOID WINAPI
setOF(ULONG
);
204 ULONG WINAPI
getEFLAGS(VOID
);
205 VOID WINAPI
setEFLAGS(ULONG
);
207 USHORT WINAPI
getMSW(VOID
);
208 VOID WINAPI
setMSW(USHORT
);
212 ULONG WINAPI
c_getEAX(VOID
);
213 VOID WINAPI
c_setEAX(ULONG
);
214 USHORT WINAPI
c_getAX(VOID
);
215 VOID WINAPI
c_setAX(USHORT
);
216 UCHAR WINAPI
c_getAH(VOID
);
217 VOID WINAPI
c_setAH(UCHAR
);
218 UCHAR WINAPI
c_getAL(VOID
);
219 VOID WINAPI
c_setAL(UCHAR
);
221 ULONG WINAPI
c_getEBX(VOID
);
222 VOID WINAPI
c_setEBX(ULONG
);
223 USHORT WINAPI
c_getBX(VOID
);
224 VOID WINAPI
c_setBX(USHORT
);
225 UCHAR WINAPI
c_getBH(VOID
);
226 VOID WINAPI
c_setBH(UCHAR
);
227 UCHAR WINAPI
c_getBL(VOID
);
228 VOID WINAPI
c_setBL(UCHAR
);
230 ULONG WINAPI
c_getECX(VOID
);
231 VOID WINAPI
c_setECX(ULONG
);
232 USHORT WINAPI
c_getCX(VOID
);
233 VOID WINAPI
c_setCX(USHORT
);
234 UCHAR WINAPI
c_getCH(VOID
);
235 VOID WINAPI
c_setCH(UCHAR
);
236 UCHAR WINAPI
c_getCL(VOID
);
237 VOID WINAPI
c_setCL(UCHAR
);
239 ULONG WINAPI
c_getEDX(VOID
);
240 VOID WINAPI
c_setEDX(ULONG
);
241 USHORT WINAPI
c_getDX(VOID
);
242 VOID WINAPI
c_setDX(USHORT
);
243 UCHAR WINAPI
c_getDH(VOID
);
244 VOID WINAPI
c_setDH(UCHAR
);
245 UCHAR WINAPI
c_getDL(VOID
);
246 VOID WINAPI
c_setDL(UCHAR
);
250 ULONG WINAPI
c_getESP(VOID
);
251 VOID WINAPI
c_setESP(ULONG
);
252 USHORT WINAPI
c_getSP(VOID
);
253 VOID WINAPI
c_setSP(USHORT
);
255 ULONG WINAPI
c_getEBP(VOID
);
256 VOID WINAPI
c_setEBP(ULONG
);
257 USHORT WINAPI
c_getBP(VOID
);
258 VOID WINAPI
c_setBP(USHORT
);
260 ULONG WINAPI
c_getESI(VOID
);
261 VOID WINAPI
c_setESI(ULONG
);
262 USHORT WINAPI
c_getSI(VOID
);
263 VOID WINAPI
c_setSI(USHORT
);
265 ULONG WINAPI
c_getEDI(VOID
);
266 VOID WINAPI
c_setEDI(ULONG
);
267 USHORT WINAPI
c_getDI(VOID
);
268 VOID WINAPI
c_setDI(USHORT
);
270 ULONG WINAPI
c_getEIP(VOID
);
271 VOID WINAPI
c_setEIP(ULONG
);
272 USHORT WINAPI
c_getIP(VOID
);
273 VOID WINAPI
c_setIP(USHORT
);
275 USHORT WINAPI
c_getCS(VOID
);
276 VOID WINAPI
c_setCS(USHORT
);
277 USHORT WINAPI
c_getSS(VOID
);
278 VOID WINAPI
c_setSS(USHORT
);
279 USHORT WINAPI
c_getDS(VOID
);
280 VOID WINAPI
c_setDS(USHORT
);
281 USHORT WINAPI
c_getES(VOID
);
282 VOID WINAPI
c_setES(USHORT
);
283 USHORT WINAPI
c_getFS(VOID
);
284 VOID WINAPI
c_setFS(USHORT
);
285 USHORT WINAPI
c_getGS(VOID
);
286 VOID WINAPI
c_setGS(USHORT
);
288 ULONG WINAPI
c_getCF(VOID
);
289 VOID WINAPI
c_setCF(ULONG
);
290 ULONG WINAPI
c_getPF(VOID
);
291 VOID WINAPI
c_setPF(ULONG
);
292 ULONG WINAPI
c_getAF(VOID
);
293 VOID WINAPI
c_setAF(ULONG
);
294 ULONG WINAPI
c_getZF(VOID
);
295 VOID WINAPI
c_setZF(ULONG
);
296 ULONG WINAPI
c_getSF(VOID
);
297 VOID WINAPI
c_setSF(ULONG
);
298 ULONG WINAPI
c_getIF(VOID
);
299 VOID WINAPI
c_setIF(ULONG
);
300 ULONG WINAPI
c_getDF(VOID
);
301 VOID WINAPI
c_setDF(ULONG
);
302 ULONG WINAPI
c_getOF(VOID
);
303 VOID WINAPI
c_setOF(ULONG
);
305 USHORT WINAPI
c_getMSW(VOID
);
306 VOID WINAPI
c_setMSW(USHORT
);