From 8234441688bbdc987d9514a785724270d2739b33 Mon Sep 17 00:00:00 2001 From: oliviermartin Date: Tue, 6 Dec 2011 16:32:11 +0000 Subject: [PATCH] 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 --- ArmPlatformPkg/Sec/Sec.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ArmPlatformPkg/Sec/Sec.c b/ArmPlatformPkg/Sec/Sec.c index f6b89648f9..b32f4ffb55 100644 --- a/ArmPlatformPkg/Sec/Sec.c +++ b/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 -- 2.39.2