RVController Control and Status Registers
=========================================

The following standard CSRs are available:
* 0x017: jvt
* 0x300: mstatus
* 0x301: misa (0x40801107 = RV32IMACBX)
* 0x304: mie
* 0x305: mtvec
* 0x310: mstatush
* 0x340: mscratch
* 0x341: mepc
* 0x342: mcause
* 0x343: mtval
* 0x344: mip
* 0x34b: mtval2
* 0x747: mseccfg
* 0xb00: mcycle
* 0xb02: minstret
* 0xb80: mcycleh
* 0xb82: minstreth
* 0xc00: cycle
* 0xc01: time
* 0xc02: instret
* 0xc80: cycleh
* 0xc81: timeh
* 0xc82: instreth
* 0xf11: mvendorid (0)
* 0xf12: marchid (53)
* 0xf13: mimpid ("RVCo")
* 0xf14: mhartid (0)

=========================================

The following custom CSRs are also available:

0x800 - Clock Configuration

 31                                 1   0
+-----------------------------------------+
|            Reserved                 | LW|
+-----------------------------------------+

The LW field controls the type of interrupts used.
* LW=0: Standard interrupts are used. The clock behavior does not depend on player location, and when running, the clock runs at the configured frequency.
* LW=1: Lightweight interrupts are used. The clock stops when no players are nearby and restarts when a player is nearby again. The clock speed is always 1Hz.
Lightweight interrupts require mooncontroller. If RVController is running on a mesecons Luacontroller, LW will only control the clock speed.

0x801 - MMIO Base Address

 31                                      0
+-----------------------------------------+
|               Address                   |
+-----------------------------------------+

When set to a value in the range 0x00000001 - 0xffffff00,
the Address field selects the base address of the 256-byte MMIO region.
When set to 0x00000000, MMIO is disabled.
See mmio.txt for MMIO region contents.

0xbf1 - h3.misa

Stores enhanced ISA identification information, see the Hazard3 reference manual for more information: https://wren.wtf/hazard3/doc/#reg-h3.misa

=========================================

Additionally, the mip and mie CSRs have some interrupts that are not yet implemented,
while some of the platform-use bits have been assigned to additional interrupts.

0x304 - mie (Machine Interrupt-Enable)

 31                       18   17   16   15     8    7   6           0
+---------------------------------------------------------------------+
|          Reserved          |MDIE|MMIE| Reserved |MTIE|   Reserved   |
+---------------------------------------------------------------------+

0x344 - mie (Machine Interrupt-Pending)

 31                       18   17   16   15     8    7   6           0
+---------------------------------------------------------------------+
|          Reserved          |MDIP|MMIP| Reserved |MTIP|   Reserved   |
+---------------------------------------------------------------------+

* MTIE/MTIP: Machine Timer Interrupt (see RISC-V Machine-Level ISA documentation)
* MMIE/MMIP: Machine Mesecons Interrupt - Becomes pending when a mesecons input changes state and remains pending until manually set to 0
* MDIE/MDIP: Machine Digilines Interrupt - Becomes pending when a digilines message is received and remains pending until manually set to 0
