MicroBlaze V implements registers according to the RISC-V Instruction Set Manual. All mandatory registers are implemented.
Implemented control and status registers (CSRs) are described here. For information on the general purpose registers and floating-point registers, see the RISC-V Instruction Set Manual.
| Name | Number | Reset Value | Access | Remark |
|---|---|---|---|---|
| fflags | 0x001 | 0x00000000 | RW | Exists if floating-point is enabled. |
| frm | 0x002 | 0x00000000 | RW | Exists if floating-point is enabled. |
| fcsr | 0x003 | 0x00000000 | RW | Exists if floating-point is enabled. |
| sstatus | 0x100 | - | RW | Exists if supervisor mode is enabled. Reset value depends on if floating-point is enabled. See Reset for details. |
| sie | 0x104 | 0x00000000 | RO | Exists if supervisor mode is enabled. |
| stvec | 0x105 | C_BASE_VECTORS+4 | RW | Exists if supervisor mode is enabled. |
| scounteren | 0x106 | 0x00000000 | RW | Exists if supervisor mode is enabled. |
| senvcfg | 0x10a | 0x00000000 | RW | Exists if supervisor mode is enabled. |
| sscratch | 0x140 | 0x00000000 | RW | Exists if supervisor mode is enabled. |
| sepc | 0x141 | 0x00000000 | RW | Exists if supervisor mode is enabled. |
| scause | 0x142 | 0x00000000 | RW | Exists if supervisor mode is enabled. |
| stval | 0x143 | 0x00000000 | RW | Exists if supervisor mode is enabled. |
| sip | 0x144 | 0x00000000 | RO | Exists if supervisor mode is enabled. |
| satp | 0x180 | 0x00000000 | RW | Exists if supervisor mode is enabled. |
| mstatus | 0x300 | - | RW | Reset value depends on if user mode, supervisor mode, and floating-point are enabled. See Reset for details. |
| misa | 0x301 | - | RO | Reset value depends on enabled extensions and modes. See Reset for details. |
| medeleg | 0x302 | 0x00000000 | RW | Exists if supervisor mode is enabled. |
| mideleg | 0x303 | 0x00000000 | RO | Exists if supervisor mode is enabled. |
| mie | 0x304 | 0x00000000 | RW | |
| mtvec | 0x305 | C_BASE_VECTORS+4 | RW | |
| mcounteren | 0x306 | 0x00000000 | RW | Exists if user mode is enabled. |
| menvcfg | 0x30a | 0x00000000 | RW | Exists if user mode is enabled. |
| mcountinhibit | 0x320 | 0x00000000 | RW | |
| mhpmevent | 0x323 - 0x323+N | 0x00000000 or 0x0000000A | RW | Read-only zero unless debug event or latency counters are enabled.
Write is ignored when read-only. Reset value is 0x0000000A for debug latency counters. N = 0 to 28. |
| mscratch | 0x340 | 0x00000000 | RW | |
| mepc | 0x341 | 0x00000000 | RW | |
| mcause | 0x342 | 0x00000000 | RW | |
| mtval | 0x343 | 0x00000000 | RW | |
| mip | 0x344 | - | RO | Reset value depends on inputs |
| pmpcfg | 0x3a0 - 0x3a0+N | 0x00000000 | RW | Exists if PMP entries > 0. N = 0 to 15 for RV32, and N = 0, 2, …, 14 for RV64. |
| pmpaddr | 0x3b0 - 0x3b0+N | 0x00000000 | RW | Exists if PMP entries > 0. N = 0 to 63. |
| mseccfg | 0x747 | 0x00000000 | RW | Exists if PMP entries > 0 and PMP Enhancements are enabled. |
| tselect | 0x7a0 | 0x00000000 | RW | Exists if debug is enabled. |
| tdata1 | 0x7a1 | 0x00000000 | RW | Exists if debug is enabled. |
| tdata2 | 0x7a2 | 0x00000000 | RW | Exists if debug is enabled. |
| tinfo | 0x7a3 | 0x00000005 | RO | Exists if debug is enabled. |
| dcsr | 0x7b0 | 0x40000603 | RW | Exists if debug is enabled, only accessible in debug mode |
| dpc | 0x7b1 | C_BASE_VECTORS | RW | Exists if debug is enabled, only accessible in debug mode |
| mstream | 0x7c0 | 0x00000000 | RW | Custom CSR, exists if one or more AXI4-Streams are enabled |
| mwfi | 0x7c4 | 0x00000000 | RW | Custom CSR, exists if more than one of sleep, hibernate, and suspend outputs are enabled |
| stream | 0x8c0 | 0x00000000 | RW | Custom CSR, exists if one or more AXI4-Streams are enabled, user mode is enabled, and stream instructions are allowed |
| mcycle | 0xb00 | 0x00000000 | RW | Read-only zero unless base counters and timers are enabled. |
| minstret | 0xb02 | 0x00000000 | RW | Read-only zero unless base counters and timers are enabled. |
| mhpmcounter | 0xb03 - 0xb03+N | 0x00000000 or 0xFFFF0000 | RW | Read-only zero unless debug event or latency counters are enabled, and base counters and timers are enabled. Reset value is 0xFFFF0000 for debug latency counter min/max registers. N = 0 to 28. |
| mcycleh | 0xb80 | 0x00000000 | RW | Read-only zero unless base counters and timers are enabled. |
| minstreth | 0xb82 | 0x00000000 | RW | Read-only zero unless base counters and timers are enabled. |
| mhpmcounterh | 0xb83 - 0xb83+N | 0x00000000 | RW | Read-only zero unless debug event or latency counters are enabled, and base counters and timers are enabled. N = 0 to 28. Debug latency counter min/max registers are read-only zero. |
| cycle | 0xc00 | 0x00000000 | RO | Read-only zero unless base counters and timers are enabled. |
| instret | 0xc02 | 0x00000000 | RO | Read-only zero unless base counters and timers are enabled. |
| hpmcounter | 0xc03 - 0xc03+N | 0x00000000 or 0xFFFF0000 | RO | Zero unless debug event or latency counters are enabled, and base counters and timers are enabled. Reset value is 0xFFFF0000 for debug latency counter min/max registers. Write is ignored. N = 0 to 28. |
| cycleh | 0xc80 | 0x00000000 | RO | Read-only zero unless base counters and timers are enabled. |
| instreth | 0xc82 | 0x00000000 | RO | Read-only zero unless base counters and timers are enabled. |
| hpmcounterh | 0xc83 - 0xc83+N | 0x00000000 | RO | Zero unless debug event or latency counters are enabled, and base counters and timers are enabled. Write is ignored. N = 0 to 28. Debug latency counter min/max registers are read-only zero. |
| mvendorid | 0xF11 | 0x00000049 | RO | |
| marchid | 0xF12 | C_ARCHID | RO | |
| mimpid | 0xF13 | C_IMPID | RO | |
| mhartid | 0xF14 | C_HARTID | RO | |
| mconfigptr | 0xF15 | 0x00000000 | RO | Implemented, but zero |
For CSRs with optional, implementation defined, features and for custom CSRs, descriptions are provided. For other registers, see the RISC-V Instruction Set Manual.