2 * COPYRIGHT: GPL - See COPYING in the top level directory
3 * PROJECT: ReactOS Virtual DOS Machine
5 * PURPOSE: 32-bit Interrupt Handlers
6 * PROGRAMMERS: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
7 * Hermes Belusca-Maito (hermes.belusca@sfr.fr)
13 /* DEFINES ********************************************************************/
15 /* 32-bit Interrupt Identifiers */
16 #define EMULATOR_MAX_INT32_NUM 0xFF + 1
18 #define INT_HANDLER_OFFSET 0x1000
19 #define COMMON_STUB_OFFSET 0x2000
22 typedef struct _CALLBACK16
24 ULONG TrampolineFarPtr
; // Where the trampoline zone is placed
27 } CALLBACK16
, *PCALLBACK16
;
30 /* FUNCTIONS ******************************************************************/
32 typedef VOID (WINAPI
*EMULATOR_INT32_PROC
)(LPWORD Stack
);
35 InitializeContext(IN PCALLBACK16 Context
,
40 Call16(IN USHORT Segment
,
44 RegisterCallback16(IN ULONG FarPtr
,
45 IN LPBYTE CallbackCode
,
46 IN SIZE_T CallbackSize
,
47 OUT PSIZE_T CodeSize OPTIONAL
);
50 RunCallback16(IN PCALLBACK16 Context
,
54 RegisterInt16(IN ULONG FarPtr
,
56 IN LPBYTE CallbackCode
,
57 IN SIZE_T CallbackSize
,
58 OUT PSIZE_T CodeSize OPTIONAL
);
61 RegisterInt32(IN ULONG FarPtr
,
63 IN EMULATOR_INT32_PROC IntHandler
,
64 OUT PSIZE_T CodeSize OPTIONAL
);
67 Int32Call(IN PCALLBACK16 Context
,
70 VOID WINAPI
Int32Dispatch(LPWORD Stack
);
71 VOID
InitializeCallbacks(VOID
);
73 #endif // _CALLBACK_H_