diff options
author | xli24 <xli24@6f19259b-4bc3-4df7-8a09-765794883524> | 2008-01-24 02:59:28 +0000 |
---|---|---|
committer | xli24 <xli24@6f19259b-4bc3-4df7-8a09-765794883524> | 2008-01-24 02:59:28 +0000 |
commit | 57069be8fba60f26e1ca5f056e995e348e2ad2f8 (patch) | |
tree | a549a2e93d29f8130f78c366059d1c164ff04a6c | |
parent | 392d56cf4ed3295e0d673e47b7f2adc0464a661d (diff) | |
download | edk2-platforms-57069be8fba60f26e1ca5f056e995e348e2ad2f8.tar.xz |
Update Thunk16.S of X64 for BaseLib.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4620 6f19259b-4bc3-4df7-8a09-765794883524
-rw-r--r-- | MdePkg/Library/BaseLib/X64/Thunk16.S | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/MdePkg/Library/BaseLib/X64/Thunk16.S b/MdePkg/Library/BaseLib/X64/Thunk16.S index 1ff8c800a2..3200a09282 100644 --- a/MdePkg/Library/BaseLib/X64/Thunk16.S +++ b/MdePkg/Library/BaseLib/X64/Thunk16.S @@ -21,6 +21,14 @@ #include <Library/BaseLib.h> +.globl ASM_PFX(m16Start)
+.globl ASM_PFX(m16Size)
+.globl ASM_PFX(mThunk16Attr)
+.globl ASM_PFX(m16Gdt)
+.globl ASM_PFX(m16GdtrBase)
+.globl ASM_PFX(mTransition)
+.globl ASM_PFX(InternalAsmThunk16)
+ # define the structure of IA32_REGS
.equ _EDI, 0 #size 4
.equ _ESI, 4 #size 4
@@ -42,15 +50,15 @@ .data -m16Size: .word _InternalAsmThunk16 - m16Start -mThunk16Attr: .word _ThunkAttr - m16Start -m16Gdt: .word _NullSeg - m16Start -m16GdtrBase: .word _16GdtrBase - m16Start -mTransition: .word _EntryPoint - m16Start +ASM_PFX(m16Size): .word ASM_PFX(InternalAsmThunk16) - ASM_PFX(m16Start) +ASM_PFX(mThunk16Attr): .word _ThunkAttr - ASM_PFX(m16Start) +ASM_PFX(m16Gdt): .word _NullSeg - ASM_PFX(m16Start) +ASM_PFX(m16GdtrBase): .word _16GdtrBase - ASM_PFX(m16Start) +ASM_PFX(mTransition): .word _EntryPoint - ASM_PFX(m16Start) .text -m16Start: +ASM_PFX(m16Start): SavedGdt: .space 10 @@ -134,10 +142,10 @@ SavedCs: .space 2 movq %r8, %rsp ret -_EntryPoint: .long ASM_PFX(ToUserCode) - m16Start +_EntryPoint: .long ASM_PFX(ToUserCode) - ASM_PFX(m16Start) .word CODE16 _16Gdtr: .word GDT_SIZE - 1 -_16GdtrBase: .quad $_NullSeg +_16GdtrBase: .quad _NullSeg _16Idtr: .word 0x3ff .long 0 @@ -244,11 +252,11 @@ ASM_PFX(InternalAsmThunk16): popq %rcx rep movsl # copy RegSet - lea (SavedCr4 - m16Start)(%rdx), %ecx + lea (SavedCr4 - ASM_PFX(m16Start))(%rdx), %ecx movl %edx,%eax # eax <- transition code address andl $0xf,%edx shll $12,%eax # segment address in high order 16 bits - lea (_BackFromUserCode - m16Start)(%rdx), %ax + lea (_BackFromUserCode - ASM_PFX(m16Start))(%rdx), %ax stosl # [edi] <- return address of user code sgdt (SavedGdt - SavedCr4)(%rcx) sidt 0x38(%rsp) |