mirror of https://github.com/acidanthera/audk.git
BaseUefiCpuLib: Preserve EBX register in InitializeFloatingPointUnits
The EBX register should be preserved for the IA32 C calling convention. The use of the CPUID instruction was modifying the EBX register, so we push and pop EBX. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9573 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
0913fadc1a
commit
d6d8e8925f
|
@ -35,6 +35,9 @@ ASM_PFX(mMmxControlWord): .long 0x01F80
|
||||||
#
|
#
|
||||||
ASM_GLOBAL ASM_PFX(InitializeFloatingPointUnits)
|
ASM_GLOBAL ASM_PFX(InitializeFloatingPointUnits)
|
||||||
ASM_PFX(InitializeFloatingPointUnits):
|
ASM_PFX(InitializeFloatingPointUnits):
|
||||||
|
|
||||||
|
pushl %ebx
|
||||||
|
|
||||||
#
|
#
|
||||||
# Initialize floating point units
|
# Initialize floating point units
|
||||||
#
|
#
|
||||||
|
@ -64,6 +67,8 @@ ASM_PFX(InitializeFloatingPointUnits):
|
||||||
ldmxcsr ASM_PFX(mMmxControlWord)
|
ldmxcsr ASM_PFX(mMmxControlWord)
|
||||||
|
|
||||||
Done:
|
Done:
|
||||||
|
popl %ebx
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
#END
|
#END
|
||||||
|
|
|
@ -39,6 +39,9 @@ mMmxControlWord DD 01F80h
|
||||||
; for masked underflow).
|
; for masked underflow).
|
||||||
;
|
;
|
||||||
InitializeFloatingPointUnits PROC PUBLIC
|
InitializeFloatingPointUnits PROC PUBLIC
|
||||||
|
|
||||||
|
push ebx
|
||||||
|
|
||||||
;
|
;
|
||||||
; Initialize floating point units
|
; Initialize floating point units
|
||||||
;
|
;
|
||||||
|
@ -67,6 +70,7 @@ InitializeFloatingPointUnits PROC PUBLIC
|
||||||
;
|
;
|
||||||
ldmxcsr mMmxControlWord
|
ldmxcsr mMmxControlWord
|
||||||
Done:
|
Done:
|
||||||
|
pop ebx
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue