@@ -17,7 +17,7 @@ build-aarch64:
build-arm:
script:
- - dnf install -y qemu-system-arm gcc-arm-linux-gnu-8.2.1-1.fc30.2
+ - dnf install -y qemu-system-arm gcc-arm-linux-gnu
- ./configure --arch=arm --cross-prefix=arm-linux-gnu-
- make -j2
- ACCEL=tcg ./run_tests.sh
@@ -5,7 +5,7 @@
#
bits = 32
ldarch = elf32-littlearm
-machine = -marm
+machine = -marm -mfpu=vfp
# stack.o relies on frame pointers.
KEEP_FRAME_POINTER := y
@@ -50,10 +50,11 @@ start:
mov r0, r2
push {r0-r1}
- /* set up vector table and mode stacks */
+ /* set up vector table, mode stacks, and enable the VFP */
mov r0, lr @ lr is stack top (see above),
@ which is the exception stacks base
bl exceptions_init
+ bl enable_vfp
/* complete setup */
pop {r0-r1}
@@ -100,6 +101,16 @@ exceptions_init:
isb
mov pc, lr
+enable_vfp:
+ /* Enable full access to CP10 and CP11: */
+ mov r0, #(3 << 22 | 3 << 20)
+ mcr p15, 0, r0, c1, c0, 2
+ isb
+ /* Set the FPEXC.EN bit to enable Advanced SIMD and VFP: */
+ mov r0, #(1 << 30)
+ vmsr fpexc, r0
+ mov pc, lr
+
.text
.global get_mmu_off
@@ -130,6 +141,7 @@ secondary_entry:
ldr r0, [r1]
mov sp, r0
bl exceptions_init
+ bl enable_vfp
/* finish init in C code */
bl secondary_cinit