edk2/UefiCpuPkg/Library
Michael Kinney 3b2928b469 UefiCpuPkg/MpInitLib: Fix X64 XCODE5/NASM compatibility issues
https://bugzilla.tianocore.org/show_bug.cgi?id=565

Fix NASM compatibility issues with XCODE5 tool chain.
The XCODE5 tool chain for X64 builds using PIE (Position
Independent Executable).  For most assembly sources using
PIE mode does not cause any issues.

However, if assembly code is copied to a different address
(such as AP startup code in the MpInitLib), then the
X64 assembly source must be implemented to be compatible
with PIE mode that uses RIP relative addressing.

The specific changes in this patch are:

* Use LEA instruction instead of MOV instruction to lookup
  the addresses of functions.

* The assembly function RendezvousFunnelProc() is copied
  below 1MB so it can be executed as part of the MpInitLib
  AP startup sequence.  RendezvousFunnelProc() calls the
  external function InitializeFloatingPointUnits().  The
  absolute address of InitializeFloatingPointUnits() is
  added to the MP_CPU_EXCHANGE_INFO structure that is passed
  to RendezvousFunnelProc().

Cc: Andrew Fish <afish@apple.com>
Cc: Jeff Fan <jeff.fan@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
Reviewed-by: Jeff Fan <jeff.fan@intel.com>
Reviewed-by: Andrew Fish <afish@apple.com>
2017-05-22 19:43:46 -07:00
..
BaseUefiCpuLib UefiCpuPkg: Use FINIT instead of hex values 2017-05-19 14:15:15 -07:00
BaseXApicLib UefiCpuPkg/LocalApicLib: fix feature test for Extended Topology CPUID leaf 2016-11-23 21:41:05 +01:00
BaseXApicX2ApicLib UefiCpuPkg/LocalApicLib: fix feature test for Extended Topology CPUID leaf 2016-11-23 21:41:05 +01:00
CpuCommonFeaturesLib UefiCpuPkg/CpuFeatures: Change files format to DOS 2017-04-05 16:33:16 +08:00
CpuExceptionHandlerLib PeCoffGetEntryPointLib: Fix spelling issue 2017-04-26 08:58:18 +08:00
MpInitLib UefiCpuPkg/MpInitLib: Fix X64 XCODE5/NASM compatibility issues 2017-05-22 19:43:46 -07:00
MtrrLib UefiCpuPkg/MtrrLib: Don't report OutOfResource when MTRR is enough 2017-05-08 13:35:25 +08:00
PlatformSecLibNull UefiCpuPkg: Convert all .uni files to utf-8 2015-12-15 04:59:14 +00:00
RegisterCpuFeaturesLib UefiCpuPkg/CpuFeatures: Change files format to DOS 2017-04-05 16:33:16 +08:00
SecPeiDxeTimerLibUefiCpu UefiCpuPkg: Convert all .uni files to utf-8 2015-12-15 04:59:14 +00:00
SmmCpuFeaturesLib UefiCpuPkg/SmmCpuFeaturesLib: Correct print level 2017-05-11 16:32:54 +08:00
SmmCpuPlatformHookLibNull UefiCpuPkg: Convert all .uni files to utf-8 2015-12-15 04:59:14 +00:00