176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman;; 276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman;; pmcall.inc 376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman;; 476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman;; Macros for the stack frame set up by pm_call, assuming ebp is left 576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman;; as the RM frame pointer. 676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman;; 776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%ifndef PMCALL_INC 976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define PMCALL_INC 1076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_GS word [ebp] 1276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_FS word [ebp+2] 1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_ES word [ebp+4] 1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_DS word [ebp+6] 1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_EDI dword [ebp+8] 1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_DI word [ebp+8] 1876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_HDI word [ebp+10] 1976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_DIL byte [ebp+8] 2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_DIH byte [ebp+9] 2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_ESI dword [ebp+12] 2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_SI word [ebp+12] 2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_HSI word [ebp+14] 2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_SIL byte [ebp+12] 2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_SIH byte [ebp+13] 2776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_EBP dword [ebp+16] 2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_BP word [ebp+16] 3076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_HBP word [ebp+18] 3176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_BPL byte [ebp+16] 3276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_BPH byte [ebp+17] 3376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 3476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_EBX dword [ebp+24] 3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_BX word [ebp+24] 3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_HBX word [ebp+26] 3776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_BL byte [ebp+24] 3876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_BH byte [ebp+25] 3976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 4076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_EDX dword [ebp+28] 4176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_DX word [ebp+28] 4276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_HDX word [ebp+30] 4376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_DL byte [ebp+28] 4476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_DH byte [ebp+29] 4576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 4676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_ECX dword [ebp+32] 4776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_CX word [ebp+32] 4876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_HCX word [ebp+34] 4976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_CL byte [ebp+32] 5076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_CH byte [ebp+33] 5176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 5276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_EAX dword [ebp+36] 5376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_AX word [ebp+36] 5476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_HAX word [ebp+38] 5576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_AL byte [ebp+36] 5676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_AH byte [ebp+37] 5776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 5876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_EFLAGS dword [ebp+40] 5976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_FLAGS word [ebp+40] 6076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_HFLAGS word [ebp+42] 6176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_FLAGSL byte [ebp+40] 6276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%define RM_FLAGSH byte [ebp+41] 6376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 6476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman; Convenience macro to call a PM function 6576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%macro pm_call 1 6676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman push dword %1 6776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman call _pm_call 6876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%endmacro 6976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 7076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman%endif ; PMCALL_INC 71