From 57069be8fba60f26e1ca5f056e995e348e2ad2f8 Mon Sep 17 00:00:00 2001 From: xli24 Date: Thu, 24 Jan 2008 02:59:28 +0000 Subject: 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 --- MdePkg/Library/BaseLib/X64/Thunk16.S | 28 ++++++++++++++++++---------- 1 file 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 +.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) -- cgit v1.2.3