summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlistair Francis2020-02-01 02:02:44 +0100
committerPalmer Dabbelt2020-02-27 22:45:47 +0100
commit29409c1d921d607873268671bf11a088efb5558e (patch)
treeca19b70bdab0008d549da3e0bdc486967d3e1c10
parenttarget/riscv: Only set TB flags with FP status if enabled (diff)
downloadqemu-29409c1d921d607873268671bf11a088efb5558e.tar.gz
qemu-29409c1d921d607873268671bf11a088efb5558e.tar.xz
qemu-29409c1d921d607873268671bf11a088efb5558e.zip
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>
-rw-r--r--target/riscv/cpu_helper.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c
index 895b6ca25d..d9a29d702a 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;
}