udb 0.1.13 → 0.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.data/cfgs/example_rv64_with_overlay.yaml +20 -24
- data/.data/cfgs/mc100-32-full-example.yaml +2 -2
- data/.data/cfgs/qc_iu.yaml +7 -3
- data/.data/cfgs/rv32-riscv-tests.yaml +8 -5
- data/.data/cfgs/rv32-vector.yaml +8 -5
- data/.data/cfgs/rv64-riscv-tests.yaml +8 -5
- data/.data/cfgs/rv64-vector.yaml +8 -5
- data/.data/spec/custom/isa/qc_iu/ext/Xqccmi.yaml +107 -36
- data/.data/spec/custom/isa/qc_iu/inst/Xqccmi/qc.cm.ilut.yaml +52 -69
- data/.data/spec/custom/isa/qc_iu/isa/globals.isa +27 -5
- data/.data/spec/schemas/README.adoc +3 -0
- data/.data/spec/schemas/config_schema.json +1 -1
- data/.data/spec/schemas/mmr_schema.json +3 -3
- data/.data/spec/schemas/schema_defs.json +8 -3
- data/.data/spec/std/isa/csr/H/hcounteren.layout +3 -3
- data/.data/spec/std/isa/csr/H/hcounteren.yaml +31 -31
- data/.data/spec/std/isa/csr/H/henvcfg.yaml +25 -0
- data/.data/spec/std/isa/csr/H/htinst.yaml +3 -3
- data/.data/spec/std/isa/csr/H/htval.yaml +3 -3
- data/.data/spec/std/isa/csr/H/mtinst.yaml +1 -1
- data/.data/spec/std/isa/csr/I/pmpaddr0.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr1.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr10.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr11.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr12.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr13.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr14.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr15.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr16.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr17.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr18.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr19.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr2.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr20.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr21.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr22.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr23.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr24.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr25.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr26.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr27.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr28.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr29.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr3.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr30.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr31.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr32.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr33.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr34.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr35.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr36.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr37.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr38.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr39.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr4.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr40.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr41.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr42.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr43.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr44.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr45.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr46.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr47.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr48.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr49.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr5.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr50.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr51.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr52.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr53.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr54.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr55.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr56.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr57.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr58.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr59.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr6.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr60.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr61.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr62.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr63.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr7.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr8.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddr9.yaml +6 -4
- data/.data/spec/std/isa/csr/I/pmpaddrN.layout +6 -4
- data/.data/spec/std/isa/csr/I/pmpcfg0.yaml +120 -144
- data/.data/spec/std/isa/csr/I/pmpcfg1.yaml +60 -72
- data/.data/spec/std/isa/csr/I/pmpcfg10.yaml +120 -144
- data/.data/spec/std/isa/csr/I/pmpcfg11.yaml +60 -72
- data/.data/spec/std/isa/csr/I/pmpcfg12.yaml +120 -144
- data/.data/spec/std/isa/csr/I/pmpcfg13.yaml +60 -72
- data/.data/spec/std/isa/csr/I/pmpcfg14.yaml +120 -144
- data/.data/spec/std/isa/csr/I/pmpcfg15.yaml +60 -72
- data/.data/spec/std/isa/csr/I/pmpcfg2.yaml +120 -144
- data/.data/spec/std/isa/csr/I/pmpcfg3.yaml +60 -72
- data/.data/spec/std/isa/csr/I/pmpcfg4.yaml +120 -144
- data/.data/spec/std/isa/csr/I/pmpcfg5.yaml +60 -72
- data/.data/spec/std/isa/csr/I/pmpcfg6.yaml +120 -144
- data/.data/spec/std/isa/csr/I/pmpcfg7.yaml +60 -72
- data/.data/spec/std/isa/csr/I/pmpcfg8.yaml +120 -144
- data/.data/spec/std/isa/csr/I/pmpcfg9.yaml +60 -72
- data/.data/spec/std/isa/csr/I/pmpcfgN.layout +15 -18
- data/.data/spec/std/isa/csr/Smcntrpmf/mcyclecfg.yaml +1 -1
- data/.data/spec/std/isa/csr/Smcntrpmf/mcyclecfgh.yaml +1 -1
- data/.data/spec/std/isa/csr/Smcntrpmf/minstretcfg.yaml +1 -1
- data/.data/spec/std/isa/csr/Smcntrpmf/minstretcfgh.yaml +1 -1
- data/.data/spec/std/isa/csr/Sscofpmf/scountovf.layout +1 -1
- data/.data/spec/std/isa/csr/Sscofpmf/scountovf.yaml +29 -29
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter10.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter10h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter11.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter11h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter12.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter12h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter13.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter13h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter14.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter14h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter15.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter15h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter16.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter16h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter17.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter17h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter18.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter18h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter19.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter19h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter20.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter20h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter21.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter21h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter22.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter22h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter23.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter23h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter24.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter24h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter25.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter25h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter26.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter26h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter27.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter27h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter28.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter28h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter29.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter29h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter3.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter30.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter30h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter31.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter31h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter3h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter4.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter4h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter5.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter5h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter6.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter6h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter7.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter7h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter8.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter8h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter9.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter9h.yaml +1 -1
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounterN.layout +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounterNh.layout +1 -1
- data/.data/spec/std/isa/csr/hstatus.yaml +1 -1
- data/.data/spec/std/isa/csr/jvt.yaml +1 -0
- data/.data/spec/std/isa/csr/mcycle.yaml +6 -6
- data/.data/spec/std/isa/csr/menvcfg.yaml +20 -0
- data/.data/spec/std/isa/csr/minstret.yaml +3 -3
- data/.data/spec/std/isa/csr/minstreth.yaml +1 -1
- data/.data/spec/std/isa/csr/mstatus.yaml +21 -25
- data/.data/spec/std/isa/csr/mtvec.yaml +16 -57
- data/.data/spec/std/isa/csr/senvcfg.yaml +26 -0
- data/.data/spec/std/isa/csr/sie.yaml +30 -4
- data/.data/spec/std/isa/csr/sip.yaml +16 -2
- data/.data/spec/std/isa/csr/stvec.yaml +11 -12
- data/.data/spec/std/isa/csr/vstval.yaml +1 -1
- data/.data/spec/std/isa/csr/vstvec.yaml +14 -15
- data/.data/spec/std/isa/ext/Q.yaml +1 -1
- data/.data/spec/std/isa/ext/Shlcofideleg.yaml +24 -0
- data/.data/spec/std/isa/ext/Shvstvecd.yaml +2 -2
- data/.data/spec/std/isa/ext/Sspm.yaml +5 -0
- data/.data/spec/std/isa/ext/Sstvecd.yaml +2 -2
- data/.data/spec/std/isa/ext/Sstvecv.yaml +2 -2
- data/.data/spec/std/isa/ext/Supm.yaml +17 -0
- data/.data/spec/std/isa/ext/Zcb.yaml +3 -0
- data/.data/spec/std/isa/ext/Zfbfmin.yaml +3 -5
- data/.data/spec/std/isa/ext/Ziccid.yaml +29 -0
- data/.data/spec/std/isa/ext/Zicfilp.yaml +5 -1
- data/.data/spec/std/isa/ext/Zicfiss.yaml +20 -1
- data/.data/spec/std/isa/ext/Zihpm.yaml +3 -0
- data/.data/spec/std/isa/ext/Zilx.yaml +58 -0
- data/.data/spec/std/isa/ext/Zkt.yaml +33 -1
- data/.data/spec/std/isa/ext/Zvabd.yaml +21 -0
- data/.data/spec/std/isa/ext/Zvbc.yaml +3 -0
- data/.data/spec/std/isa/ext/Zvkb.yaml +3 -0
- data/.data/spec/std/isa/ext/Zvkg.yaml +3 -0
- data/.data/spec/std/isa/ext/Zvkned.yaml +3 -0
- data/.data/spec/std/isa/ext/Zvknha.yaml +3 -0
- data/.data/spec/std/isa/ext/Zvknhb.yaml +4 -2
- data/.data/spec/std/isa/ext/Zvksed.yaml +3 -0
- data/.data/spec/std/isa/ext/Zvksh.yaml +3 -0
- data/.data/spec/std/isa/ext/Zvkt.yaml +3 -0
- data/.data/spec/std/isa/inst/B/andn.yaml +10 -12
- data/.data/spec/std/isa/inst/B/clmul.yaml +9 -11
- data/.data/spec/std/isa/inst/B/clmulh.yaml +9 -11
- data/.data/spec/std/isa/inst/B/orn.yaml +9 -11
- data/.data/spec/std/isa/inst/B/rev8.yaml +1 -1
- data/.data/spec/std/isa/inst/B/rol.yaml +9 -11
- data/.data/spec/std/isa/inst/B/rolw.yaml +9 -11
- data/.data/spec/std/isa/inst/B/ror.yaml +9 -11
- data/.data/spec/std/isa/inst/B/rorw.yaml +9 -11
- data/.data/spec/std/isa/inst/B/xnor.yaml +9 -11
- data/.data/spec/std/isa/inst/C/c.add.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.addi.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.addiw.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.addw.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.and.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.andi.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.ldsp.yaml +3 -3
- data/.data/spec/std/isa/inst/C/c.lui.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.mv.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.nop.yaml +13 -2
- data/.data/spec/std/isa/inst/C/c.or.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.slli.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.srai.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.srli.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.sub.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.subw.yaml +1 -0
- data/.data/spec/std/isa/inst/C/c.xor.yaml +1 -0
- data/.data/spec/std/isa/inst/D/fld.yaml +1 -0
- data/.data/spec/std/isa/inst/D/fsd.yaml +1 -0
- data/.data/spec/std/isa/inst/F/fadd.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fcvt.l.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fcvt.lu.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fcvt.s.l.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fcvt.s.lu.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fcvt.s.wu.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fcvt.w.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fcvt.wu.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fdiv.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/feq.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fle.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fleq.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/flt.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fltq.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/flw.yaml +2 -1
- data/.data/spec/std/isa/inst/F/fmadd.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fmax.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fmin.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fmsub.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fmul.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fmv.w.x.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fmv.x.w.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fnmadd.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fnmsub.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fsgnj.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fsgnjn.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fsgnjx.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fsqrt.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fsub.s.yaml +1 -1
- data/.data/spec/std/isa/inst/F/fsw.yaml +2 -1
- data/.data/spec/std/isa/inst/I/addi.yaml +1 -0
- data/.data/spec/std/isa/inst/I/addiw.yaml +1 -0
- data/.data/spec/std/isa/inst/I/andi.yaml +1 -0
- data/.data/spec/std/isa/inst/I/auipc.yaml +1 -0
- data/.data/spec/std/isa/inst/I/lb.yaml +1 -0
- data/.data/spec/std/isa/inst/I/lbu.yaml +1 -0
- data/.data/spec/std/isa/inst/I/ld.yaml +2 -0
- data/.data/spec/std/isa/inst/I/lh.yaml +1 -0
- data/.data/spec/std/isa/inst/I/lhu.yaml +1 -0
- data/.data/spec/std/isa/inst/I/lui.yaml +1 -0
- data/.data/spec/std/isa/inst/I/lw.yaml +1 -0
- data/.data/spec/std/isa/inst/I/lwu.yaml +1 -0
- data/.data/spec/std/isa/inst/I/ori.yaml +1 -0
- data/.data/spec/std/isa/inst/I/sb.yaml +1 -0
- data/.data/spec/std/isa/inst/I/sd.yaml +2 -1
- data/.data/spec/std/isa/inst/I/sh.yaml +1 -0
- data/.data/spec/std/isa/inst/I/slti.yaml +1 -0
- data/.data/spec/std/isa/inst/I/sltiu.yaml +1 -0
- data/.data/spec/std/isa/inst/I/sw.yaml +1 -0
- data/.data/spec/std/isa/inst/I/xori.yaml +1 -0
- data/.data/spec/std/isa/inst/Q/fadd.q.yaml +2 -2
- data/.data/spec/std/isa/inst/Q/fclass.q.yaml +5 -5
- data/.data/spec/std/isa/inst/Q/fleq.q.yaml +0 -1
- data/.data/spec/std/isa/inst/Q/fli.q.yaml +1 -1
- data/.data/spec/std/isa/inst/Q/flq.yaml +1 -0
- data/.data/spec/std/isa/inst/Q/fltq.q.yaml +0 -1
- data/.data/spec/std/isa/inst/Q/fmaxm.q.yaml +0 -1
- data/.data/spec/std/isa/inst/Q/fminm.q.yaml +0 -1
- data/.data/spec/std/isa/inst/Q/fmvp.q.x.yaml +1 -1
- data/.data/spec/std/isa/inst/Q/fsq.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vadc.vim.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vadd.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vand.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vle8.v.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmadc.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmadc.vim.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmerge.vim.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmseq.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmsgt.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmsgtu.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmsle.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmsleu.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmsne.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vmv.v.i.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vor.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vrsub.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vsadd.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vsaddu.vi.yaml +1 -0
- data/.data/spec/std/isa/inst/V/vse8.v.yaml +1 -0
- data/.data/spec/std/isa/inst/Zawrs/wrs.nto.yaml +4 -2
- data/.data/spec/std/isa/inst/Zba/add.uw.yaml +9 -11
- data/.data/spec/std/isa/inst/Zbb/orc.b.yaml +1 -1
- data/.data/spec/std/isa/inst/Zbkb/brev8.yaml +3 -3
- data/.data/spec/std/isa/inst/Zbkb/unzip.yaml +2 -2
- data/.data/spec/std/isa/inst/Zbkb/zip.yaml +2 -2
- data/.data/spec/std/isa/inst/Zbkx/xperm4.yaml +2 -2
- data/.data/spec/std/isa/inst/Zbkx/xperm8.yaml +2 -2
- data/.data/spec/std/isa/inst/Zcb/c.mul.yaml +1 -0
- data/.data/spec/std/isa/inst/Zcb/c.not.yaml +1 -0
- data/.data/spec/std/isa/inst/Zcb/c.zext.b.yaml +2 -7
- data/.data/spec/std/isa/inst/Zcb/c.zext.w.yaml +1 -1
- data/.data/spec/std/isa/inst/Zcmop/c.mop.1.yaml +2 -0
- data/.data/spec/std/isa/inst/Zcmop/c.mop.5.yaml +2 -0
- data/.data/spec/std/isa/inst/Zcmop/c.mop.N.layout +7 -0
- data/.data/spec/std/isa/inst/Zfa/fli.s.yaml +1 -1
- data/.data/spec/std/isa/inst/Zfa/fmaxm.s.yaml +1 -1
- data/.data/spec/std/isa/inst/Zfa/fminm.s.yaml +1 -1
- data/.data/spec/std/isa/inst/Zfa/fround.s.yaml +1 -1
- data/.data/spec/std/isa/inst/Zfa/froundnx.s.yaml +1 -1
- data/.data/spec/std/isa/inst/Zfh/flh.yaml +5 -2
- data/.data/spec/std/isa/inst/Zfh/fmv.h.x.yaml +3 -1
- data/.data/spec/std/isa/inst/Zfh/fmv.x.h.yaml +3 -1
- data/.data/spec/std/isa/inst/Zfh/fsh.yaml +4 -1
- data/.data/spec/std/isa/inst/Zicbop/prefetch.i.yaml +2 -0
- data/.data/spec/std/isa/inst/Zicbop/prefetch.r.yaml +2 -0
- data/.data/spec/std/isa/inst/Zicbop/prefetch.w.yaml +2 -0
- data/.data/spec/std/isa/inst/Zicfiss/c.sspopchk.yaml +30 -0
- data/.data/spec/std/isa/inst/Zicfiss/c.sspush.yaml +29 -0
- data/.data/spec/std/isa/inst/Zicond/czero.eqz.yaml +1 -1
- data/.data/spec/std/isa/inst/Zicond/czero.nez.yaml +1 -1
- data/.data/spec/std/isa/inst/Zicsr/csrrw.yaml +12 -0
- data/.data/spec/std/isa/inst/Zilx/lxd.yaml +38 -0
- data/.data/spec/std/isa/inst/Zilx/lxh.yaml +35 -0
- data/.data/spec/std/isa/inst/Zilx/lxhu.yaml +35 -0
- data/.data/spec/std/isa/inst/Zilx/lxsb.yaml +40 -0
- data/.data/spec/std/isa/inst/Zilx/lxsbu.yaml +40 -0
- data/.data/spec/std/isa/inst/Zilx/lxsd.yaml +38 -0
- data/.data/spec/std/isa/inst/Zilx/lxsh.yaml +35 -0
- data/.data/spec/std/isa/inst/Zilx/lxshu.yaml +35 -0
- data/.data/spec/std/isa/inst/Zilx/lxsuwb.yaml +40 -0
- data/.data/spec/std/isa/inst/Zilx/lxsuwbu.yaml +40 -0
- data/.data/spec/std/isa/inst/Zilx/lxsuwd.yaml +39 -0
- data/.data/spec/std/isa/inst/Zilx/lxsuwh.yaml +40 -0
- data/.data/spec/std/isa/inst/Zilx/lxsuwhu.yaml +40 -0
- data/.data/spec/std/isa/inst/Zilx/lxsuww.yaml +40 -0
- data/.data/spec/std/isa/inst/Zilx/lxsuwwu.yaml +40 -0
- data/.data/spec/std/isa/inst/Zilx/lxsw.yaml +35 -0
- data/.data/spec/std/isa/inst/Zilx/lxswu.yaml +39 -0
- data/.data/spec/std/isa/inst/Zilx/lxw.yaml +35 -0
- data/.data/spec/std/isa/inst/Zilx/lxwu.yaml +39 -0
- data/.data/spec/std/isa/inst/Zks/sm3p0.yaml +1 -1
- data/.data/spec/std/isa/inst/Zks/sm3p1.yaml +1 -1
- data/.data/spec/std/isa/inst/Zks/sm4ed.yaml +1 -1
- data/.data/spec/std/isa/inst/Zks/sm4ks.yaml +1 -1
- data/.data/spec/std/isa/inst/Zvabd/vabd.vv.yaml +67 -0
- data/.data/spec/std/isa/inst/Zvabd/vabdu.vv.yaml +67 -0
- data/.data/spec/std/isa/inst/Zvabd/vabs.v.yaml +61 -0
- data/.data/spec/std/isa/inst/Zvabd/vwabda.vv.yaml +72 -0
- data/.data/spec/std/isa/inst/Zvabd/vwabdau.vv.yaml +72 -0
- data/.data/spec/std/isa/isa/builtin_functions.idl +1 -0
- data/.data/spec/std/isa/isa/fp.idl +42 -18
- data/.data/spec/std/isa/isa/globals.isa +27 -7
- data/.data/spec/std/isa/isa/interrupts.idl +1 -0
- data/.data/spec/std/isa/param/CACHE_BLOCK_SIZE.yaml +70 -6
- data/.data/spec/std/isa/param/ELEN.yaml +27 -5
- data/.data/spec/std/isa/param/HCOUNTENABLE_EN.yaml +13 -0
- data/.data/spec/std/isa/param/HPM_COUNTER_EN.yaml +13 -3
- data/.data/spec/std/isa/param/HPM_EVENTS.yaml +0 -3
- data/.data/spec/std/isa/param/HSTATEEN_CONTEXT_TYPE.yaml +1 -0
- data/.data/spec/std/isa/param/MCOUNTENABLE_EN.yaml +8 -0
- data/.data/spec/std/isa/param/MSTATEEN_CONTEXT_TYPE.yaml +1 -0
- data/.data/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_DIRECT.yaml +71 -64
- data/.data/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_VECTORED.yaml +71 -64
- data/.data/spec/std/isa/param/NUM_PMP_ENTRIES.yaml +11 -22
- data/.data/spec/std/isa/param/NUM_USABLE_PMP_ENTRIES.yaml +35 -0
- data/.data/spec/std/isa/param/PMP_NA4_SUPPORTED.yaml +23 -0
- data/.data/spec/std/isa/param/{STVEC_MODE_VECTORED.yaml → PMP_NAPOT_SUPPORTED.yaml} +9 -9
- data/.data/spec/std/isa/param/{MSTATUS_TVM_IMPLEMENTED.yaml → PMP_TOR_SUPPORTED.yaml} +6 -6
- data/.data/spec/std/isa/param/PRECISE_SYNCHRONOUS_EXCEPTIONS.yaml +1 -0
- data/.data/spec/std/isa/param/STVAL_WIDTH.yaml +3 -2
- data/.data/spec/std/isa/param/STVEC_BASE_ALIGNMENT_VECTORED.yaml +100 -0
- data/.data/spec/std/isa/param/STVEC_MODES.yaml +31 -0
- data/.data/spec/std/isa/param/SV32_VSMODE_TRANSLATION.yaml +1 -1
- data/.data/spec/std/isa/param/SXLEN.yaml +2 -2
- data/.data/spec/std/isa/param/TINST_VALUE_ON_FINAL_INSTRUCTION_GUEST_PAGE_FAULT.yaml +1 -1
- data/.data/spec/std/isa/param/TINST_VALUE_ON_FINAL_LOAD_GUEST_PAGE_FAULT.yaml +1 -1
- data/.data/spec/std/isa/param/TINST_VALUE_ON_FINAL_STORE_AMO_GUEST_PAGE_FAULT.yaml +1 -1
- data/.data/spec/std/isa/param/TINST_VALUE_ON_LOAD_ADDRESS_MISALIGNED.yaml +1 -1
- data/.data/spec/std/isa/param/TINST_VALUE_ON_STORE_AMO_ADDRESS_MISALIGNED.yaml +1 -1
- data/.data/spec/std/isa/param/TRAP_ON_EBREAK.yaml +1 -0
- data/.data/spec/std/isa/param/TRAP_ON_ECALL_FROM_M.yaml +1 -0
- data/.data/spec/std/isa/param/TRAP_ON_SFENCE_VMA_WHEN_SATP_MODE_IS_READ_ONLY.yaml +1 -0
- data/.data/spec/std/isa/param/UXLEN.yaml +1 -1
- data/.data/spec/std/isa/param/VLEN.yaml +16 -7
- data/.data/spec/std/isa/param/VSTVEC_MODES.yaml +31 -0
- data/.data/spec/std/isa/param/ZAWRS_NTO_IS_NOP.yaml +19 -0
- data/lib/udb/ESPRESSO_VERSION +1 -1
- data/lib/udb/Z3_VERSION +1 -1
- data/lib/udb/config.rb +14 -2
- data/lib/udb/doc_link.rb +3 -4
- data/lib/udb/obj/csr.rb +1 -1
- data/lib/udb/obj/csr_field.rb +1 -1
- data/lib/udb/obj/extension.rb +1 -1
- data/lib/udb/obj/instruction.rb +1 -1
- data/lib/udb/obj/non_isa_specification.rb +22 -100
- data/lib/udb/version.rb +1 -1
- data/lib/udb/version_spec.rb +1 -1
- data/lib/udb/z3.rb +31 -9
- metadata +42 -9
- data/.data/spec/std/isa/param/STVEC_MODE_DIRECT.yaml +0 -21
- data/.data/spec/std/isa/param/VSTVEC_MODE_DIRECT.yaml +0 -21
- data/.data/spec/std/isa/param/VSTVEC_MODE_VECTORED.yaml +0 -21
|
@@ -103,14 +103,15 @@ function raise_ilut {
|
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
-
function
|
|
106
|
+
function is_pc_referencing_inst? {
|
|
107
107
|
returns Boolean
|
|
108
108
|
arguments Bits<32> inst
|
|
109
109
|
description {
|
|
110
|
-
Returns true if +inst+
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
110
|
+
Returns true if +inst+ references PC as an input or output, making it
|
|
111
|
+
forbidden inside an ILUT entry. This covers three categories:
|
|
112
|
+
(1) PC-relative instructions: auipc, branches, jal, c.j, c.jal, c.beqz, c.bnez;
|
|
113
|
+
(2) register-indirect jumps that write PC: jalr, c.jr, c.jalr;
|
|
114
|
+
(3) return instructions that write PC: cm.popret, cm.popretz, qc.cm.popret, qc.cm.popretz.
|
|
114
115
|
For 16-bit compressed instructions, only the lower 16 bits of +inst+ are examined.
|
|
115
116
|
For 48-bit Xqci instructions, only the lower 32 bits are passed here (the upper
|
|
116
117
|
16 bits are in a separate word and are not needed for this check).
|
|
@@ -135,6 +136,22 @@ function is_pc_relative_inst? {
|
|
|
135
136
|
if (cinst[15:13] == 3'b111 && cinst[1:0] == 2'b01) {
|
|
136
137
|
return true;
|
|
137
138
|
}
|
|
139
|
+
# c.jr: bits[15:12]=1000, bits[6:2]!=00000, bits[1:0]=10 (register jump, writes PC)
|
|
140
|
+
if (cinst[15:12] == 4'b1000 && cinst[6:2] != 5'b00000 && cinst[1:0] == 2'b10) {
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
# c.jalr: bits[15:12]=1001, bits[6:2]!=00000, bits[1:0]=10 (register jump-and-link, writes PC)
|
|
144
|
+
if (cinst[15:12] == 4'b1001 && cinst[6:2] != 5'b00000 && cinst[1:0] == 2'b10) {
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
# cm.popret / qc.cm.popret: bits[15:8]=10111110, bits[1:0]=10 (pops stack and returns, writes PC)
|
|
148
|
+
if (cinst[15:8] == 8'b10111110 && cinst[1:0] == 2'b10) {
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
# cm.popretz / qc.cm.popretz: bits[15:8]=10111100, bits[1:0]=10 (pops stack, zeroes a0, returns, writes PC)
|
|
152
|
+
if (cinst[15:8] == 8'b10111100 && cinst[1:0] == 2'b10) {
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
138
155
|
return false;
|
|
139
156
|
} else {
|
|
140
157
|
# 32-bit (or 48-bit) instruction: check opcode field bits[6:0]
|
|
@@ -147,6 +164,11 @@ function is_pc_relative_inst? {
|
|
|
147
164
|
if (opcode == 7'b1101111) {
|
|
148
165
|
return true;
|
|
149
166
|
}
|
|
167
|
+
# jalr: register-indirect jump, writes PC
|
|
168
|
+
# (grouped with PC-referencing instructions, not PC-relative)
|
|
169
|
+
if (opcode == 7'b1100111) {
|
|
170
|
+
return true;
|
|
171
|
+
}
|
|
150
172
|
# branches
|
|
151
173
|
if (opcode == 7'b1100011) {
|
|
152
174
|
return true;
|
|
@@ -80,6 +80,9 @@ version should be released. Follow these steps:
|
|
|
80
80
|
. The CI `schema-release` workflow will automatically publish the new version
|
|
81
81
|
as a GitHub release under the tag `schemas/<schema_name>/<version>` when the
|
|
82
82
|
changes are merged to `main`.
|
|
83
|
+
. Published schema version assets are immutable. If a release already exists
|
|
84
|
+
with different content, the publish workflow fails; bump the schema `$id`
|
|
85
|
+
instead of overwriting an existing version.
|
|
83
86
|
. Previous schema versions remain available via their GitHub release tags and
|
|
84
87
|
at `https://riscv.github.io/riscv-unified-db/schemas/<schema_name>/<old-version>/<schema_name>`.
|
|
85
88
|
|
|
@@ -35,11 +35,11 @@
|
|
|
35
35
|
"description": "One line description for the MMR"
|
|
36
36
|
},
|
|
37
37
|
"description": {
|
|
38
|
-
"$ref": "schema_defs.json
|
|
38
|
+
"$ref": "schema_defs.json#/$defs/spec_text",
|
|
39
39
|
"description": "Function of the register"
|
|
40
40
|
},
|
|
41
41
|
"definedBy": {
|
|
42
|
-
"$ref": "schema_defs.json
|
|
42
|
+
"$ref": "schema_defs.json#/$defs/condition",
|
|
43
43
|
"description": "Extension(s) that define the MMR"
|
|
44
44
|
},
|
|
45
45
|
"physical_address": {
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"type": "object",
|
|
60
60
|
"patternProperties": {
|
|
61
61
|
"^[a-zA-Z].*$": {
|
|
62
|
-
"$ref": "csr_schema.json
|
|
62
|
+
"$ref": "csr_schema.json#/$defs/csr_field"
|
|
63
63
|
}
|
|
64
64
|
},
|
|
65
65
|
"description": "fields of this MMR",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"$id": "v0.
|
|
3
|
+
"$id": "v0.2",
|
|
4
4
|
"title": "Common patterns used by all schemas",
|
|
5
5
|
"$defs": {
|
|
6
6
|
"$source": {
|
|
@@ -231,6 +231,11 @@
|
|
|
231
231
|
"$ref": "#/$defs/rvi_version",
|
|
232
232
|
"description": "Exact version in `MAJOR[.MINOR[.PATCH]]` format (e.g., `2.1.0`, `2.1`, `2`)"
|
|
233
233
|
},
|
|
234
|
+
"implemented_extension_version": {
|
|
235
|
+
"type": "string",
|
|
236
|
+
"description": "Exact implemented extension version, either bare or prefixed with `=` (e.g., `2.1.0`, `2.1`, `= 2.1`)",
|
|
237
|
+
"pattern": "^(=\\s*)?[0-9]+(\\.[0-9]+(\\.[0-9]+(-pre)?)?)?$"
|
|
238
|
+
},
|
|
234
239
|
"requirement_string": {
|
|
235
240
|
"type": "string",
|
|
236
241
|
"description": "Version requirement string (e.g., `>= 2.0`, `~> 1.5`, `= 2.1`). The `~>` operator is a pessimistic version constraint: `~> X.Y` means `>= X.Y` and `< (X+1).0`; `~> X.Y.Z` means `>= X.Y.Z` and `< X.(Y+1).0`.",
|
|
@@ -858,7 +863,7 @@
|
|
|
858
863
|
"description": "An unsigned power of 2 that fits in 32 bits",
|
|
859
864
|
"type": "integer",
|
|
860
865
|
"enum": [
|
|
861
|
-
1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048,
|
|
866
|
+
1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384,
|
|
862
867
|
32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304,
|
|
863
868
|
8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912,
|
|
864
869
|
1073741824, 2147483648
|
|
@@ -868,7 +873,7 @@
|
|
|
868
873
|
"description": "An unsigned power of 2 that fits in 64 bits",
|
|
869
874
|
"type": "integer",
|
|
870
875
|
"enum": [
|
|
871
|
-
1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048,
|
|
876
|
+
1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384,
|
|
872
877
|
32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304,
|
|
873
878
|
8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912,
|
|
874
879
|
1073741824, 2147483648, 4294967296, 8589934592, 17179869184,
|
|
@@ -76,7 +76,7 @@ fields:
|
|
|
76
76
|
|
|
77
77
|
[separator="!",%autowidth]
|
|
78
78
|
!===
|
|
79
|
-
.2+h! [.rotate]#`hcounteren.TM`# .2+h! [.rotate]#`mcounteren.TM`# .2+h! [.rotate]#`scounteren.TM`# 2+^.>! `
|
|
79
|
+
.2+h! [.rotate]#`hcounteren.TM`# .2+h! [.rotate]#`mcounteren.TM`# .2+h! [.rotate]#`scounteren.TM`# 2+^.>! `time` access behavior
|
|
80
80
|
.>h! VS-mode .>h! VU-mode
|
|
81
81
|
|
|
82
82
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -116,7 +116,7 @@ fields:
|
|
|
116
116
|
|
|
117
117
|
[separator="!",%autowidth]
|
|
118
118
|
!===
|
|
119
|
-
.2+h! [.rotate]#`hcounteren.IR`# .2+h! [.rotate]#`mcounteren.IR`# .2+h! [.rotate]#`scounteren.IR`# 2+^.>! `
|
|
119
|
+
.2+h! [.rotate]#`hcounteren.IR`# .2+h! [.rotate]#`mcounteren.IR`# .2+h! [.rotate]#`scounteren.IR`# 2+^.>! `instret` access behavior
|
|
120
120
|
.>h! VS-mode .>h! VU-mode
|
|
121
121
|
|
|
122
122
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -154,7 +154,7 @@ fields:
|
|
|
154
154
|
|
|
155
155
|
[separator="!",%autowidth]
|
|
156
156
|
!===
|
|
157
|
-
.2+h! [.rotate]#`hcounteren.HPM<%= hpm_num %>`# .2+h! [.rotate]#`mcounteren.HPM<%= hpm_num %>`# .2+h! [.rotate]#`scounteren.HPM<%= hpm_num %>`# 2+^.>! `
|
|
157
|
+
.2+h! [.rotate]#`hcounteren.HPM<%= hpm_num %>`# .2+h! [.rotate]#`mcounteren.HPM<%= hpm_num %>`# .2+h! [.rotate]#`scounteren.HPM<%= hpm_num %>`# 2+^.>! `hpmcounter<%= hpm_num %>` access behavior
|
|
158
158
|
.>h! VS-mode .>h! VU-mode
|
|
159
159
|
|
|
160
160
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -79,7 +79,7 @@ fields:
|
|
|
79
79
|
|
|
80
80
|
[separator="!",%autowidth]
|
|
81
81
|
!===
|
|
82
|
-
.2+h! [.rotate]#`hcounteren.TM`# .2+h! [.rotate]#`mcounteren.TM`# .2+h! [.rotate]#`scounteren.TM`# 2+^.>! `
|
|
82
|
+
.2+h! [.rotate]#`hcounteren.TM`# .2+h! [.rotate]#`mcounteren.TM`# .2+h! [.rotate]#`scounteren.TM`# 2+^.>! `time` access behavior
|
|
83
83
|
.>h! VS-mode .>h! VU-mode
|
|
84
84
|
|
|
85
85
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -119,7 +119,7 @@ fields:
|
|
|
119
119
|
|
|
120
120
|
[separator="!",%autowidth]
|
|
121
121
|
!===
|
|
122
|
-
.2+h! [.rotate]#`hcounteren.IR`# .2+h! [.rotate]#`mcounteren.IR`# .2+h! [.rotate]#`scounteren.IR`# 2+^.>! `
|
|
122
|
+
.2+h! [.rotate]#`hcounteren.IR`# .2+h! [.rotate]#`mcounteren.IR`# .2+h! [.rotate]#`scounteren.IR`# 2+^.>! `instret` access behavior
|
|
123
123
|
.>h! VS-mode .>h! VU-mode
|
|
124
124
|
|
|
125
125
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -156,7 +156,7 @@ fields:
|
|
|
156
156
|
|
|
157
157
|
[separator="!",%autowidth]
|
|
158
158
|
!===
|
|
159
|
-
.2+h! [.rotate]#`hcounteren.HPM3`# .2+h! [.rotate]#`mcounteren.HPM3`# .2+h! [.rotate]#`scounteren.HPM3`# 2+^.>! `
|
|
159
|
+
.2+h! [.rotate]#`hcounteren.HPM3`# .2+h! [.rotate]#`mcounteren.HPM3`# .2+h! [.rotate]#`scounteren.HPM3`# 2+^.>! `hpmcounter3` access behavior
|
|
160
160
|
.>h! VS-mode .>h! VU-mode
|
|
161
161
|
|
|
162
162
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -193,7 +193,7 @@ fields:
|
|
|
193
193
|
|
|
194
194
|
[separator="!",%autowidth]
|
|
195
195
|
!===
|
|
196
|
-
.2+h! [.rotate]#`hcounteren.HPM4`# .2+h! [.rotate]#`mcounteren.HPM4`# .2+h! [.rotate]#`scounteren.HPM4`# 2+^.>! `
|
|
196
|
+
.2+h! [.rotate]#`hcounteren.HPM4`# .2+h! [.rotate]#`mcounteren.HPM4`# .2+h! [.rotate]#`scounteren.HPM4`# 2+^.>! `hpmcounter4` access behavior
|
|
197
197
|
.>h! VS-mode .>h! VU-mode
|
|
198
198
|
|
|
199
199
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -230,7 +230,7 @@ fields:
|
|
|
230
230
|
|
|
231
231
|
[separator="!",%autowidth]
|
|
232
232
|
!===
|
|
233
|
-
.2+h! [.rotate]#`hcounteren.HPM5`# .2+h! [.rotate]#`mcounteren.HPM5`# .2+h! [.rotate]#`scounteren.HPM5`# 2+^.>! `
|
|
233
|
+
.2+h! [.rotate]#`hcounteren.HPM5`# .2+h! [.rotate]#`mcounteren.HPM5`# .2+h! [.rotate]#`scounteren.HPM5`# 2+^.>! `hpmcounter5` access behavior
|
|
234
234
|
.>h! VS-mode .>h! VU-mode
|
|
235
235
|
|
|
236
236
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -267,7 +267,7 @@ fields:
|
|
|
267
267
|
|
|
268
268
|
[separator="!",%autowidth]
|
|
269
269
|
!===
|
|
270
|
-
.2+h! [.rotate]#`hcounteren.HPM6`# .2+h! [.rotate]#`mcounteren.HPM6`# .2+h! [.rotate]#`scounteren.HPM6`# 2+^.>! `
|
|
270
|
+
.2+h! [.rotate]#`hcounteren.HPM6`# .2+h! [.rotate]#`mcounteren.HPM6`# .2+h! [.rotate]#`scounteren.HPM6`# 2+^.>! `hpmcounter6` access behavior
|
|
271
271
|
.>h! VS-mode .>h! VU-mode
|
|
272
272
|
|
|
273
273
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -304,7 +304,7 @@ fields:
|
|
|
304
304
|
|
|
305
305
|
[separator="!",%autowidth]
|
|
306
306
|
!===
|
|
307
|
-
.2+h! [.rotate]#`hcounteren.HPM7`# .2+h! [.rotate]#`mcounteren.HPM7`# .2+h! [.rotate]#`scounteren.HPM7`# 2+^.>! `
|
|
307
|
+
.2+h! [.rotate]#`hcounteren.HPM7`# .2+h! [.rotate]#`mcounteren.HPM7`# .2+h! [.rotate]#`scounteren.HPM7`# 2+^.>! `hpmcounter7` access behavior
|
|
308
308
|
.>h! VS-mode .>h! VU-mode
|
|
309
309
|
|
|
310
310
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -341,7 +341,7 @@ fields:
|
|
|
341
341
|
|
|
342
342
|
[separator="!",%autowidth]
|
|
343
343
|
!===
|
|
344
|
-
.2+h! [.rotate]#`hcounteren.HPM8`# .2+h! [.rotate]#`mcounteren.HPM8`# .2+h! [.rotate]#`scounteren.HPM8`# 2+^.>! `
|
|
344
|
+
.2+h! [.rotate]#`hcounteren.HPM8`# .2+h! [.rotate]#`mcounteren.HPM8`# .2+h! [.rotate]#`scounteren.HPM8`# 2+^.>! `hpmcounter8` access behavior
|
|
345
345
|
.>h! VS-mode .>h! VU-mode
|
|
346
346
|
|
|
347
347
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -378,7 +378,7 @@ fields:
|
|
|
378
378
|
|
|
379
379
|
[separator="!",%autowidth]
|
|
380
380
|
!===
|
|
381
|
-
.2+h! [.rotate]#`hcounteren.HPM9`# .2+h! [.rotate]#`mcounteren.HPM9`# .2+h! [.rotate]#`scounteren.HPM9`# 2+^.>! `
|
|
381
|
+
.2+h! [.rotate]#`hcounteren.HPM9`# .2+h! [.rotate]#`mcounteren.HPM9`# .2+h! [.rotate]#`scounteren.HPM9`# 2+^.>! `hpmcounter9` access behavior
|
|
382
382
|
.>h! VS-mode .>h! VU-mode
|
|
383
383
|
|
|
384
384
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -415,7 +415,7 @@ fields:
|
|
|
415
415
|
|
|
416
416
|
[separator="!",%autowidth]
|
|
417
417
|
!===
|
|
418
|
-
.2+h! [.rotate]#`hcounteren.HPM10`# .2+h! [.rotate]#`mcounteren.HPM10`# .2+h! [.rotate]#`scounteren.HPM10`# 2+^.>! `
|
|
418
|
+
.2+h! [.rotate]#`hcounteren.HPM10`# .2+h! [.rotate]#`mcounteren.HPM10`# .2+h! [.rotate]#`scounteren.HPM10`# 2+^.>! `hpmcounter10` access behavior
|
|
419
419
|
.>h! VS-mode .>h! VU-mode
|
|
420
420
|
|
|
421
421
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -452,7 +452,7 @@ fields:
|
|
|
452
452
|
|
|
453
453
|
[separator="!",%autowidth]
|
|
454
454
|
!===
|
|
455
|
-
.2+h! [.rotate]#`hcounteren.HPM11`# .2+h! [.rotate]#`mcounteren.HPM11`# .2+h! [.rotate]#`scounteren.HPM11`# 2+^.>! `
|
|
455
|
+
.2+h! [.rotate]#`hcounteren.HPM11`# .2+h! [.rotate]#`mcounteren.HPM11`# .2+h! [.rotate]#`scounteren.HPM11`# 2+^.>! `hpmcounter11` access behavior
|
|
456
456
|
.>h! VS-mode .>h! VU-mode
|
|
457
457
|
|
|
458
458
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -489,7 +489,7 @@ fields:
|
|
|
489
489
|
|
|
490
490
|
[separator="!",%autowidth]
|
|
491
491
|
!===
|
|
492
|
-
.2+h! [.rotate]#`hcounteren.HPM12`# .2+h! [.rotate]#`mcounteren.HPM12`# .2+h! [.rotate]#`scounteren.HPM12`# 2+^.>! `
|
|
492
|
+
.2+h! [.rotate]#`hcounteren.HPM12`# .2+h! [.rotate]#`mcounteren.HPM12`# .2+h! [.rotate]#`scounteren.HPM12`# 2+^.>! `hpmcounter12` access behavior
|
|
493
493
|
.>h! VS-mode .>h! VU-mode
|
|
494
494
|
|
|
495
495
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -526,7 +526,7 @@ fields:
|
|
|
526
526
|
|
|
527
527
|
[separator="!",%autowidth]
|
|
528
528
|
!===
|
|
529
|
-
.2+h! [.rotate]#`hcounteren.HPM13`# .2+h! [.rotate]#`mcounteren.HPM13`# .2+h! [.rotate]#`scounteren.HPM13`# 2+^.>! `
|
|
529
|
+
.2+h! [.rotate]#`hcounteren.HPM13`# .2+h! [.rotate]#`mcounteren.HPM13`# .2+h! [.rotate]#`scounteren.HPM13`# 2+^.>! `hpmcounter13` access behavior
|
|
530
530
|
.>h! VS-mode .>h! VU-mode
|
|
531
531
|
|
|
532
532
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -563,7 +563,7 @@ fields:
|
|
|
563
563
|
|
|
564
564
|
[separator="!",%autowidth]
|
|
565
565
|
!===
|
|
566
|
-
.2+h! [.rotate]#`hcounteren.HPM14`# .2+h! [.rotate]#`mcounteren.HPM14`# .2+h! [.rotate]#`scounteren.HPM14`# 2+^.>! `
|
|
566
|
+
.2+h! [.rotate]#`hcounteren.HPM14`# .2+h! [.rotate]#`mcounteren.HPM14`# .2+h! [.rotate]#`scounteren.HPM14`# 2+^.>! `hpmcounter14` access behavior
|
|
567
567
|
.>h! VS-mode .>h! VU-mode
|
|
568
568
|
|
|
569
569
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -600,7 +600,7 @@ fields:
|
|
|
600
600
|
|
|
601
601
|
[separator="!",%autowidth]
|
|
602
602
|
!===
|
|
603
|
-
.2+h! [.rotate]#`hcounteren.HPM15`# .2+h! [.rotate]#`mcounteren.HPM15`# .2+h! [.rotate]#`scounteren.HPM15`# 2+^.>! `
|
|
603
|
+
.2+h! [.rotate]#`hcounteren.HPM15`# .2+h! [.rotate]#`mcounteren.HPM15`# .2+h! [.rotate]#`scounteren.HPM15`# 2+^.>! `hpmcounter15` access behavior
|
|
604
604
|
.>h! VS-mode .>h! VU-mode
|
|
605
605
|
|
|
606
606
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -637,7 +637,7 @@ fields:
|
|
|
637
637
|
|
|
638
638
|
[separator="!",%autowidth]
|
|
639
639
|
!===
|
|
640
|
-
.2+h! [.rotate]#`hcounteren.HPM16`# .2+h! [.rotate]#`mcounteren.HPM16`# .2+h! [.rotate]#`scounteren.HPM16`# 2+^.>! `
|
|
640
|
+
.2+h! [.rotate]#`hcounteren.HPM16`# .2+h! [.rotate]#`mcounteren.HPM16`# .2+h! [.rotate]#`scounteren.HPM16`# 2+^.>! `hpmcounter16` access behavior
|
|
641
641
|
.>h! VS-mode .>h! VU-mode
|
|
642
642
|
|
|
643
643
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -674,7 +674,7 @@ fields:
|
|
|
674
674
|
|
|
675
675
|
[separator="!",%autowidth]
|
|
676
676
|
!===
|
|
677
|
-
.2+h! [.rotate]#`hcounteren.HPM17`# .2+h! [.rotate]#`mcounteren.HPM17`# .2+h! [.rotate]#`scounteren.HPM17`# 2+^.>! `
|
|
677
|
+
.2+h! [.rotate]#`hcounteren.HPM17`# .2+h! [.rotate]#`mcounteren.HPM17`# .2+h! [.rotate]#`scounteren.HPM17`# 2+^.>! `hpmcounter17` access behavior
|
|
678
678
|
.>h! VS-mode .>h! VU-mode
|
|
679
679
|
|
|
680
680
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -711,7 +711,7 @@ fields:
|
|
|
711
711
|
|
|
712
712
|
[separator="!",%autowidth]
|
|
713
713
|
!===
|
|
714
|
-
.2+h! [.rotate]#`hcounteren.HPM18`# .2+h! [.rotate]#`mcounteren.HPM18`# .2+h! [.rotate]#`scounteren.HPM18`# 2+^.>! `
|
|
714
|
+
.2+h! [.rotate]#`hcounteren.HPM18`# .2+h! [.rotate]#`mcounteren.HPM18`# .2+h! [.rotate]#`scounteren.HPM18`# 2+^.>! `hpmcounter18` access behavior
|
|
715
715
|
.>h! VS-mode .>h! VU-mode
|
|
716
716
|
|
|
717
717
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -748,7 +748,7 @@ fields:
|
|
|
748
748
|
|
|
749
749
|
[separator="!",%autowidth]
|
|
750
750
|
!===
|
|
751
|
-
.2+h! [.rotate]#`hcounteren.HPM19`# .2+h! [.rotate]#`mcounteren.HPM19`# .2+h! [.rotate]#`scounteren.HPM19`# 2+^.>! `
|
|
751
|
+
.2+h! [.rotate]#`hcounteren.HPM19`# .2+h! [.rotate]#`mcounteren.HPM19`# .2+h! [.rotate]#`scounteren.HPM19`# 2+^.>! `hpmcounter19` access behavior
|
|
752
752
|
.>h! VS-mode .>h! VU-mode
|
|
753
753
|
|
|
754
754
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -785,7 +785,7 @@ fields:
|
|
|
785
785
|
|
|
786
786
|
[separator="!",%autowidth]
|
|
787
787
|
!===
|
|
788
|
-
.2+h! [.rotate]#`hcounteren.HPM20`# .2+h! [.rotate]#`mcounteren.HPM20`# .2+h! [.rotate]#`scounteren.HPM20`# 2+^.>! `
|
|
788
|
+
.2+h! [.rotate]#`hcounteren.HPM20`# .2+h! [.rotate]#`mcounteren.HPM20`# .2+h! [.rotate]#`scounteren.HPM20`# 2+^.>! `hpmcounter20` access behavior
|
|
789
789
|
.>h! VS-mode .>h! VU-mode
|
|
790
790
|
|
|
791
791
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -822,7 +822,7 @@ fields:
|
|
|
822
822
|
|
|
823
823
|
[separator="!",%autowidth]
|
|
824
824
|
!===
|
|
825
|
-
.2+h! [.rotate]#`hcounteren.HPM21`# .2+h! [.rotate]#`mcounteren.HPM21`# .2+h! [.rotate]#`scounteren.HPM21`# 2+^.>! `
|
|
825
|
+
.2+h! [.rotate]#`hcounteren.HPM21`# .2+h! [.rotate]#`mcounteren.HPM21`# .2+h! [.rotate]#`scounteren.HPM21`# 2+^.>! `hpmcounter21` access behavior
|
|
826
826
|
.>h! VS-mode .>h! VU-mode
|
|
827
827
|
|
|
828
828
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -859,7 +859,7 @@ fields:
|
|
|
859
859
|
|
|
860
860
|
[separator="!",%autowidth]
|
|
861
861
|
!===
|
|
862
|
-
.2+h! [.rotate]#`hcounteren.HPM22`# .2+h! [.rotate]#`mcounteren.HPM22`# .2+h! [.rotate]#`scounteren.HPM22`# 2+^.>! `
|
|
862
|
+
.2+h! [.rotate]#`hcounteren.HPM22`# .2+h! [.rotate]#`mcounteren.HPM22`# .2+h! [.rotate]#`scounteren.HPM22`# 2+^.>! `hpmcounter22` access behavior
|
|
863
863
|
.>h! VS-mode .>h! VU-mode
|
|
864
864
|
|
|
865
865
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -896,7 +896,7 @@ fields:
|
|
|
896
896
|
|
|
897
897
|
[separator="!",%autowidth]
|
|
898
898
|
!===
|
|
899
|
-
.2+h! [.rotate]#`hcounteren.HPM23`# .2+h! [.rotate]#`mcounteren.HPM23`# .2+h! [.rotate]#`scounteren.HPM23`# 2+^.>! `
|
|
899
|
+
.2+h! [.rotate]#`hcounteren.HPM23`# .2+h! [.rotate]#`mcounteren.HPM23`# .2+h! [.rotate]#`scounteren.HPM23`# 2+^.>! `hpmcounter23` access behavior
|
|
900
900
|
.>h! VS-mode .>h! VU-mode
|
|
901
901
|
|
|
902
902
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -933,7 +933,7 @@ fields:
|
|
|
933
933
|
|
|
934
934
|
[separator="!",%autowidth]
|
|
935
935
|
!===
|
|
936
|
-
.2+h! [.rotate]#`hcounteren.HPM24`# .2+h! [.rotate]#`mcounteren.HPM24`# .2+h! [.rotate]#`scounteren.HPM24`# 2+^.>! `
|
|
936
|
+
.2+h! [.rotate]#`hcounteren.HPM24`# .2+h! [.rotate]#`mcounteren.HPM24`# .2+h! [.rotate]#`scounteren.HPM24`# 2+^.>! `hpmcounter24` access behavior
|
|
937
937
|
.>h! VS-mode .>h! VU-mode
|
|
938
938
|
|
|
939
939
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -970,7 +970,7 @@ fields:
|
|
|
970
970
|
|
|
971
971
|
[separator="!",%autowidth]
|
|
972
972
|
!===
|
|
973
|
-
.2+h! [.rotate]#`hcounteren.HPM25`# .2+h! [.rotate]#`mcounteren.HPM25`# .2+h! [.rotate]#`scounteren.HPM25`# 2+^.>! `
|
|
973
|
+
.2+h! [.rotate]#`hcounteren.HPM25`# .2+h! [.rotate]#`mcounteren.HPM25`# .2+h! [.rotate]#`scounteren.HPM25`# 2+^.>! `hpmcounter25` access behavior
|
|
974
974
|
.>h! VS-mode .>h! VU-mode
|
|
975
975
|
|
|
976
976
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -1007,7 +1007,7 @@ fields:
|
|
|
1007
1007
|
|
|
1008
1008
|
[separator="!",%autowidth]
|
|
1009
1009
|
!===
|
|
1010
|
-
.2+h! [.rotate]#`hcounteren.HPM26`# .2+h! [.rotate]#`mcounteren.HPM26`# .2+h! [.rotate]#`scounteren.HPM26`# 2+^.>! `
|
|
1010
|
+
.2+h! [.rotate]#`hcounteren.HPM26`# .2+h! [.rotate]#`mcounteren.HPM26`# .2+h! [.rotate]#`scounteren.HPM26`# 2+^.>! `hpmcounter26` access behavior
|
|
1011
1011
|
.>h! VS-mode .>h! VU-mode
|
|
1012
1012
|
|
|
1013
1013
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -1044,7 +1044,7 @@ fields:
|
|
|
1044
1044
|
|
|
1045
1045
|
[separator="!",%autowidth]
|
|
1046
1046
|
!===
|
|
1047
|
-
.2+h! [.rotate]#`hcounteren.HPM27`# .2+h! [.rotate]#`mcounteren.HPM27`# .2+h! [.rotate]#`scounteren.HPM27`# 2+^.>! `
|
|
1047
|
+
.2+h! [.rotate]#`hcounteren.HPM27`# .2+h! [.rotate]#`mcounteren.HPM27`# .2+h! [.rotate]#`scounteren.HPM27`# 2+^.>! `hpmcounter27` access behavior
|
|
1048
1048
|
.>h! VS-mode .>h! VU-mode
|
|
1049
1049
|
|
|
1050
1050
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -1081,7 +1081,7 @@ fields:
|
|
|
1081
1081
|
|
|
1082
1082
|
[separator="!",%autowidth]
|
|
1083
1083
|
!===
|
|
1084
|
-
.2+h! [.rotate]#`hcounteren.HPM28`# .2+h! [.rotate]#`mcounteren.HPM28`# .2+h! [.rotate]#`scounteren.HPM28`# 2+^.>! `
|
|
1084
|
+
.2+h! [.rotate]#`hcounteren.HPM28`# .2+h! [.rotate]#`mcounteren.HPM28`# .2+h! [.rotate]#`scounteren.HPM28`# 2+^.>! `hpmcounter28` access behavior
|
|
1085
1085
|
.>h! VS-mode .>h! VU-mode
|
|
1086
1086
|
|
|
1087
1087
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -1118,7 +1118,7 @@ fields:
|
|
|
1118
1118
|
|
|
1119
1119
|
[separator="!",%autowidth]
|
|
1120
1120
|
!===
|
|
1121
|
-
.2+h! [.rotate]#`hcounteren.HPM29`# .2+h! [.rotate]#`mcounteren.HPM29`# .2+h! [.rotate]#`scounteren.HPM29`# 2+^.>! `
|
|
1121
|
+
.2+h! [.rotate]#`hcounteren.HPM29`# .2+h! [.rotate]#`mcounteren.HPM29`# .2+h! [.rotate]#`scounteren.HPM29`# 2+^.>! `hpmcounter29` access behavior
|
|
1122
1122
|
.>h! VS-mode .>h! VU-mode
|
|
1123
1123
|
|
|
1124
1124
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -1155,7 +1155,7 @@ fields:
|
|
|
1155
1155
|
|
|
1156
1156
|
[separator="!",%autowidth]
|
|
1157
1157
|
!===
|
|
1158
|
-
.2+h! [.rotate]#`hcounteren.HPM30`# .2+h! [.rotate]#`mcounteren.HPM30`# .2+h! [.rotate]#`scounteren.HPM30`# 2+^.>! `
|
|
1158
|
+
.2+h! [.rotate]#`hcounteren.HPM30`# .2+h! [.rotate]#`mcounteren.HPM30`# .2+h! [.rotate]#`scounteren.HPM30`# 2+^.>! `hpmcounter30` access behavior
|
|
1159
1159
|
.>h! VS-mode .>h! VU-mode
|
|
1160
1160
|
|
|
1161
1161
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -1192,7 +1192,7 @@ fields:
|
|
|
1192
1192
|
|
|
1193
1193
|
[separator="!",%autowidth]
|
|
1194
1194
|
!===
|
|
1195
|
-
.2+h! [.rotate]#`hcounteren.HPM31`# .2+h! [.rotate]#`mcounteren.HPM31`# .2+h! [.rotate]#`scounteren.HPM31`# 2+^.>! `
|
|
1195
|
+
.2+h! [.rotate]#`hcounteren.HPM31`# .2+h! [.rotate]#`mcounteren.HPM31`# .2+h! [.rotate]#`scounteren.HPM31`# 2+^.>! `hpmcounter31` access behavior
|
|
1196
1196
|
.>h! VS-mode .>h! VU-mode
|
|
1197
1197
|
|
|
1198
1198
|
! 0 ! 0 ! - ! `IllegalInstruction` ! `IllegalInstruction`
|
|
@@ -289,6 +289,27 @@ fields:
|
|
|
289
289
|
return 0;
|
|
290
290
|
}
|
|
291
291
|
return csr_value.SSE;
|
|
292
|
+
LPE:
|
|
293
|
+
location: 2
|
|
294
|
+
description: |
|
|
295
|
+
*Landing Pad Enable*
|
|
296
|
+
|
|
297
|
+
When the LPE field is set to 1, the Zicfilp extension is enabled in
|
|
298
|
+
VS-mode. When the LPE field is 0, the Zicfilp extension is not enabled
|
|
299
|
+
in VS-mode and the following rules apply to VS-mode:
|
|
300
|
+
|
|
301
|
+
* The hart does not update the `ELP` state; it remains as `NO_LP_EXPECTED`.
|
|
302
|
+
* The `LPAD` instruction operates as a no-op.
|
|
303
|
+
definedBy:
|
|
304
|
+
extension:
|
|
305
|
+
name: Zicfilp
|
|
306
|
+
type: RW
|
|
307
|
+
reset_value: UNDEFINED_LEGAL
|
|
308
|
+
sw_write(csr_value): |
|
|
309
|
+
if (CSR[menvcfg].LPE == 0){
|
|
310
|
+
return 0;
|
|
311
|
+
}
|
|
312
|
+
return csr_value.LPE;
|
|
292
313
|
FIOM:
|
|
293
314
|
location: 0
|
|
294
315
|
description: |
|
|
@@ -336,4 +357,8 @@ sw_read(): |
|
|
|
336
357
|
# henvcfg.SSE must read-as-zero
|
|
337
358
|
value = value & ~(1 `<< 3);
|
|
338
359
|
}
|
|
360
|
+
if (implemented?(ExtensionName::Zicfilp) && CSR[menvcfg].LPE == 0) {
|
|
361
|
+
# henvcfg.LPE must read-as-zero
|
|
362
|
+
value = value & ~(1 `<< 2);
|
|
363
|
+
}
|
|
339
364
|
return value;
|
|
@@ -10,9 +10,9 @@ address: 0x64a
|
|
|
10
10
|
writable: true
|
|
11
11
|
long_name: Hypervisor Trap Instruction Register
|
|
12
12
|
description: |
|
|
13
|
-
When a trap is taken into HS-mode,
|
|
13
|
+
When a trap is taken into HS-mode, htinst is written with a value that, if nonzero,
|
|
14
14
|
provides information about the instruction that trapped, to assist software in handling the trap.
|
|
15
|
-
The values that may be written to
|
|
15
|
+
The values that may be written to htinst on a trap are documented in TODO.
|
|
16
16
|
|
|
17
17
|
htinst is a WARL register that need only be able to hold the values that the implementation may automatically write to it on a trap.
|
|
18
18
|
priv_mode: S
|
|
@@ -34,7 +34,7 @@ fields:
|
|
|
34
34
|
|| (TINST_VALUE_ON_LOAD_ADDRESS_MISALIGNED != "always zero")
|
|
35
35
|
|| (TINST_VALUE_ON_LOAD_ACCESS_FAULT != "always zero")
|
|
36
36
|
|| (TINST_VALUE_ON_STORE_AMO_ADDRESS_MISALIGNED != "always zero")
|
|
37
|
-
|| (TINST_VALUE_ON_STORE_AMO_ACCESS_FAULT != "
|
|
37
|
+
|| (TINST_VALUE_ON_STORE_AMO_ACCESS_FAULT != "always zero")
|
|
38
38
|
|| (TINST_VALUE_ON_UCALL != "always zero")
|
|
39
39
|
|| (TINST_VALUE_ON_SCALL != "always zero")
|
|
40
40
|
|| (TINST_VALUE_ON_MCALL != "always zero")
|
|
@@ -19,8 +19,8 @@ description: |
|
|
|
19
19
|
Otherwise, for misaligned loads and stores that cause guest-page faults, a nonzero guest physical address in htval corresponds to the faulting portion of the access as indicated by the virtual address in stval. For instruction guest-page faults on systems with variable-length instructions, a nonzero htval corresponds to the faulting portion of the instruction as indicated by the virtual address in stval.
|
|
20
20
|
|
|
21
21
|
htval is a WARL register that must be able to hold zero and may be capable of holding only an arbitrary subset of other 2-bit-shifted guest physical addresses, if any.
|
|
22
|
-
priv_mode:
|
|
23
|
-
length:
|
|
22
|
+
priv_mode: S
|
|
23
|
+
length: SXLEN
|
|
24
24
|
definedBy:
|
|
25
25
|
extension:
|
|
26
26
|
name: H
|
|
@@ -38,5 +38,5 @@ fields:
|
|
|
38
38
|
return CsrFieldType::RO;
|
|
39
39
|
}
|
|
40
40
|
description: |
|
|
41
|
-
Exception-specific information for a trap into
|
|
41
|
+
Exception-specific information for a trap into HS-mode.
|
|
42
42
|
reset_value: UNDEFINED_LEGAL
|
|
@@ -34,7 +34,7 @@ fields:
|
|
|
34
34
|
|| (TINST_VALUE_ON_LOAD_ADDRESS_MISALIGNED != "always zero")
|
|
35
35
|
|| (TINST_VALUE_ON_LOAD_ACCESS_FAULT != "always zero")
|
|
36
36
|
|| (TINST_VALUE_ON_STORE_AMO_ADDRESS_MISALIGNED != "always zero")
|
|
37
|
-
|| (TINST_VALUE_ON_STORE_AMO_ACCESS_FAULT != "
|
|
37
|
+
|| (TINST_VALUE_ON_STORE_AMO_ACCESS_FAULT != "always zero")
|
|
38
38
|
|| (TINST_VALUE_ON_UCALL != "always zero")
|
|
39
39
|
|| (TINST_VALUE_ON_SCALL != "always zero")
|
|
40
40
|
|| (TINST_VALUE_ON_MCALL != "always zero")
|
|
@@ -30,17 +30,19 @@ fields:
|
|
|
30
30
|
Bits PHYS_ADDR_WIDTH-1:2 of the address specifier for PMP entry 0
|
|
31
31
|
(or, if `pmp1cfg.A` == TOR, for PMP entry 1).
|
|
32
32
|
type(): |
|
|
33
|
-
if (
|
|
33
|
+
if (NUM_USABLE_PMP_ENTRIES > 0) {
|
|
34
34
|
return CsrFieldType::RW;
|
|
35
35
|
} else {
|
|
36
|
+
# entry is either not implemented or implemented as read-only zero
|
|
36
37
|
return CsrFieldType::RO;
|
|
37
38
|
}
|
|
38
39
|
reset_value(): |
|
|
39
40
|
return 0;
|
|
40
41
|
sw_write(csr_value): |
|
|
41
|
-
if (
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
if (NUM_USABLE_PMP_ENTRIES <= 0) {
|
|
43
|
+
# entry is not usable (not implemented or read-only zero)
|
|
44
|
+
return 0;
|
|
45
|
+
} else if (csr_value.ADDR >= ((1 `<< (PHYS_ADDR_WIDTH - 2)) - 1)) {
|
|
44
46
|
return UNDEFINED_LEGAL_DETERMINISTIC;
|
|
45
47
|
} else {
|
|
46
48
|
return csr_value.ADDR;
|
|
@@ -30,17 +30,19 @@ fields:
|
|
|
30
30
|
Bits PHYS_ADDR_WIDTH-1:2 of the address specifier for PMP entry 1
|
|
31
31
|
(or, if `pmp2cfg.A` == TOR, for PMP entry 2).
|
|
32
32
|
type(): |
|
|
33
|
-
if (
|
|
33
|
+
if (NUM_USABLE_PMP_ENTRIES > 1) {
|
|
34
34
|
return CsrFieldType::RW;
|
|
35
35
|
} else {
|
|
36
|
+
# entry is either not implemented or implemented as read-only zero
|
|
36
37
|
return CsrFieldType::RO;
|
|
37
38
|
}
|
|
38
39
|
reset_value(): |
|
|
39
40
|
return 0;
|
|
40
41
|
sw_write(csr_value): |
|
|
41
|
-
if (
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
if (NUM_USABLE_PMP_ENTRIES <= 1) {
|
|
43
|
+
# entry is not usable (not implemented or read-only zero)
|
|
44
|
+
return 0;
|
|
45
|
+
} else if (csr_value.ADDR >= ((1 `<< (PHYS_ADDR_WIDTH - 2)) - 1)) {
|
|
44
46
|
return UNDEFINED_LEGAL_DETERMINISTIC;
|
|
45
47
|
} else {
|
|
46
48
|
return csr_value.ADDR;
|
|
@@ -30,17 +30,19 @@ fields:
|
|
|
30
30
|
Bits PHYS_ADDR_WIDTH-1:2 of the address specifier for PMP entry 10
|
|
31
31
|
(or, if `pmp11cfg.A` == TOR, for PMP entry 11).
|
|
32
32
|
type(): |
|
|
33
|
-
if (
|
|
33
|
+
if (NUM_USABLE_PMP_ENTRIES > 10) {
|
|
34
34
|
return CsrFieldType::RW;
|
|
35
35
|
} else {
|
|
36
|
+
# entry is either not implemented or implemented as read-only zero
|
|
36
37
|
return CsrFieldType::RO;
|
|
37
38
|
}
|
|
38
39
|
reset_value(): |
|
|
39
40
|
return 0;
|
|
40
41
|
sw_write(csr_value): |
|
|
41
|
-
if (
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
if (NUM_USABLE_PMP_ENTRIES <= 10) {
|
|
43
|
+
# entry is not usable (not implemented or read-only zero)
|
|
44
|
+
return 0;
|
|
45
|
+
} else if (csr_value.ADDR >= ((1 `<< (PHYS_ADDR_WIDTH - 2)) - 1)) {
|
|
44
46
|
return UNDEFINED_LEGAL_DETERMINISTIC;
|
|
45
47
|
} else {
|
|
46
48
|
return csr_value.ADDR;
|
|
@@ -30,17 +30,19 @@ fields:
|
|
|
30
30
|
Bits PHYS_ADDR_WIDTH-1:2 of the address specifier for PMP entry 11
|
|
31
31
|
(or, if `pmp12cfg.A` == TOR, for PMP entry 12).
|
|
32
32
|
type(): |
|
|
33
|
-
if (
|
|
33
|
+
if (NUM_USABLE_PMP_ENTRIES > 11) {
|
|
34
34
|
return CsrFieldType::RW;
|
|
35
35
|
} else {
|
|
36
|
+
# entry is either not implemented or implemented as read-only zero
|
|
36
37
|
return CsrFieldType::RO;
|
|
37
38
|
}
|
|
38
39
|
reset_value(): |
|
|
39
40
|
return 0;
|
|
40
41
|
sw_write(csr_value): |
|
|
41
|
-
if (
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
if (NUM_USABLE_PMP_ENTRIES <= 11) {
|
|
43
|
+
# entry is not usable (not implemented or read-only zero)
|
|
44
|
+
return 0;
|
|
45
|
+
} else if (csr_value.ADDR >= ((1 `<< (PHYS_ADDR_WIDTH - 2)) - 1)) {
|
|
44
46
|
return UNDEFINED_LEGAL_DETERMINISTIC;
|
|
45
47
|
} else {
|
|
46
48
|
return csr_value.ADDR;
|
|
@@ -30,17 +30,19 @@ fields:
|
|
|
30
30
|
Bits PHYS_ADDR_WIDTH-1:2 of the address specifier for PMP entry 12
|
|
31
31
|
(or, if `pmp13cfg.A` == TOR, for PMP entry 13).
|
|
32
32
|
type(): |
|
|
33
|
-
if (
|
|
33
|
+
if (NUM_USABLE_PMP_ENTRIES > 12) {
|
|
34
34
|
return CsrFieldType::RW;
|
|
35
35
|
} else {
|
|
36
|
+
# entry is either not implemented or implemented as read-only zero
|
|
36
37
|
return CsrFieldType::RO;
|
|
37
38
|
}
|
|
38
39
|
reset_value(): |
|
|
39
40
|
return 0;
|
|
40
41
|
sw_write(csr_value): |
|
|
41
|
-
if (
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
if (NUM_USABLE_PMP_ENTRIES <= 12) {
|
|
43
|
+
# entry is not usable (not implemented or read-only zero)
|
|
44
|
+
return 0;
|
|
45
|
+
} else if (csr_value.ADDR >= ((1 `<< (PHYS_ADDR_WIDTH - 2)) - 1)) {
|
|
44
46
|
return UNDEFINED_LEGAL_DETERMINISTIC;
|
|
45
47
|
} else {
|
|
46
48
|
return csr_value.ADDR;
|