@@ -736,6 +736,7 @@ bool misa_csr_t::unlogged_write(const reg_t val) noexcept {
736736 const bool prev_h = old_misa & (1L << (' H' - ' A' ));
737737 const reg_t new_misa = (adjusted_val & write_mask) | (old_misa & ~write_mask);
738738 const bool new_h = new_misa & (1L << (' H' - ' A' ));
739+ const bool new_v = proc->get_isa ().has_any_vector ();
739740
740741 proc->set_extension_enable (EXT_ZCA, (new_misa & (1L << (' C' - ' A' ))) || !proc->get_isa ().extension_enabled (' C' ));
741742 proc->set_extension_enable (EXT_ZCF, (new_misa & (1L << (' F' - ' A' ))) && proc->extension_enabled (EXT_ZCA) && proc->get_xlen () == 32 );
@@ -745,8 +746,8 @@ bool misa_csr_t::unlogged_write(const reg_t val) noexcept {
745746 proc->set_extension_enable (EXT_ZCMT, proc->extension_enabled (EXT_ZCA));
746747 proc->set_extension_enable (EXT_ZFH, new_misa & (1L << (' F' - ' A' )));
747748 proc->set_extension_enable (EXT_ZFHMIN, new_misa & (1L << (' F' - ' A' )));
748- proc->set_extension_enable (EXT_ZVFH, (new_misa & ( 1L << ( ' V ' - ' A ' )) ) && proc->extension_enabled (EXT_ZFHMIN));
749- proc->set_extension_enable (EXT_ZVFHMIN, new_misa & ( 1L << ( ' V ' - ' A ' ) ));
749+ proc->set_extension_enable (EXT_ZVFH, new_v && proc-> get_isa (). get_zvf ( ) && proc->extension_enabled (EXT_ZFHMIN));
750+ proc->set_extension_enable (EXT_ZVFHMIN, new_v && proc-> get_isa (). get_zvf ( ));
750751 proc->set_extension_enable (EXT_ZAAMO, (new_misa & (1L << (' A' - ' A' ))) || !proc->get_isa ().extension_enabled (' A' ));
751752 proc->set_extension_enable (EXT_ZALRSC, (new_misa & (1L << (' A' - ' A' ))) || !proc->get_isa ().extension_enabled (' A' ));
752753 proc->set_extension_enable (EXT_ZBA, (new_misa & (1L << (' B' - ' A' ))) || !proc->get_isa ().extension_enabled (' B' ));
0 commit comments