aboutsummaryrefslogtreecommitdiff
path: root/riscv/processor.cc
diff options
context:
space:
mode:
Diffstat (limited to 'riscv/processor.cc')
-rw-r--r--riscv/processor.cc9
1 files changed, 7 insertions, 2 deletions
diff --git a/riscv/processor.cc b/riscv/processor.cc
index a926021..383fd3f 100644
--- a/riscv/processor.cc
+++ b/riscv/processor.cc
@@ -856,10 +856,15 @@ reg_t processor_t::get_csr(int which)
break;
return state.frm;
case CSR_FCSR:
- require_fp;
+ {require_fp;
if (!supports_extension('F'))
break;
- return (state.fflags << FSR_AEXC_SHIFT) | (state.frm << FSR_RD_SHIFT);
+ uint32_t shared_flags = 0;
+ if (supports_extension('V'))
+ shared_flags = (VU.vxrm << FSR_VXRM_SHIFT) | (VU.vxsat << FSR_VXSAT_SHIFT);
+ return (state.fflags << FSR_AEXC_SHIFT) | (state.frm << FSR_RD_SHIFT) |
+ shared_flags;
+ }
case CSR_INSTRET:
case CSR_CYCLE:
if (ctr_ok)