mirror of https://github.com/acidanthera/audk.git
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
This commit is contained in:
parent
34ff8715bf
commit
46ba0f63e9
|
@ -21,6 +21,7 @@
|
||||||
#include <Library/BaseLib.h>
|
#include <Library/BaseLib.h>
|
||||||
#include <Library/HobLib.h>
|
#include <Library/HobLib.h>
|
||||||
#include <Library/PeimEntryPoint.h>
|
#include <Library/PeimEntryPoint.h>
|
||||||
|
#include <Library/UefiCpuLib.h>
|
||||||
|
|
||||||
#pragma pack(1)
|
#pragma pack(1)
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,7 @@
|
||||||
BaseLib
|
BaseLib
|
||||||
HobLib
|
HobLib
|
||||||
PeimEntryPoint
|
PeimEntryPoint
|
||||||
|
UefiCpuLib
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
.model flat
|
.model flat
|
||||||
|
|
||||||
include MpEqu.inc
|
include MpEqu.inc
|
||||||
|
InitializeFloatingPointUnits PROTO C
|
||||||
|
|
||||||
.code
|
.code
|
||||||
|
|
||||||
|
@ -124,6 +125,8 @@ CProcedureInvoke:
|
||||||
push ebp
|
push ebp
|
||||||
mov ebp, esp
|
mov ebp, esp
|
||||||
|
|
||||||
|
mov eax, InitializeFloatingPointUnits
|
||||||
|
call eax ; Call assembly function to initialize FPU per UEFI spec
|
||||||
|
|
||||||
push ebx ; Push NumApsExecuting
|
push ebx ; Push NumApsExecuting
|
||||||
mov eax, esi
|
mov eax, esi
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
|
|
||||||
%include "MpEqu.inc"
|
%include "MpEqu.inc"
|
||||||
|
extern ASM_PFX(InitializeFloatingPointUnits)
|
||||||
|
|
||||||
SECTION .text
|
SECTION .text
|
||||||
|
|
||||||
|
@ -114,6 +115,8 @@ CProcedureInvoke:
|
||||||
push ebp
|
push ebp
|
||||||
mov ebp, esp
|
mov ebp, esp
|
||||||
|
|
||||||
|
mov eax, ASM_PFX(InitializeFloatingPointUnits)
|
||||||
|
call eax ; Call assembly function to initialize FPU per UEFI spec
|
||||||
|
|
||||||
push ebx ; Push NumApsExecuting
|
push ebx ; Push NumApsExecuting
|
||||||
mov eax, esi
|
mov eax, esi
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
|
|
||||||
include MpEqu.inc
|
include MpEqu.inc
|
||||||
|
extern InitializeFloatingPointUnits:PROC
|
||||||
|
|
||||||
.code
|
.code
|
||||||
;-------------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------------
|
||||||
;RendezvousFunnelProc procedure follows. All APs execute their procedure. This
|
;RendezvousFunnelProc procedure follows. All APs execute their procedure. This
|
||||||
|
@ -158,6 +160,10 @@ CProcedureInvoke:
|
||||||
push rbp
|
push rbp
|
||||||
mov rbp, rsp
|
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 edx, ebx ; edx is NumApsExecuting
|
||||||
mov ecx, esi
|
mov ecx, esi
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
|
|
||||||
%include "MpEqu.inc"
|
%include "MpEqu.inc"
|
||||||
|
extern ASM_PFX(InitializeFloatingPointUnits)
|
||||||
|
|
||||||
DEFAULT REL
|
DEFAULT REL
|
||||||
|
|
||||||
|
@ -155,6 +156,10 @@ CProcedureInvoke:
|
||||||
push rbp
|
push rbp
|
||||||
mov rbp, rsp
|
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 edx, ebx ; edx is NumApsExecuting
|
||||||
mov ecx, esi
|
mov ecx, esi
|
||||||
|
|
Loading…
Reference in New Issue