mirror of https://github.com/acidanthera/audk.git
ArmPlatformPkg/Sec: Enabled VFP (if supported by platform) prior to any library invocation
Some compilers uses VFP for some 64bit operation. If the VFP coprocessor is not enabled at this stage the processor raises an undefined exception. To prevent this case, the VFP enabling has been moved at the beginning of the platform initialization phase. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12823 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
a62da87e95
commit
8234441688
|
@ -47,6 +47,11 @@ CEntryPoint (
|
||||||
// CPU specific settings
|
// CPU specific settings
|
||||||
ArmCpuSetup (MpId);
|
ArmCpuSetup (MpId);
|
||||||
|
|
||||||
|
// Enable Floating Point Coprocessor if supported by the platform
|
||||||
|
if (FixedPcdGet32 (PcdVFPEnabled)) {
|
||||||
|
ArmEnableVFP();
|
||||||
|
}
|
||||||
|
|
||||||
// Primary CPU clears out the SCU tag RAMs, secondaries wait
|
// Primary CPU clears out the SCU tag RAMs, secondaries wait
|
||||||
if (IS_PRIMARY_CORE(MpId)) {
|
if (IS_PRIMARY_CORE(MpId)) {
|
||||||
if (ArmIsMpCore()) {
|
if (ArmIsMpCore()) {
|
||||||
|
@ -82,10 +87,6 @@ CEntryPoint (
|
||||||
// Enable Full Access to CoProcessors
|
// Enable Full Access to CoProcessors
|
||||||
ArmWriteCPACR (CPACR_CP_FULL_ACCESS);
|
ArmWriteCPACR (CPACR_CP_FULL_ACCESS);
|
||||||
|
|
||||||
if (FixedPcdGet32 (PcdVFPEnabled)) {
|
|
||||||
ArmEnableVFP();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_PRIMARY_CORE(MpId)) {
|
if (IS_PRIMARY_CORE(MpId)) {
|
||||||
// Initialize peripherals that must be done at the early stage
|
// Initialize peripherals that must be done at the early stage
|
||||||
// Example: Some L2x0 controllers must be initialized in Secure World
|
// Example: Some L2x0 controllers must be initialized in Secure World
|
||||||
|
|
Loading…
Reference in New Issue