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