| #include "springbok.h" | |
| extern "C" void print_csrs(void) { | |
| uint32_t mcause; | |
| uint32_t mepc; | |
| uint32_t mtval; | |
| uint32_t misa; | |
| uint32_t mtvec; | |
| uint32_t mhartid; | |
| uint32_t marchid; | |
| uint32_t mvendorid; | |
| uint32_t mimpid; | |
| __asm__ volatile("csrr %[MCAUSE], mcause" | |
| : [MCAUSE] "=r"(mcause):); | |
| __asm__ volatile("csrr %[MEPC], mepc" | |
| : [MEPC] "=r"(mepc):); | |
| __asm__ volatile("csrr %[MTVAL], mtval" | |
| : [MTVAL] "=r"(mtval):); | |
| __asm__ volatile("csrr %[MISA], misa" | |
| : [MISA] "=r"(misa):); | |
| __asm__ volatile("csrr %[MTVEC], mtvec" | |
| : [MTVEC] "=r"(mtvec):); | |
| __asm__ volatile("csrr %[MHARTID], mhartid" | |
| : [MHARTID] "=r"(mhartid):); | |
| __asm__ volatile("csrr %[MARCHID], marchid" | |
| : [MARCHID] "=r"(marchid):); | |
| __asm__ volatile("csrr %[MVENDORID], mvendorid" | |
| : [MVENDORID] "=r"(mvendorid):); | |
| __asm__ volatile("csrr %[MIMPID], mimpid" | |
| : [MIMPID] "=r"(mimpid):); | |
| LOG_ERROR("MCAUSE:\t\t0x%08X", mcause); | |
| LOG_ERROR("MEPC:\t\t0x%08X", mepc); | |
| LOG_ERROR("MTVAL:\t\t0x%08X", mtval); | |
| LOG_ERROR("MISA:\t\t0x%08X", misa); | |
| LOG_ERROR("MTVEC:\t\t0x%08X", mtvec); | |
| LOG_ERROR("MHARTID:\t\t0x%08X", mhartid); | |
| LOG_ERROR("MARCHID:\t\t0x%08X", marchid); | |
| LOG_ERROR("MVENDORID:\t0x%08X", mvendorid); | |
| LOG_ERROR("MIMPID:\t\t0x%08X", mimpid); | |
| } |