@@ -381,39 +381,43 @@ void state_t::reset(processor_t* const proc, reg_t max_isa)
381
381
csrmap[CSR_MVENDORID] = std::make_shared<const_csr_t >(proc, CSR_MVENDORID, 0 );
382
382
csrmap[CSR_MHARTID] = std::make_shared<const_csr_t >(proc, CSR_MHARTID, proc->get_id ());
383
383
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 );
384
394
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 );
395
395
if (xlen == 32 ) {
396
396
csrmap[CSR_MENVCFG] = std::make_shared<rv32_low_csr_t >(proc, CSR_MENVCFG, menvcfg);
397
397
csrmap[CSR_MENVCFGH] = std::make_shared<rv32_high_csr_t >(proc, CSR_MENVCFGH, menvcfg);
398
398
} else {
399
399
csrmap[CSR_MENVCFG] = menvcfg;
400
400
}
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' )) {
417
421
if (xlen == 32 ) {
418
422
csrmap[CSR_HENVCFG] = std::make_shared<rv32_low_csr_t >(proc, CSR_HENVCFG, henvcfg);
419
423
csrmap[CSR_HENVCFGH] = std::make_shared<rv32_high_csr_t >(proc, CSR_HENVCFGH, henvcfg);
0 commit comments