0%

Gem5 RISC-V: CSR

新增自定义 CSR

  1. 根据 RISC-V 特权手册中预留的 Custom CSR Address 确定要新增的 CSR Address
    • 以非特权级为例, 0x800-0x8ff 可用于可读可写的自定义 CSR , 这里选择 0x800 为例
  2. 在 gem5 中添加自定义 CSR 定义:
    • src/arch/riscv/regs/misc.hh
      • MiscRegIndex 中定义 CSR 的 MiscReg 索引: MISCREG_CUSTOM,
      • CSRIndex 中定义 CSR :CSR_CUSTOM = 0x800
      • CSRData 中声明相应的 CSRMetadata:
        1
        2
        {CSR_CUSTOM,
        {"CUSTOM", MISCREG_CUSTOM, rvTypeFlags(RV64, RV32), isaExtsFlags()}}
    • src/arch/riscv/isa.cc
      • MiscRegNames 中定义相应的 MiscReg 的名称映射:[MISCREG_CUSTOM] = "CUSTOM",

至此,已经可以通过 csr 读写指令访问自定义的 CSR 寄存器

注意 MISCREG_CUSTOM 应当定义到 NUM_PHYS_MISCREGS

如果希望在访问 CSR 寄存器时进行额外的操作,比如自定义的检查,则需修改 src/arch/riscv/isa.c 中的 readMiscRegsetMiscReg 函数添加相应的 case