diff --git a/model/riscv_sys_regs.sail b/model/riscv_sys_regs.sail
index 47744698d..cb4466477 100644
--- a/model/riscv_sys_regs.sail
+++ b/model/riscv_sys_regs.sail
@@ -164,10 +164,10 @@ function legalize_misa(m : Misa, v : xlenbits) -> Misa = {
   else {
     /* Suppress enabling C if C was disabled at boot (i.e. not supported) */
     let m = if not(sys_enable_rvc()) then m else update_C(m, v.C());
-    /* Handle updates for F/D. */
-    if   not(sys_enable_fdext()) | (v.D() == 0b1 & v.F() == 0b0)
+    /* Suppress updates to misa.{f,d} if disabled at boot */
+    if   not(sys_enable_fdext())
     then m
-    else update_D(update_F(m, v.F()), v.D())
+    else update_D(update_F(m, v.F()), v.D() & v.F())
   }
 }