armv7: enabling VFP
authorAdam Turowski <adam.turowski@inf.ethz.ch>
Wed, 21 Jun 2017 14:48:20 +0000 (16:48 +0200)
committerAdam Turowski <adam.turowski@inf.ethz.ch>
Wed, 21 Jun 2017 14:48:20 +0000 (16:48 +0200)
Signed-off-by: Adam Turowski <adam.turowski@inf.ethz.ch>

kernel/arch/armv7/init.c

index 0e8bab5..dbb5031 100644 (file)
@@ -280,6 +280,14 @@ arch_init(struct arm_core_data *boot_core_data,
     /* disable counter overflow interrupts (just in case) */
     __asm volatile ("mcr p15, 0, %0, C9, C14, 2\n\t" :: "r"(0x8000000f));
 
+    MSG("Enabling VFP\n");
+    // full access to cp10 and cp11
+    __asm volatile ("ldr r0, =(0xf << 20)\n"
+                    "mcr p15, 0, r0, c1, c0, 2\n");
+    // enable floating-point extensions
+    __asm volatile ("mov r3, #0x40000000\n"
+                    "vmsr fpexc, r3\n");
+
     MSG("Setting coreboot spawn handler\n");
     coreboot_set_spawn_handler(CPU_ARM7, platform_boot_aps);