summaryrefslogtreecommitdiff
path: root/ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.S
diff options
context:
space:
mode:
Diffstat (limited to 'ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.S')
-rw-r--r--ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.S11
1 files changed, 7 insertions, 4 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):