2005-04-21 16:53:53 +02:00
|
|
|
! Miscellaneous constants used in assembler code.
|
|
|
|
W = _WORD_SIZE ! Machine word size.
|
|
|
|
|
|
|
|
! Offsets in struct proc. They MUST match proc.h.
|
|
|
|
P_STACKBASE = 0
|
|
|
|
GSREG = P_STACKBASE
|
|
|
|
FSREG = GSREG + 2 ! 386 introduces FS and GS segments
|
|
|
|
ESREG = FSREG + 2
|
|
|
|
DSREG = ESREG + 2
|
|
|
|
DIREG = DSREG + 2
|
|
|
|
SIREG = DIREG + W
|
|
|
|
BPREG = SIREG + W
|
|
|
|
STREG = BPREG + W ! hole for another SP
|
|
|
|
BXREG = STREG + W
|
|
|
|
DXREG = BXREG + W
|
|
|
|
CXREG = DXREG + W
|
|
|
|
AXREG = CXREG + W
|
|
|
|
RETADR = AXREG + W ! return address for save() call
|
|
|
|
PCREG = RETADR + W
|
|
|
|
CSREG = PCREG + W
|
|
|
|
PSWREG = CSREG + W
|
|
|
|
SPREG = PSWREG + W
|
|
|
|
SSREG = SPREG + W
|
|
|
|
P_STACKTOP = SSREG + W
|
|
|
|
P_LDT_SEL = P_STACKTOP
|
2008-11-19 13:26:10 +01:00
|
|
|
P_CR3 = P_LDT_SEL + W
|
|
|
|
P_LDT = P_CR3 + W
|
2005-04-21 16:53:53 +02:00
|
|
|
Msize = 9 ! size of a message in 32-bit words
|