@@ -381,39 +381,43 @@ void state_t::reset(processor_t* const proc, reg_t max_isa)
381381 csrmap[CSR_MVENDORID] = std::make_shared<const_csr_t >(proc, CSR_MVENDORID, 0 );
382382 csrmap[CSR_MHARTID] = std::make_shared<const_csr_t >(proc, CSR_MHARTID, proc->get_id ());
383383 csrmap[CSR_MCONFIGPTR] = std::make_shared<const_csr_t >(proc, CSR_MCONFIGPTR, 0 );
384+ const reg_t menvcfg_mask = (proc->extension_enabled (EXT_ZICBOM) ? MENVCFG_CBCFE | MENVCFG_CBIE : 0 ) |
385+ (proc->extension_enabled (EXT_ZICBOZ) ? MENVCFG_CBZE : 0 ) |
386+ (proc->extension_enabled (EXT_SMNPM) ? MENVCFG_PMM : 0 ) |
387+ (proc->extension_enabled (EXT_SVADU) ? MENVCFG_ADUE: 0 ) |
388+ (proc->extension_enabled (EXT_SVPBMT) ? MENVCFG_PBMTE : 0 ) |
389+ (proc->extension_enabled (EXT_SSTC) ? MENVCFG_STCE : 0 ) |
390+ (proc->extension_enabled (EXT_ZICFILP) ? MENVCFG_LPE : 0 ) |
391+ (proc->extension_enabled (EXT_ZICFISS) ? MENVCFG_SSE : 0 ) |
392+ (proc->extension_enabled (EXT_SSDBLTRP) ? MENVCFG_DTE : 0 );
393+ menvcfg = std::make_shared<envcfg_csr_t >(proc, CSR_MENVCFG, menvcfg_mask, 0 );
384394 if (proc->extension_enabled_const (' U' )) {
385- const reg_t menvcfg_mask = (proc->extension_enabled (EXT_ZICBOM) ? MENVCFG_CBCFE | MENVCFG_CBIE : 0 ) |
386- (proc->extension_enabled (EXT_ZICBOZ) ? MENVCFG_CBZE : 0 ) |
387- (proc->extension_enabled (EXT_SMNPM) ? MENVCFG_PMM : 0 ) |
388- (proc->extension_enabled (EXT_SVADU) ? MENVCFG_ADUE: 0 ) |
389- (proc->extension_enabled (EXT_SVPBMT) ? MENVCFG_PBMTE : 0 ) |
390- (proc->extension_enabled (EXT_SSTC) ? MENVCFG_STCE : 0 ) |
391- (proc->extension_enabled (EXT_ZICFILP) ? MENVCFG_LPE : 0 ) |
392- (proc->extension_enabled (EXT_ZICFISS) ? MENVCFG_SSE : 0 ) |
393- (proc->extension_enabled (EXT_SSDBLTRP) ? MENVCFG_DTE : 0 );
394- menvcfg = std::make_shared<envcfg_csr_t >(proc, CSR_MENVCFG, menvcfg_mask, 0 );
395395 if (xlen == 32 ) {
396396 csrmap[CSR_MENVCFG] = std::make_shared<rv32_low_csr_t >(proc, CSR_MENVCFG, menvcfg);
397397 csrmap[CSR_MENVCFGH] = std::make_shared<rv32_high_csr_t >(proc, CSR_MENVCFGH, menvcfg);
398398 } else {
399399 csrmap[CSR_MENVCFG] = menvcfg;
400400 }
401- const reg_t senvcfg_mask = (proc->extension_enabled (EXT_ZICBOM) ? SENVCFG_CBCFE | SENVCFG_CBIE : 0 ) |
402- (proc->extension_enabled (EXT_ZICBOZ) ? SENVCFG_CBZE : 0 ) |
403- (proc->extension_enabled (EXT_SSNPM) ? SENVCFG_PMM : 0 ) |
404- (proc->extension_enabled (EXT_ZICFILP) ? SENVCFG_LPE : 0 ) |
405- (proc->extension_enabled (EXT_ZICFISS) ? SENVCFG_SSE : 0 );
406- csrmap[CSR_SENVCFG] = senvcfg = std::make_shared<senvcfg_csr_t >(proc, CSR_SENVCFG, senvcfg_mask, 0 );
407- const reg_t henvcfg_mask = (proc->extension_enabled (EXT_ZICBOM) ? HENVCFG_CBCFE | HENVCFG_CBIE : 0 ) |
408- (proc->extension_enabled (EXT_ZICBOZ) ? HENVCFG_CBZE : 0 ) |
409- (proc->extension_enabled (EXT_SSNPM) ? HENVCFG_PMM : 0 ) |
410- (proc->extension_enabled (EXT_SVADU) ? HENVCFG_ADUE: 0 ) |
411- (proc->extension_enabled (EXT_SVPBMT) ? HENVCFG_PBMTE : 0 ) |
412- (proc->extension_enabled (EXT_SSTC) ? HENVCFG_STCE : 0 ) |
413- (proc->extension_enabled (EXT_ZICFILP) ? HENVCFG_LPE : 0 ) |
414- (proc->extension_enabled (EXT_ZICFISS) ? HENVCFG_SSE : 0 ) |
415- (proc->extension_enabled (EXT_SSDBLTRP) ? HENVCFG_DTE : 0 );
416- henvcfg = std::make_shared<henvcfg_csr_t >(proc, CSR_HENVCFG, henvcfg_mask, 0 , menvcfg);
401+ }
402+ const reg_t senvcfg_mask = (proc->extension_enabled (EXT_ZICBOM) ? SENVCFG_CBCFE | SENVCFG_CBIE : 0 ) |
403+ (proc->extension_enabled (EXT_ZICBOZ) ? SENVCFG_CBZE : 0 ) |
404+ (proc->extension_enabled (EXT_SSNPM) ? SENVCFG_PMM : 0 ) |
405+ (proc->extension_enabled (EXT_ZICFILP) ? SENVCFG_LPE : 0 ) |
406+ (proc->extension_enabled (EXT_ZICFISS) ? SENVCFG_SSE : 0 );
407+ senvcfg = std::make_shared<senvcfg_csr_t >(proc, CSR_SENVCFG, senvcfg_mask, 0 );
408+ if (proc->extension_enabled_const (' S' ))
409+ csrmap[CSR_SENVCFG] = senvcfg;
410+ const reg_t henvcfg_mask = (proc->extension_enabled (EXT_ZICBOM) ? HENVCFG_CBCFE | HENVCFG_CBIE : 0 ) |
411+ (proc->extension_enabled (EXT_ZICBOZ) ? HENVCFG_CBZE : 0 ) |
412+ (proc->extension_enabled (EXT_SSNPM) ? HENVCFG_PMM : 0 ) |
413+ (proc->extension_enabled (EXT_SVADU) ? HENVCFG_ADUE: 0 ) |
414+ (proc->extension_enabled (EXT_SVPBMT) ? HENVCFG_PBMTE : 0 ) |
415+ (proc->extension_enabled (EXT_SSTC) ? HENVCFG_STCE : 0 ) |
416+ (proc->extension_enabled (EXT_ZICFILP) ? HENVCFG_LPE : 0 ) |
417+ (proc->extension_enabled (EXT_ZICFISS) ? HENVCFG_SSE : 0 ) |
418+ (proc->extension_enabled (EXT_SSDBLTRP) ? HENVCFG_DTE : 0 );
419+ henvcfg = std::make_shared<henvcfg_csr_t >(proc, CSR_HENVCFG, henvcfg_mask, 0 , menvcfg);
420+ if (proc->extension_enabled_const (' H' )) {
417421 if (xlen == 32 ) {
418422 csrmap[CSR_HENVCFG] = std::make_shared<rv32_low_csr_t >(proc, CSR_HENVCFG, henvcfg);
419423 csrmap[CSR_HENVCFGH] = std::make_shared<rv32_high_csr_t >(proc, CSR_HENVCFGH, henvcfg);
0 commit comments