[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 1/1] target/riscv: enable floating point unit
From: |
Heinrich Schuchardt |
Subject: |
[PATCH 1/1] target/riscv: enable floating point unit |
Date: |
Mon, 16 Sep 2024 20:16:33 +0200 |
OpenSBI enables the floating point in mstatus. For consistency QEMU/KVM
should do the same.
Without this patch EDK II with TLS enabled crashes when hitting the first
floating point instruction while running QEMU with --accel kvm and runs
fine with --accel tcg.
Additionally to this patch EDK II should be changed to make no assumptions
about the state of the floating point unit.
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---
target/riscv/cpu.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
index 4bda754b01..c32e2721d4 100644
--- a/target/riscv/cpu.c
+++ b/target/riscv/cpu.c
@@ -923,6 +923,13 @@ static void riscv_cpu_reset_hold(Object *obj, ResetType
type)
if (mcc->parent_phases.hold) {
mcc->parent_phases.hold(obj, type);
}
+ if (riscv_has_ext(env, RVF) || riscv_has_ext(env, RVD)) {
+ env->mstatus = set_field(env->mstatus, MSTATUS_FS, env->misa_mxl);
+ for (int regnr = 0; regnr < 32; ++regnr) {
+ env->fpr[regnr] = 0;
+ }
+ riscv_csrrw(env, CSR_FCSR, NULL, 0, -1);
+ }
#ifndef CONFIG_USER_ONLY
env->misa_mxl = mcc->misa_mxl_max;
env->priv = PRV_M;
--
2.45.2
- [PATCH 1/1] target/riscv: enable floating point unit,
Heinrich Schuchardt <=
- Re: [PATCH 1/1] target/riscv: enable floating point unit, Andrew Jones, 2024/09/17
- Re: [PATCH 1/1] target/riscv: enable floating point unit, Heinrich Schuchardt, 2024/09/17
- Re: [PATCH 1/1] target/riscv: enable floating point unit, Andrew Jones, 2024/09/17
- Re: [PATCH 1/1] target/riscv: enable floating point unit, Heinrich Schuchardt, 2024/09/17
- Re: [PATCH 1/1] target/riscv: enable floating point unit, Andrew Jones, 2024/09/18
- Re: [PATCH 1/1] target/riscv: enable floating point unit, Peter Maydell, 2024/09/18
- Re: [PATCH 1/1] target/riscv: enable floating point unit, Heinrich Schuchardt, 2024/09/18
- Re: [PATCH 1/1] target/riscv: enable floating point unit, Peter Maydell, 2024/09/18
- Re: [PATCH 1/1] target/riscv: enable floating point unit, Heinrich Schuchardt, 2024/09/18
- Re: [PATCH 1/1] target/riscv: enable floating point unit, Andrew Jones, 2024/09/18