audk/UefiCpuPkg
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
..
Application/Cpuid UefiCpuPkg/Cpuid.h: Update CPUID definitions with SDM (Sep.2016) 2016-12-16 11:48:21 +08:00
CpuDxe UefiCpuPkg: Move ProgramVirtualWireMode() to MpInitLib 2017-04-26 08:55:45 +08:00
CpuFeatures UefiCpuPkg/CpuFeatures: Change files format to DOS 2017-04-05 16:33:16 +08:00
CpuIo2Dxe UefiCpuPkg: Refine casting expression result to bigger size 2017-03-06 14:33:26 +08:00
CpuIo2Smm UefiCpuPkg: Refine casting expression result to bigger size 2017-03-06 14:33:26 +08:00
CpuIoPei UefiCpuPkg: Modify CpuIoPei to support new IoLib library 2017-01-17 10:10:32 +08:00
CpuMpPei UefiCpuPkg/CpuMpPei: Build GUIDed-HOB to store all CPU BIST Data 2016-09-14 08:54:36 +08:00
CpuS3DataDxe UefiCpuPkg/CpuS3DataDxe: Consume the existing PcdCpuS3DataAddress 2017-03-22 10:11:25 +08:00
Feature/Capsule UefiCpuPkg/MicrocodeUpdate: Add MP support. 2016-12-28 15:09:02 +08:00
Include UefiCpuPkg/CpuFeatures: Change CPU features name to follow IA32 SDM 2017-04-07 12:55:21 +08:00
Library UefiCpuPkg/MpInitLib: Fix X64 XCODE5/NASM compatibility issues 2017-05-22 19:43:46 -07:00
PiSmmCommunication UefiCpuPkg: Convert all .uni files to utf-8 2015-12-15 04:59:14 +00:00
PiSmmCpuDxeSmm UefiCpuPkg/PiSmmCpuDxeSmm: Add missing JMP instruction 2017-05-19 13:59:27 -07:00
ResetVector UefiCpuPkg: Convert all .uni files to utf-8 2015-12-15 04:59:14 +00:00
SecCore UefiCpuPkg: Make the comments align with the functions 2016-12-14 21:34:42 +08:00
Universal/Acpi/S3Resume2Pei UefiCpuPkg: Error Level is not used correctly 2017-04-12 08:57:06 +08:00
Contributions.txt */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
License.txt Update copyright format 2012-04-24 06:49:39 +00:00
UefiCpuPkg.dec UefiCpuPkg: Update package version to 0.80 2017-05-08 13:23:14 +08:00
UefiCpuPkg.dsc UefiCpuPkg: Update package version to 0.80 2017-05-08 13:31:00 +08:00
UefiCpuPkg.uni UefiCpuPkg: Add new PCDs PROMPT/HELP string in UNI file 2017-03-28 09:00:15 +08:00
UefiCpuPkgExtra.uni UefiCpuPkg: Convert all .uni files to utf-8 2015-12-15 04:59:14 +00:00