summaryrefslogtreecommitdiff
path: root/UefiCpuPkg
diff options
context:
space:
mode:
authorJeff Fan <jeff.fan@intel.com>2015-07-15 03:36:51 +0000
committervanjeff <vanjeff@Edk2>2015-07-15 03:36:51 +0000
commit46ba0f63e9adaa2147366fcbd68c1c6f672b647b (patch)
tree2db42260e7b46ef0ac4a2a93ce9d3e0dab865d7c /UefiCpuPkg
parent34ff8715bf7724c52b878ddf55f494ccb0a35da6 (diff)
downloadedk2-platforms-46ba0f63e9adaa2147366fcbd68c1c6f672b647b.tar.xz
UefiCpuPkg/CpuMpPei: Initialize FPU per UEFI specification
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.fan@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17993 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'UefiCpuPkg')
-rw-r--r--UefiCpuPkg/CpuMpPei/CpuMpPei.h1
-rw-r--r--UefiCpuPkg/CpuMpPei/CpuMpPei.inf1
-rw-r--r--UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.asm3
-rw-r--r--UefiCpuPkg/CpuMpPei/Ia32/MpFuncs.nasm3
-rw-r--r--UefiCpuPkg/CpuMpPei/X64/MpFuncs.asm6
-rw-r--r--UefiCpuPkg/CpuMpPei/X64/MpFuncs.nasm5
6 files changed, 19 insertions, 0 deletions
diff --git a/UefiCpuPkg/CpuMpPei/CpuMpPei.h b/UefiCpuPkg/CpuMpPei/CpuMpPei.h
index 3f4fa92fc1..146422c2b5 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 7cf33d3249..9fb9e945a8 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 c8bdc52e95..4dc7191b80 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 379f13e6db..4a1aa71b8d 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 5425547634..425bc202fd 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 99669ce95e..3ddf26c29d 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