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 #define BOP(num) LOBYTE(EMULATOR_BOP), HIBYTE(EMULATOR_BOP), (num)
16 #define UnSimulate16(trap) \
18 *(PUSHORT)(trap) = EMULATOR_BOP; \
19 (trap) += sizeof(USHORT); \
20 *(trap) = BOP_UNSIMULATE; \
22 // #define UnSimulate16 MAKELONG(EMULATOR_BOP, BOP_UNSIMULATE) // BOP(BOP_UNSIMULATE)
24 #define TRAMPOLINE_SIZE sizeof(ULONGLONG)
26 typedef struct _CALLBACK16
28 ULONG TrampolineFarPtr
; // Where the trampoline zone is placed
29 ULONG TrampolineSize
; // Size of the trampoline zone
32 } CALLBACK16
, *PCALLBACK16
;
34 /* FUNCTIONS ******************************************************************/
37 InitializeContextEx(IN PCALLBACK16 Context
,
38 IN ULONG TrampolineSize
,
43 InitializeContext(IN PCALLBACK16 Context
,
48 Call16(IN USHORT Segment
,
52 RunCallback16(IN PCALLBACK16 Context
,
56 RegisterCallback16(IN ULONG FarPtr
,
57 IN LPBYTE CallbackCode
,
58 IN SIZE_T CallbackSize
,
59 OUT PSIZE_T CodeSize OPTIONAL
);
61 #endif // _CALLBACK_H_