]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UnixPkg/Library/UnixBaseLib/X64/Thunk16.S
2nd wave of r11105 checkin.2nd wave of r11105 checkin.
[mirror_edk2.git] / UnixPkg / Library / UnixBaseLib / X64 / Thunk16.S
index 049ec86355fd21f5355af42a5c8b0fd5795910f8..0ec71cd4b0e4c320d429895311a89cd48c2e8c67 100644 (file)
@@ -30,31 +30,37 @@ ASM_GLOBAL ASM_PFX(mTransition)
 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
@@ -118,7 +124,8 @@ L_2:
     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
@@ -147,7 +154,7 @@ SavedSp:    .space 4                   # restore stack
 \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
@@ -220,7 +227,7 @@ ASM_PFX(_32Data):
             .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
@@ -301,7 +308,8 @@ ASM_PFX(InternalAsmThunk16):
     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