ASM_GLOBAL ASM_PFX(InternalAsmThunk16)\r
\r
# define the structure of IA32_REGS\r
-.set _EDI, 0 #size 4\r
-.set _ESI, 4 #size 4\r
-.set _EBP, 8 #size 4\r
-.set _ESP, 12 #size 4\r
-.set _EBX, 16 #size 4\r
-.set _EDX, 20 #size 4\r
-.set _ECX, 24 #size 4\r
-.set _EAX, 28 #size 4\r
-.set _DS, 32 #size 2\r
-.set _ES, 34 #size 2\r
-.set _FS, 36 #size 2\r
-.set _GS, 38 #size 2\r
-.set _EFLAGS, 40 #size 8\r
-.set _EIP, 48 #size 4\r
-.set _CS, 52 #size 2\r
-.set _SS, 54 #size 2\r
-.set IA32_REGS_SIZE, 56\r
+#define _EDI 0 // size 4\r
+#define _ESI 4 // size 4\r
+#define _EBP 8 // size 4\r
+#define _ESP 12 // size 4\r
+#define _EBX 16 // size 4\r
+#define _EDX 20 // size 4\r
+#define _ECX 24 // size 4\r
+#define _EAX 28 // size 4\r
+#define _DS 32 // size 2\r
+#define _ES 34 // size 2\r
+#define _FS 36 // size 2\r
+#define _GS 38 // size 2\r
+#define _EFLAGS 40 // size 8\r
+#define _EIP 48 // size 4\r
+#define _CS 52 // size 2\r
+#define _SS 54 // size 2\r
+#define IA32_REGS_SIZE 56\r
\r
.data\r
\r
-ASM_PFX(m16Size): .word ASM_PFX(InternalAsmThunk16) - ASM_PFX(m16Start)\r
-ASM_PFX(mThunk16Attr): .word _ThunkAttr - ASM_PFX(m16Start)\r
-ASM_PFX(m16Gdt): .word ASM_PFX(NullSeg) - ASM_PFX(m16Start)\r
-ASM_PFX(m16GdtrBase): .word _16GdtrBase - ASM_PFX(m16Start)\r
-ASM_PFX(mTransition): .word _EntryPoint - ASM_PFX(m16Start)\r
+.set L_m16SizeSym, ASM_PFX(InternalAsmThunk16) - ASM_PFX(m16Start)\r
+.set L_mThunk16AttrSym, _ThunkAttr - ASM_PFX(m16Start)\r
+.set L_m16GdtSym, ASM_PFX(NullSeg) - ASM_PFX(m16Start)\r
+.set L_m16GdtrBaseSym, _16GdtrBase - ASM_PFX(m16Start)\r
+.set L_mTransitionSym, _EntryPoint - ASM_PFX(m16Start)\r
+\r
+ASM_PFX(m16Size): .word L_m16SizeSym\r
+ASM_PFX(mThunk16Attr): .word L_mThunk16AttrSym\r
+ASM_PFX(m16Gdt): .word L_m16GdtSym\r
+ASM_PFX(m16GdtrBase): .word L_m16GdtrBaseSym\r
+ASM_PFX(mTransition): .word L_mTransitionSym\r
\r
.text\r
\r
shlw $4,%ax\r
lea (L_64BitCode - L_Base)(%ebx, %eax), %ax\r
.byte 0x66,0x2e,0x89,0x87 # mov cs:[bx + (L_64Eip - L_Base)], eax\r
- .word L_64Eip - L_Base\r
+.set EipOffset, L_64Eip - L_Base\r
+ .word EipOffset\r
.byte 0x66,0xb8 # mov eax, imm32\r
SavedCr4: .space 4\r
movq %rax, %cr4\r
\r
_EntryPoint: .long ASM_PFX(ToUserCode) - ASM_PFX(m16Start)\r
.word CODE16\r
-_16Gdtr: .word GDT_SIZE - 1\r
+_16Gdtr: .word L_GDT_SIZE - 1\r
_16GdtrBase: .quad ASM_PFX(NullSeg)\r
_16Idtr: .word 0x3ff\r
.long 0\r
.byte 0xcf # 16-bit segment, 4GB limit\r
.byte 0\r
\r
-.set GDT_SIZE, . - ASM_PFX(NullSeg)\r
+.set L_GDT_SIZE, . - ASM_PFX(NullSeg)\r
\r
#------------------------------------------------------------------------------\r
# IA32_REGISTER_SET *\r
movw %r8w, (SavedCs - SavedCr4)(%rcx)\r
movl %esp, (SavedSp - SavedCr4)(%rcx)\r
.byte 0xff, 0x69 # jmp (_EntryPoint - SavedCr4)(%rcx)\r
- .byte _EntryPoint - SavedCr4\r
+.set EntryPointSavedCr4Offset, _EntryPoint - SavedCr4\r
+ .byte EntryPointSavedCr4Offset\r
L_RetFromRealMode: \r
popfq\r
lgdt 0x60(%rsp) # restore protected mode GDTR\r