Merge "Add .bazelversion, set to 5.1.1"
diff --git a/hdl/chisel/src/kelvin/scalar/Csr.scala b/hdl/chisel/src/kelvin/scalar/Csr.scala
index 8ff2bb5..6d5311e 100644
--- a/hdl/chisel/src/kelvin/scalar/Csr.scala
+++ b/hdl/chisel/src/kelvin/scalar/Csr.scala
@@ -129,12 +129,26 @@
   val mscratch  = RegInit(0.U(32.W))
   val mepc      = RegInit(0.U(32.W))
 
+  val mhartid   = RegInit(0.U(32.W))
+  // 32-bit MXLEN, I,M,X extensions
+  val misa      = RegInit(0x40801100.U(32.W))
+  // Kelvin-specific ISA register.
+  val kisa      = RegInit(0.U(32.W))
+
+  // 0x426 - Google's Vendor ID
+  val mvendorid = RegInit(0x426.U(32.W))
+
+  // Unimplemented -- explicitly return zero.
+  val marchid   = RegInit(0.U(1.W))
+  val mimpid    = RegInit(0.U(1.W))
+
   val fcsr = Cat(frm, fflags)
 
   // Decode the Index.
   val fflagsEn    = index === 0x001.U
   val frmEn       = index === 0x002.U
   val fcsrEn      = index === 0x003.U
+  val misaEn      = index === 0x301.U
   val mieEn       = index === 0x304.U
   val mtvecEn     = index === 0x305.U
   val mscratchEn  = index === 0x340.U
@@ -151,6 +165,12 @@
   val mcontext7En = index === 0x7C7.U
   val mpcEn       = index === 0x7E0.U
   val mspEn       = index === 0x7E1.U
+  val mvendoridEn = index === 0xF11.U
+  val marchidEn   = index === 0xF12.U
+  val mimpidEn    = index === 0xF13.U
+  val mhartidEn   = index === 0xF14.U
+  // Start of custom CSRs.
+  val kisaEn      = index === 0xFC0.U
 
   // Control registers.
   when (io.req.valid) {
@@ -185,6 +205,7 @@
   val rdata = MuxOR(fflagsEn,     fflags) |
               MuxOR(frmEn,        frm) |
               MuxOR(fcsrEn,       fcsr) |
+              MuxOR(misaEn,       misa) |
               MuxOR(mieEn,        mie) |
               MuxOR(mtvecEn,      mtvec) |
               MuxOR(mscratchEn,   mscratch) |
@@ -200,7 +221,12 @@
               MuxOR(mcontext6En,  mcontext6) |
               MuxOR(mcontext7En,  mcontext7) |
               MuxOR(mpcEn,        mpc) |
-              MuxOR(mspEn,        msp)
+              MuxOR(mspEn,        msp) |
+              MuxOR(mvendoridEn,  mvendorid) |
+              MuxOR(marchidEn,    marchid) |
+              MuxOR(mimpidEn,     mimpid) |
+              MuxOR(mhartidEn,    mhartid) |
+              MuxOR(kisaEn,       kisa)
 
   val wdata = MuxOR(op(csr.CSRRW), rs1) |
               MuxOR(op(csr.CSRRS), rdata | rs1) |