EdkCompatabilityPkg: Fix build issues with X64 clang
Removed passing VA_LIST and some assembly language compatability issues. Did not fix ReportStatusCode passing VA_LIST (non-ANSI C Code), and some of the assembler was not not ported and int 3 was inserted, as it likely is not needed. signed-off-by: andrewfish reviewed-by: lgao4 git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12006 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -45,9 +45,9 @@ ASM_PFX(AsmExecute32BitCode):
|
||||
#
|
||||
# save orignal GDTR and CS
|
||||
#
|
||||
movq %ds, %rax
|
||||
movl %ds, %eax
|
||||
push %rax
|
||||
movq %cs, %rax
|
||||
movl %cs, %eax
|
||||
push %rax
|
||||
subq $0x10, %rsp
|
||||
sgdt (%rsp)
|
||||
@@ -209,8 +209,8 @@ ReturnToLongMode:
|
||||
# Reload original DS/ES/SS
|
||||
#
|
||||
pop %rcx
|
||||
movq %rcx, %ds
|
||||
movq %rcx, %es
|
||||
movq %rcx, %ss
|
||||
movl %ecx, %ds
|
||||
movl %ecx, %es
|
||||
movl %ecx, %ss
|
||||
ret
|
||||
|
||||
|
@@ -13,18 +13,18 @@
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
|
||||
.equ VacantFlag, 0x0
|
||||
.equ NotVacantFlag, 0xff
|
||||
.set VacantFlag, 0x0
|
||||
.set NotVacantFlag, 0xff
|
||||
|
||||
.equ LockLocation, RendezvousFunnelProcEnd - RendezvousFunnelProcStart
|
||||
.equ StackStartAddressLocation, RendezvousFunnelProcEnd - RendezvousFunnelProcStart + 0x08
|
||||
.equ StackSizeLocation, RendezvousFunnelProcEnd - RendezvousFunnelProcStart + 0x10
|
||||
.equ CProcedureLocation, RendezvousFunnelProcEnd - RendezvousFunnelProcStart + 0x18
|
||||
.equ GdtrLocation, RendezvousFunnelProcEnd - RendezvousFunnelProcStart + 0x20
|
||||
.equ IdtrLocation, RendezvousFunnelProcEnd - RendezvousFunnelProcStart + 0x2A
|
||||
.equ BufferStartLocation, RendezvousFunnelProcEnd - RendezvousFunnelProcStart + 0x34
|
||||
.equ Cr3OffsetLocation, RendezvousFunnelProcEnd - RendezvousFunnelProcStart + 0x38
|
||||
.equ ProcessorNumberLocation, RendezvousFunnelProcEnd - RendezvousFunnelProcStart + 0x38
|
||||
.set LockLocation, RendezvousFunnelProcEnd - RendezvousFunnelProcStart
|
||||
.set StackStartAddressLocation, RendezvousFunnelProcEnd - RendezvousFunnelProcStart + 0x08
|
||||
.set StackSizeLocation, RendezvousFunnelProcEnd - RendezvousFunnelProcStart + 0x10
|
||||
.set CProcedureLocation, RendezvousFunnelProcEnd - RendezvousFunnelProcStart + 0x18
|
||||
.set GdtrLocation, RendezvousFunnelProcEnd - RendezvousFunnelProcStart + 0x20
|
||||
.set IdtrLocation, RendezvousFunnelProcEnd - RendezvousFunnelProcStart + 0x2A
|
||||
.set BufferStartLocation, RendezvousFunnelProcEnd - RendezvousFunnelProcStart + 0x34
|
||||
.set Cr3OffsetLocation, RendezvousFunnelProcEnd - RendezvousFunnelProcStart + 0x38
|
||||
.set ProcessorNumberLocation, RendezvousFunnelProcEnd - RendezvousFunnelProcStart + 0x38
|
||||
|
||||
#-------------------------------------------------------------------------------------
|
||||
|
||||
@@ -186,7 +186,9 @@ RendezvousFunnelProcEnd:
|
||||
# comments here for definition of address map
|
||||
ASM_GLOBAL ASM_PFX(AsmGetAddressMap)
|
||||
ASM_PFX(AsmGetAddressMap):
|
||||
|
||||
#ifdef __APPLE__
|
||||
int $3
|
||||
#else
|
||||
movq $RendezvousFunnelProcStart, %rax
|
||||
movq %rax, (%rcx)
|
||||
movq $(ProtectedModeStart - RendezvousFunnelProcStart), 0x08(%rcx)
|
||||
@@ -194,5 +196,5 @@ ASM_PFX(AsmGetAddressMap):
|
||||
movq $(LongModeStart - RendezvousFunnelProcStart), 0x18(%rcx)
|
||||
movq $(LONG_JUMP - RendezvousFunnelProcStart), 0x20(%rcx)
|
||||
movq $(RendezvousFunnelProcEnd - RendezvousFunnelProcStart), 0x28(%rcx)
|
||||
|
||||
#endif
|
||||
ret
|
||||
|
@@ -40,7 +40,11 @@ ASM_PFX(PageFaultHandlerHook):
|
||||
popq %rcx
|
||||
popq %rax # restore all volatile registers
|
||||
jnz L1
|
||||
#ifdef __APPLE__
|
||||
int $3
|
||||
#else
|
||||
jmpq *ASM_PFX(mOriginalHandler)
|
||||
#endif
|
||||
L1:
|
||||
addq $0x08, %rsp # skip error code for PF
|
||||
iretq
|
||||
|
Reference in New Issue
Block a user