On Apr 3, 2014, at 8:51 PM, Gao, Liming <[email protected]> wrote:

> Andrew:
>   This patch also fixes GCC assembly issue. Here, [rcx] should store the 
> absolute address. So, you use leaq instruction to get it. Right?
>  

Yes. It is just the RIP relative form of the instruction. It avoids a 
relocation. 

Thanks,

Andrew Fish

> 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

------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to