From: Andrew Jones <drjones@redhat.com>
To: kvm@vger.kernel.org, pbonzini@redhat.com
Cc: Thomas Huth <thuth@redhat.com>
Subject: [PULL kvm-unit-tests 02/17] arm: Enable the VFP
Date: Mon, 6 Jan 2020 11:03:32 +0100 [thread overview]
Message-ID: <20200106100347.1559-3-drjones@redhat.com> (raw)
In-Reply-To: <20200106100347.1559-1-drjones@redhat.com>
Variable argument macros frequently depend on floating point
registers. Indeed we needed to enable the VFP for arm64 since its
introduction in order to use printf and the like. Somehow we
didn't need to do that for arm32 until recently when compiling
with GCC 9.
Tested-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Andrew Jones <drjones@redhat.com>
---
.gitlab-ci.yml | 2 +-
arm/Makefile.arm | 2 +-
arm/cstart.S | 14 +++++++++++++-
3 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index fbf3328a19ea..a9dc16a2d6fd 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -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
diff --git a/arm/Makefile.arm b/arm/Makefile.arm
index 43b4be1e05ee..d379a2800749 100644
--- a/arm/Makefile.arm
+++ b/arm/Makefile.arm
@@ -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
diff --git a/arm/cstart.S b/arm/cstart.S
index 114726feab82..bc6219d8a3ee 100644
--- a/arm/cstart.S
+++ b/arm/cstart.S
@@ -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
--
2.21.0
next prev parent reply other threads:[~2020-01-06 10:03 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-06 10:03 [PULL kvm-unit-tests 00/17] arm/arm64: fixes and updates Andrew Jones
2020-01-06 10:03 ` [PULL kvm-unit-tests 01/17] arm: Add missing test name prefix for pl031 and spinlock Andrew Jones
2020-01-06 10:03 ` Andrew Jones [this message]
2020-01-06 10:03 ` [PULL kvm-unit-tests 03/17] arm/arm64: PL031: Fix check_rtc_irq Andrew Jones
2020-01-06 10:03 ` [PULL kvm-unit-tests 04/17] devicetree: Fix the dt_for_each_cpu_node Andrew Jones
2020-01-06 10:03 ` [PULL kvm-unit-tests 05/17] lib: arm/arm64: Remove unnecessary dcache maintenance operations Andrew Jones
2020-01-06 10:03 ` [PULL kvm-unit-tests 06/17] lib: arm: Add proper data synchronization barriers for TLBIs Andrew Jones
2020-01-06 10:03 ` [PULL kvm-unit-tests 07/17] lib: Add WRITE_ONCE and READ_ONCE implementations in compiler.h Andrew Jones
2020-01-06 10:03 ` [PULL kvm-unit-tests 08/17] lib: arm/arm64: Use WRITE_ONCE to update the translation tables Andrew Jones
2020-01-06 10:03 ` [PULL kvm-unit-tests 09/17] lib: arm/arm64: Remove unused CPU_OFF parameter Andrew Jones
2020-01-06 10:03 ` [PULL kvm-unit-tests 10/17] lib: arm/arm64: Add missing include for alloc_page.h in pgtable.h Andrew Jones
2020-01-06 10:03 ` [PULL kvm-unit-tests 11/17] lib: arm: Implement flush_tlb_all Andrew Jones
2020-01-06 10:03 ` [PULL kvm-unit-tests 12/17] lib: arm/arm64: Teach mmu_clear_user about block mappings Andrew Jones
2020-01-06 10:03 ` [PULL kvm-unit-tests 13/17] arm64: timer: Write to ICENABLER to disable timer IRQ Andrew Jones
2020-01-06 10:03 ` [PULL kvm-unit-tests 14/17] lib: arm/arm64: Refuse to disable the MMU with non-identity stack pointer Andrew Jones
2020-01-06 10:03 ` [PULL kvm-unit-tests 15/17] arm: cstart64.S: Downgrade TLBI to non-shareable in asm_mmu_enable Andrew Jones
2020-01-06 10:03 ` [PULL kvm-unit-tests 16/17] arm/arm64: Invalidate TLB before enabling MMU Andrew Jones
2020-01-06 10:03 ` [PULL kvm-unit-tests 17/17] arm: cstart64.S: Remove icache invalidation from asm_mmu_enable Andrew Jones
2020-01-08 18:04 ` [PULL kvm-unit-tests 00/17] arm/arm64: fixes and updates Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200106100347.1559-3-drjones@redhat.com \
--to=drjones@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.