1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| #define CSR_DIFF_LIST \ GenCSR(MHARTID, 0xf14) \ GenCSR(MSTATUS, 0x300) \ GenCSR(MISA, 0x301) \ GenCSR(MEDELEG, 0x302) \ GenCSR(MIDELEG, 0x303) \ GenCSR(MIE, 0x304) \ GenCSR(MTVEC, 0x305) \ GenCSR(MSTATUSH, 0x310) \ GenCSR(MSCRATCH, 0x340) \ GenCSR(MEPC, 0x341) \ GenCSR(MCAUSE, 0x342) \ GenCSR(MTVAL, 0x343) \ GenCSR(MIP, 0x344) \ \ GenCSR(SATP, 0x180) \ GenCSR(SCAUSE, 0x142) \ GenCSR(SEPC, 0x141) \ GenCSR(SIE, 0x104) \ GenCSR(SIP, 0x144) \ GenCSR(SSCRATCH, 0x140) \ GenCSR(SSTATUS, 0x100) \ GenCSR(STVAL, 0x143) \ GenCSR(STVEC, 0x105) \ \ GenCSR(PMPCFG0, 0x3A0) \ GenCSR(PMPCFG1, 0x3A1) \ GenCSR(PMPCFG2, 0x3A2) \ GenCSR(PMPCFG3, 0x3A3) \ GenCSR(PMPCFG4, 0x3A4) \ GenCSR(PMPCFG5, 0x3A5) \ GenCSR(PMPCFG6, 0x3A6) \ GenCSR(PMPCFG7, 0x3A7) \ GenCSR(PMPCFG8, 0x3A8) \ GenCSR(PMPCFG9, 0x3A9) \ GenCSR(PMPCFG10, 0x3AA) \ GenCSR(PMPCFG11, 0x3AB) \ GenCSR(PMPCFG12, 0x3AC) \ GenCSR(PMPCFG13, 0x3AD) \ GenCSR(PMPCFG14, 0x3AE) \ GenCSR(PMPCFG15, 0x3AF) \ GenCSR(PMPADDR0, 0x3B0) \ GenCSR(PMPADDR1, 0x3B1) \ GenCSR(PMPADDR2, 0x3B2) \ GenCSR(PMPADDR3, 0x3B3) \ GenCSR(PMPADDR4, 0x3B4) \ GenCSR(PMPADDR5, 0x3B5) \ GenCSR(PMPADDR6, 0x3B6) \ GenCSR(PMPADDR7, 0x3B7) \ GenCSR(PMPADDR8, 0x3B8) \ GenCSR(PMPADDR9, 0x3B9) \ GenCSR(PMPADDR10, 0x3BA) \ GenCSR(PMPADDR11, 0x3BB) \ GenCSR(PMPADDR12, 0x3BC) \ GenCSR(PMPADDR13, 0x3BD) \ GenCSR(PMPADDR14, 0x3BE) \ GenCSR(PMPADDR15, 0x3BF) \
#define CSR_LIST \ GenCSR(MVENDROID, 0xF11) \ GenCSR(MARCHID, 0xF12) \ CSR_DIFF_LIST
#define GenCSR(name, paddr) \ static const uint32_t NEMU_CSR_V_##name = paddr; \ static const uint32_t NEMU_CSR_##name = paddr; CSR_LIST #undef GenCSR
|