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