1 ;; 2 ;; pmcall.inc 3 ;; 4 ;; Macros for the stack frame set up by pm_call, assuming ebp is left 5 ;; as the RM frame pointer. 6 ;; 7 8 %ifndef PMCALL_INC 9 %define PMCALL_INC 10 11 %define RM_GS word [ebp] 12 %define RM_FS word [ebp+2] 13 %define RM_ES word [ebp+4] 14 %define RM_DS word [ebp+6] 15 16 %define RM_EDI dword [ebp+8] 17 %define RM_DI word [ebp+8] 18 %define RM_HDI word [ebp+10] 19 %define RM_DIL byte [ebp+8] 20 %define RM_DIH byte [ebp+9] 21 22 %define RM_ESI dword [ebp+12] 23 %define RM_SI word [ebp+12] 24 %define RM_HSI word [ebp+14] 25 %define RM_SIL byte [ebp+12] 26 %define RM_SIH byte [ebp+13] 27 28 %define RM_EBP dword [ebp+16] 29 %define RM_BP word [ebp+16] 30 %define RM_HBP word [ebp+18] 31 %define RM_BPL byte [ebp+16] 32 %define RM_BPH byte [ebp+17] 33 34 %define RM_EBX dword [ebp+24] 35 %define RM_BX word [ebp+24] 36 %define RM_HBX word [ebp+26] 37 %define RM_BL byte [ebp+24] 38 %define RM_BH byte [ebp+25] 39 40 %define RM_EDX dword [ebp+28] 41 %define RM_DX word [ebp+28] 42 %define RM_HDX word [ebp+30] 43 %define RM_DL byte [ebp+28] 44 %define RM_DH byte [ebp+29] 45 46 %define RM_ECX dword [ebp+32] 47 %define RM_CX word [ebp+32] 48 %define RM_HCX word [ebp+34] 49 %define RM_CL byte [ebp+32] 50 %define RM_CH byte [ebp+33] 51 52 %define RM_EAX dword [ebp+36] 53 %define RM_AX word [ebp+36] 54 %define RM_HAX word [ebp+38] 55 %define RM_AL byte [ebp+36] 56 %define RM_AH byte [ebp+37] 57 58 %define RM_EFLAGS dword [ebp+40] 59 %define RM_FLAGS word [ebp+40] 60 %define RM_HFLAGS word [ebp+42] 61 %define RM_FLAGSL byte [ebp+40] 62 %define RM_FLAGSH byte [ebp+41] 63 64 ; Convenience macro to call a PM function 65 %macro pm_call 1 66 push dword %1 67 call _pm_call 68 %endmacro 69 70 %endif ; PMCALL_INC 71