summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2011-12-06 16:32:11 +0000
committeroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2011-12-06 16:32:11 +0000
commita1965bd4079af2f9a512ab2d923278ebb8a75aca (patch)
tree06ccfd5671bbe1ad15efcf30236cc2b04f5f9200
parent25aedad2e6089c345a018ab09c4fb3e885931b85 (diff)
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@12823 6f19259b-4bc3-4df7-8a09-765794883524
-rw-r--r--edk2/ArmPlatformPkg/Sec/Sec.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/edk2/ArmPlatformPkg/Sec/Sec.c b/edk2/ArmPlatformPkg/Sec/Sec.c
index f6b89648f..b32f4ffb5 100644
--- a/edk2/ArmPlatformPkg/Sec/Sec.c
+++ b/edk2/ArmPlatformPkg/Sec/Sec.c
@@ -47,6 +47,11 @@ CEntryPoint (
// CPU specific settings
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
if (IS_PRIMARY_CORE(MpId)) {
if (ArmIsMpCore()) {
@@ -82,10 +87,6 @@ CEntryPoint (
// Enable Full Access to CoProcessors
ArmWriteCPACR (CPACR_CP_FULL_ACCESS);
- if (FixedPcdGet32 (PcdVFPEnabled)) {
- ArmEnableVFP();
- }
-
if (IS_PRIMARY_CORE(MpId)) {
// Initialize peripherals that must be done at the early stage
// Example: Some L2x0 controllers must be initialized in Secure World