diff --git a/feature.c b/feature.c index 7a97948..11c98f2 100644 --- a/feature.c +++ b/feature.c @@ -176,6 +176,16 @@ void setup_features(void) csr_write(CSR_MHCR, 0x17f); csr_write(CSR_MXSTATUS, 0x638000); csr_write(CSR_MHINT, 0x650c); + } else if (cpu_ver >= 0x4000 && cpu_ver <= 0x4fff) { //4.0.0~4.x.x + csr_write(CSR_MSMPR, 0x1); + csr_write(CSR_MCCR2, 0xe24a000a); + csr_write(CSR_MXSTATUS, 0xc0c38000); + csr_write(CSR_MHINT, 0x31ea32c); + csr_write(CSR_MHINT2, 0x180); + csr_write(CSR_MHCR, 0x11ff); +#if __riscv_xlen == 64 + csr_write(CSR_MENVCFG, 0x4000000000000000); +#endif } else { while(1); }