diff options
-rw-r--r-- | ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.S | 11 | ||||
-rw-r--r-- | ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.asm | 11 |
2 files changed, 14 insertions, 8 deletions
diff --git a/ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.S b/ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.S index b11c19dc59..62b8682de5 100644 --- a/ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.S +++ b/ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.S @@ -316,12 +316,15 @@ ASM_PFX(ArmWriteCPACR): bx lr ASM_PFX(ArmEnableVFP): - # Enable VFP registers + # Read CPACR (Coprocessor Access Control Register) mrc p15, 0, r0, c1, c0, 2 - orr r0, r0, #0x00f00000 @ Enable VPF access (V* instructions) + # Enable VPF access (Full Access to CP10, CP11) (V* instructions) + orr r0, r0, #0x00f00000 + # Write back CPACR (Coprocessor Access Control Register) mcr p15, 0, r0, c1, c0, 2 - mov r0, #0x40000000 @ Set EN bit in FPEXC - mcr p10,#0x7,r0,c8,c0,#0 @ msr FPEXC,r0 in ARM assembly + # Set EN bit in FPEXC. The Advanced SIMD and VFP extensions are enabled and operate normally. + mov r0, #0x40000000 + mcr p10,#0x7,r0,c8,c0,#0 bx lr ASM_PFX(ArmCallWFI): diff --git a/ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.asm b/ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.asm index 75399cb0fc..269e10bd56 100644 --- a/ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.asm +++ b/ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.asm @@ -314,12 +314,15 @@ ArmWriteCPACR bx lr ArmEnableVFP - // Enable VFP registers + // Read CPACR (Coprocessor Access Control Register) mrc p15, 0, r0, c1, c0, 2 - orr r0, r0, #0x00f00000 // Enable VPF access (V* instructions) + // Enable VPF access (Full Access to CP10, CP11) (V* instructions) + orr r0, r0, #0x00f00000 + // Write back CPACR (Coprocessor Access Control Register) mcr p15, 0, r0, c1, c0, 2 - mov r0, #0x40000000 // Set EN bit in FPEXC - mcr p10,#0x7,r0,c8,c0,#0 // msr FPEXC,r0 in ARM assembly + // Set EN bit in FPEXC. The Advanced SIMD and VFP extensions are enabled and operate normally. + mov r0, #0x40000000 + mcr p10,#0x7,r0,c8,c0,#0 bx lr ArmCallWFI |