Invoke InitializeFloatingPointUnits() to initialize FPU per UEFI specification before call C function in assembly code.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jeff Fan <jeff....@intel.com> CC: Feng Tian <feng.t...@intel.com> CC: Jiewen Yao <jiewen....@intel.com> CC: Michael Kinney <michael.d.kin...@intel.com> --- UefiCpuPkg/CpuMpPei/CpuMpPei.h | 1 + UefiCpuPkg/CpuMpPei/CpuMpPei.inf | 1 + UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.asm | 3 +++ UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.nasm | 3 +++ UefiCpuPkg/CpuMpPei/X64/MpFuncs.asm | 6 ++++++ UefiCpuPkg/CpuMpPei/X64/MpFuncs.nasm | 5 +++++ 6 files changed, 19 insertions(+) diff --git a/UefiCpuPkg/CpuMpPei/CpuMpPei.h b/UefiCpuPkg/CpuMpPei/CpuMpPei.h index 3f4fa92..146422c 100644 --- a/UefiCpuPkg/CpuMpPei/CpuMpPei.h +++ b/UefiCpuPkg/CpuMpPei/CpuMpPei.h @@ -21,6 +21,7 @@ #include <Library/BaseLib.h> #include <Library/HobLib.h> #include <Library/PeimEntryPoint.h> +#include <Library/UefiCpuLib.h> #pragma pack(1) diff --git a/UefiCpuPkg/CpuMpPei/CpuMpPei.inf b/UefiCpuPkg/CpuMpPei/CpuMpPei.inf index 7cf33d3..9fb9e94 100644 --- a/UefiCpuPkg/CpuMpPei/CpuMpPei.inf +++ b/UefiCpuPkg/CpuMpPei/CpuMpPei.inf @@ -51,6 +51,7 @@ BaseLib HobLib PeimEntryPoint + UefiCpuLib diff --git a/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.asm b/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.asm index c8bdc52..4dc7191 100644 --- a/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.asm +++ b/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.asm @@ -22,6 +22,7 @@ .model flat include MpEqu.inc +InitializeFloatingPointUnits PROTO C .code @@ -124,6 +125,8 @@ CProcedureInvoke: push ebp mov ebp, esp + mov eax, InitializeFloatingPointUnits + call eax ; Call assembly function to initialize FPU per UEFI spec push ebx ; Push NumApsExecuting mov eax, esi diff --git a/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.nasm b/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.nasm index 379f13e..4a1aa71 100644 --- a/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.nasm +++ b/UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.nasm @@ -19,6 +19,7 @@ ;------------------------------------------------------------------------------- %include "MpEqu.inc" +extern ASM_PFX(InitializeFloatingPointUnits) SECTION .text @@ -114,6 +115,8 @@ CProcedureInvoke: push ebp mov ebp, esp + mov eax, ASM_PFX(InitializeFloatingPointUnits) + call eax ; Call assembly function to initialize FPU per UEFI spec push ebx ; Push NumApsExecuting mov eax, esi diff --git a/UefiCpuPkg/CpuMpPei/X64/MpFuncs.asm b/UefiCpuPkg/CpuMpPei/X64/MpFuncs.asm index 5425547..425bc20 100644 --- a/UefiCpuPkg/CpuMpPei/X64/MpFuncs.asm +++ b/UefiCpuPkg/CpuMpPei/X64/MpFuncs.asm @@ -19,6 +19,8 @@ ;------------------------------------------------------------------------------- include MpEqu.inc +extern InitializeFloatingPointUnits:PROC + .code ;------------------------------------------------------------------------------------- ;RendezvousFunnelProc procedure follows. All APs execute their procedure. This @@ -158,6 +160,10 @@ CProcedureInvoke: push rbp mov rbp, rsp + mov rax, InitializeFloatingPointUnits + sub rsp, 20h + call rax ; Call assembly function to initialize FPU per UEFI spec + add rsp, 20h mov edx, ebx ; edx is NumApsExecuting mov ecx, esi diff --git a/UefiCpuPkg/CpuMpPei/X64/MpFuncs.nasm b/UefiCpuPkg/CpuMpPei/X64/MpFuncs.nasm index 99669ce..3ddf26c 100644 --- a/UefiCpuPkg/CpuMpPei/X64/MpFuncs.nasm +++ b/UefiCpuPkg/CpuMpPei/X64/MpFuncs.nasm @@ -19,6 +19,7 @@ ;------------------------------------------------------------------------------- %include "MpEqu.inc" +extern ASM_PFX(InitializeFloatingPointUnits) DEFAULT REL @@ -155,6 +156,10 @@ CProcedureInvoke: push rbp mov rbp, rsp + mov rax, ASM_PFX(InitializeFloatingPointUnits) + sub rsp, 20h + call rax ; Call assembly function to initialize FPU per UEFI spec + add rsp, 20h mov edx, ebx ; edx is NumApsExecuting mov ecx, esi -- 1.9.5.msysgit.0 ------------------------------------------------------------------------------ Don't Limit Your Business. Reach for the Cloud. GigeNET's Cloud Solutions provide you with the tools and support that you need to offload your IT needs and focus on growing your business. Configured For All Businesses. Start Your Cloud Today. https://www.gigenetcloud.com/ _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel