diff options
author | Alistair Francis <alistair.francis@wdc.com> | 2020-01-31 17:02:44 -0800 |
---|---|---|
committer | Palmer Dabbelt <palmerdabbelt@google.com> | 2020-02-27 13:45:47 -0800 |
commit | 29409c1d921d607873268671bf11a088efb5558e (patch) | |
tree | ca19b70bdab0008d549da3e0bdc486967d3e1c10 /target/riscv | |
parent | e28eaed87902c5e852c3ed043b27204e879aa4e2 (diff) | |
download | qemu-29409c1d921d607873268671bf11a088efb5558e.zip qemu-29409c1d921d607873268671bf11a088efb5558e.tar.gz qemu-29409c1d921d607873268671bf11a088efb5558e.tar.bz2 |
target/riscv: Disable guest FP support based on virtual status
When the Hypervisor extension is in use we only enable floating point
support when both status and vsstatus have enabled floating point
support.
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Palmer Dabbelt <palmerdabbelt@google.com>
Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
Diffstat (limited to 'target/riscv')
-rw-r--r-- | target/riscv/cpu_helper.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 895b6ca..d9a29d7 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -99,6 +99,9 @@ bool riscv_cpu_exec_interrupt(CPUState *cs, int interrupt_request) bool riscv_cpu_fp_enabled(CPURISCVState *env) { if (env->mstatus & MSTATUS_FS) { + if (riscv_cpu_virt_enabled(env) && !(env->mstatus_hs & MSTATUS_FS)) { + return false; + } return true; } |