]> wirehaze git hosting - MS-DOS.git/blob - v4.0/src/MEMM/MEMM/VM386.INC

wirehaze git hosting

MZ is back!
[MS-DOS.git] / v4.0 / src / MEMM / MEMM / VM386.INC
1
2
3 ;******************************************************************************
4 ;
5 ; (C) Copyright MICROSOFT Corp. 1986
6 ;
7 ; Title: MEMM - MICROSOFT Expanded Memory Manager 386
8 ;
9 ; Module: VM386.INC
10 ;
11 ; Version: 0.03
12 ;
13 ; Date: May 12, 1986
14 ;
15 ; Author:
16 ;
17 ;******************************************************************************
18 ;
19 ; Change log:
20 ;
21 ; DATE REVISION DESCRIPTION
22 ; -------- -------- -------------------------------------------------------
23 ; Original
24 ; 05/12/86 A Cleanup and segment reorganization
25 ; 06/08/86 B Added Disable A20 equates
26 ; 06/14/86 C Added MOV_CDTR_FRAME, PROT_INS_FRAME, and changed
27 ; VTFO from 2 to 4 to reflect push of EBP from BP
28 ; 06/15/86 D Added GPFAULT_FRAME
29 ; 06/28/86 0.02 Name change from MEMM386 to MEMM
30 ; 07/01/86 0.03 Added structures for accessing memory
31 ;
32 ;******************************************************************************
33 ifndef INC_LIST
34 .xlist
35 endif
36
37 ;
38 ; Structures for accessing memory
39 ;
40 WordS struc
41 LowByte db ?
42 HighByte db ?
43 WordS ends
44
45 DwordS struc
46 LowWord dw ?
47 HighWord dw ?
48 DwordS ends
49
50 ;
51 ; Structure for accessing stack frame pushed during trap exit from VM
52 ;
53
54 VM_TRAP_FRAME struc
55 VMTF_EIP dw ? ; EIP (low)
56 dw ? ; EIP (high)
57 VMTF_CS dw ? ; CS
58 dw ? ; (padding)
59 VMTF_EFLAGS dw ? ; EFLAGS (low)
60 VMTF_EFLAGShi dw ? ; EFLAGS (high)
61 VMTF_ESP dw ? ; ESP (low)
62 dw ? ; ESP (high)
63 VMTF_SS dw ? ; SS
64 dw ? ; (padding)
65 VMTF_ES dw ? ; ES
66 dw ? ; (padding)
67 VMTF_DS dw ? ; DS
68 dw ? ; (padding)
69 VMTF_FS dw ? ; FS
70 dw ? ; (padding)
71 VMTF_GS dw ? ; GS
72 dw ? ; (padding)
73 VM_TRAP_FRAME ends
74 ;
75 ; Used in EmMovCDTR (vminst.asm)
76 MOV_CDTR_FRAME struc
77 MCF_WBP dw ? ; Work BP
78 MCF_WES dw ? ; Work ES
79 MCF_EAX dw ? ; EAXlo
80 dw ? ; EAXhi
81 MCF_ESI dw ? ; ESIlo
82 dw ? ; ESIhi
83 MCF_EBX dw ? ; EBXlo
84 dw ? ; EBXhi
85 MCF_EBP dw ? ; EBPlo
86 dw ? ; EBPhi
87 MCF_VMERR dw ? ; VM Error Code (low)
88 dw ? ; VM Error Code (high)
89 MCF_VMEIP dw ? ; VM EIP (low)
90 dw ? ; VM EIP (high)
91 MCF_VMCS dw ? ; VM CS
92 dw ? ; (padding)
93 MCF_VMEFLAGS dw ? ; VM EFLAGS (low)
94 MCF_VMEFLAGShi dw ? ; VM EFLAGS (high)
95 MCF_VMESP dw ? ; VM ESP (low)
96 dw ? ; VM ESP (high)
97 MCF_VMSS dw ? ; VM SS
98 dw ? ; (padding)
99 MCF_VMES dw ? ; VM ES
100 dw ? ; (padding)
101 MCF_VMDS dw ? ; VM DS
102 dw ? ; (padding)
103 MCF_VMFS dw ? ; VM FS
104 dw ? ; (padding)
105 MCF_VMGS dw ? ; VM GS
106 dw ? ; (padding)
107 MOV_CDTR_FRAME ends
108 ;
109 ; Used in EmProtIns (vminst.asm)
110 PROT_INS_FRAME struc
111 PIF_WBP dw ? ; Work BP
112 PIF_WES dw ? ; Work ES
113 PIF_AX dw ? ; EAXlo
114 PIF_DX dw ? ; EDXlo
115 PIF_ESI dw ? ; ESIlo
116 dw ? ; ESIhi
117 PIF_EBX dw ? ; EBXlo
118 dw ? ; EBXhi
119 PIF_EBP dw ? ; EBPlo
120 dw ? ; EBPhi
121 PIF_VMERR dw ? ; VM Error Code (low)
122 dw ? ; VM Error Code (high)
123 PIF_VMEIP dw ? ; VM EIP (low)
124 dw ? ; VM EIP (high)
125 PIF_VMCS dw ? ; VM CS
126 dw ? ; (padding)
127 PIF_VMEFLAGS dw ? ; VM EFLAGS (low)
128 PIF_VMEFLAGShi dw ? ; VM EFLAGS (high)
129 PIF_VMESP dw ? ; VM ESP (low)
130 dw ? ; VM ESP (high)
131 PIF_VMSS dw ? ; VM SS
132 dw ? ; (padding)
133 PIF_VMES dw ? ; VM ES
134 dw ? ; (padding)
135 PIF_VMDS dw ? ; VM DS
136 dw ? ; (padding)
137 PIF_VMFS dw ? ; VM FS
138 dw ? ; (padding)
139 PIF_VMGS dw ? ; VM GS
140 dw ? ; (padding)
141 PROT_INS_FRAME ends
142 ;
143 GPFAULT_FRAME struc
144 GPF_ESI dw ? ; ESIlo
145 dw ? ; ESIhi
146 GPF_EBX dw ? ; EBXlo
147 dw ? ; EBXhi
148 GPF_EBP dw ? ; EBPlo
149 dw ? ; EBPhi
150 GPFAULT_FRAME ends
151 ;
152 ; The following constants define the offset of the Virtual Mode trap stack
153 ; frame (from current SP assuming BP has been pushed) for the two cases:
154 ; 1) exceptions that don't push error codes and 2) those that do.
155 ;
156 VTFO equ 4 ; offset of VM trap stack frame
157 VTFOE equ VTFO + 4 ; as above, but including error code
158 ;
159 ; These constants are used to sanity-check the value of SP when one of
160 ; the exception handlers has been entered:
161 ;
162 STACK segment
163 extrn kstack_top:byte
164 STACK ends
165
166 ; Trap/no error
167 VMT_STACK equ offset STACK:kstack_top - size VM_TRAP_FRAME - VTFO
168 ; Trap w/error
169 VMTERR_STACK equ offset STACK:kstack_top - size VM_TRAP_FRAME - VTFOE
170
171 ;******************************************************************************
172 ; E R R O R C O D E S
173 ;******************************************************************************
174 ;
175 PrivErr equ 0000h ; Privileged Operation Error class
176 ErrLGDT equ 0000h ; Client tried to execute a LGDT
177 ErrLIDT equ 0001h ; Client tried to execute a LIDT
178 ErrLMSW equ 0002h ; Client tried to execute a LMSW
179 Err2LL equ 0003h ; Client tried to execute a 286 Loadall
180 Err3LL equ 0004h ; Client tried to execute a 386 Loadall
181 ErrMovCR equ 0005h ; Client tried to execute a CRn mov
182 ErrMovDR equ 0006h ; Client tried to execute a DRn mov
183 ErrMovTR equ 0007h ; Client tried to execute a TRn mov
184
185 ExcpErr equ 0001h ; Exception Error class
186 ErrDIV equ 0000h ; Divide Error
187 ErrINT1 equ 0001h ; Debug Exception
188 ErrNMI equ 0002h ; NMI
189 ErrINT3 equ 0003h ; Int 3
190 ErrINTO equ 0004h ; Int O error
191 ErrBounds equ 0005h ; Array Bounds Check
192 ErrOpCode equ 0006h ; Invalid Opcode
193 ErrCoPNA equ 0007h ; Coprocessor Device not available
194 ErrDouble equ 0008h ; Double Fault
195 ErrCoPseg equ 0009h ; Coprocessor Segment Overrun
196 ErrTSS equ 000Ah ; Invalid TSS
197 ErrSegNP equ 000Bh ; Segment not Present
198 ErrStack equ 000Ch ; Stack Fault
199 ErrGP equ 000Dh ; General Protection Fault
200 ErrPage equ 000Eh ; Page Fault
201 ErrCoPerr equ 0010h ; Coprocessor Error
202 ErrWrite equ 0020h ; Attempt to write to protected area
203 ErrDMA equ 0021h ; Attempt to DMA into page frame (not for user)
204 ErrINTProt equ 0022h ; General Protected interrupt error
205
206 .list ; end of VM386.INC