Andrew: This patch also fixes GCC assembly issue. Here, [rcx] should store the absolute address. So, you use leaq instruction to get it. Right?
Thanks Liming From: Andrew Fish [mailto:[email protected]] Sent: Wednesday, April 02, 2014 12:21 PM To: [email protected] Subject: [edk2] [EdkCompatibilityPkg maintainer] This patch fixes a clang assembler porting issue (the port was not completed). It should be compatible with GCC. Please review and commit. Thanks, Andrew Fish Contributed-under: TianoCore Contribution Agreement 1.0 ~/work/edk2>svn diff --diff-cmd diff EdkCompatibilityPkg/Compatibility/MpServicesOnFrameworkMpServicesThunk/X64/MpFuncs.S Index: EdkCompatibilityPkg/Compatibility/MpServicesOnFrameworkMpServicesThunk/X64/MpFuncs.S =================================================================== --- EdkCompatibilityPkg/Compatibility/MpServicesOnFrameworkMpServicesThunk/X64/MpFuncs.S (revision 15426) +++ EdkCompatibilityPkg/Compatibility/MpServicesOnFrameworkMpServicesThunk/X64/MpFuncs.S (working copy) @@ -196,15 +196,11 @@ # comments here for definition of address map ASM_GLOBAL ASM_PFX(AsmGetAddressMap) ASM_PFX(AsmGetAddressMap): -#ifdef __APPLE__ - int $3 -#else - movq $RendezvousFunnelProcStart, %rax + leaq RendezvousFunnelProcStart(%rip), %rax movq %rax, (%rcx) movq $(ProtectedModeStart - RendezvousFunnelProcStart), 0x08(%rcx) movq $(FLAT32_JUMP - RendezvousFunnelProcStart), 0x10(%rcx) movq $(LongModeStart - RendezvousFunnelProcStart), 0x18(%rcx) movq $(LONG_JUMP - RendezvousFunnelProcStart), 0x20(%rcx) movq $(RendezvousFunnelProcEnd - RendezvousFunnelProcStart), 0x28(%rcx) -#endif ret
------------------------------------------------------------------------------
_______________________________________________ edk2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-devel
