From 271d2c7f99612aae7b487cdad9c391373384e19b Mon Sep 17 00:00:00 2001 From: andrewfish Date: Tue, 12 Jul 2011 02:57:30 +0000 Subject: 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 --- .../X64/AsmDispatchExecute.S | 10 ++++---- .../X64/MpFuncs.S | 30 ++++++++++++---------- .../SmmBaseHelper/X64/PageFaultHandler.S | 4 +++ 3 files changed, 25 insertions(+), 19 deletions(-) (limited to 'EdkCompatibilityPkg/Compatibility') diff --git a/EdkCompatibilityPkg/Compatibility/BootScriptSaveOnS3SaveStateThunk/X64/AsmDispatchExecute.S b/EdkCompatibilityPkg/Compatibility/BootScriptSaveOnS3SaveStateThunk/X64/AsmDispatchExecute.S index 167e7d4cc..36f5fd577 100644 --- a/EdkCompatibilityPkg/Compatibility/BootScriptSaveOnS3SaveStateThunk/X64/AsmDispatchExecute.S +++ b/EdkCompatibilityPkg/Compatibility/BootScriptSaveOnS3SaveStateThunk/X64/AsmDispatchExecute.S @@ -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 diff --git a/EdkCompatibilityPkg/Compatibility/MpServicesOnFrameworkMpServicesThunk/X64/MpFuncs.S b/EdkCompatibilityPkg/Compatibility/MpServicesOnFrameworkMpServicesThunk/X64/MpFuncs.S index 5ec90bdaa..6ea0f3e69 100644 --- a/EdkCompatibilityPkg/Compatibility/MpServicesOnFrameworkMpServicesThunk/X64/MpFuncs.S +++ b/EdkCompatibilityPkg/Compatibility/MpServicesOnFrameworkMpServicesThunk/X64/MpFuncs.S @@ -13,18 +13,18 @@ #------------------------------------------------------------------------------ -.equ VacantFlag, 0x0 -.equ 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 VacantFlag, 0x0 +.set NotVacantFlag, 0xff + +.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 diff --git a/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/X64/PageFaultHandler.S b/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/X64/PageFaultHandler.S index 5a5050735..ae26a4b30 100644 --- a/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/X64/PageFaultHandler.S +++ b/EdkCompatibilityPkg/Compatibility/SmmBaseHelper/X64/PageFaultHandler.S @@ -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 -- cgit v1.2.3