udb 0.1.17 → 0.1.18
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 +140 -5
- data/.data/cfgs/profile/RVA23S64.yaml +1 -1
- data/.data/cfgs/profile/RVA23p1S64.yaml +217 -0
- data/.data/cfgs/profile/RVB23S64.yaml +1 -1
- data/.data/cfgs/profile/RVB23p1S64.yaml +179 -0
- data/.data/cfgs/rv32-riscv-tests.yaml +134 -0
- data/.data/cfgs/rv32-vector.yaml +134 -0
- data/.data/cfgs/rv64-riscv-tests.yaml +134 -0
- data/.data/cfgs/rv64-vector.yaml +134 -0
- data/.data/spec/schemas/schema_defs.json +4 -1
- data/.data/spec/std/isa/csr/I/mcounteren.layout +7 -0
- data/.data/spec/std/isa/csr/I/mcounteren.yaml +7 -0
- data/.data/spec/std/isa/csr/Smcdeleg/scountinhibit.layout +111 -0
- data/.data/spec/std/isa/csr/Smcdeleg/scountinhibit.yaml +840 -0
- data/.data/spec/std/isa/csr/Smcntrpmf/mcyclecfg.yaml +2 -0
- data/.data/spec/std/isa/csr/Smcntrpmf/mcyclecfgh.yaml +2 -0
- data/.data/spec/std/isa/csr/Smcntrpmf/minstretcfg.yaml +2 -0
- data/.data/spec/std/isa/csr/Smcntrpmf/minstretcfgh.yaml +2 -0
- data/.data/spec/std/isa/csr/Sscofpmf/scountovf.layout +7 -0
- data/.data/spec/std/isa/csr/Sscofpmf/scountovf.yaml +7 -0
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter10.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter10h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter11.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter11h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter12.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter12h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter13.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter13h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter14.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter14h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter15.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter15h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter16.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter16h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter17.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter17h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter18.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter18h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter19.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter19h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter20.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter20h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter21.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter21h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter22.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter22h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter23.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter23h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter24.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter24h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter25.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter25h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter26.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter26h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter27.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter27h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter28.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter28h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter29.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter29h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter3.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter30.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter30h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter31.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter31h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter3h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter4.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter4h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter5.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter5h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter6.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter6h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter7.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter7h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter8.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter8h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter9.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounter9h.yaml +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounterN.layout +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmcounterNh.layout +2 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent10.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent10h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent11.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent11h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent12.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent12h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent13.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent13h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent14.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent14h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent15.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent15h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent16.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent16h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent17.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent17h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent18.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent18h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent19.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent19h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent20.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent20h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent21.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent21h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent22.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent22h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent23.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent23h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent24.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent24h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent25.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent25h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent26.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent26h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent27.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent27h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent28.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent28h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent29.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent29h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent3.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent30.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent30h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent31.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent31h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent3h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent4.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent4h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent5.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent5h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent6.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent6h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent7.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent7h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent8.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent8h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent9.yaml +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmevent9h.yaml +4 -4
- data/.data/spec/std/isa/csr/Zihpm/mhpmeventN.layout +4 -7
- data/.data/spec/std/isa/csr/Zihpm/mhpmeventNh.layout +4 -4
- data/.data/spec/std/isa/csr/Zkr/seed.yaml +75 -0
- data/.data/spec/std/isa/csr/hcontext.yaml +4 -4
- data/.data/spec/std/isa/csr/mcontext.yaml +4 -4
- data/.data/spec/std/isa/csr/mcycle.yaml +2 -0
- data/.data/spec/std/isa/csr/mcycleh.yaml +2 -0
- data/.data/spec/std/isa/csr/medeleg.yaml +72 -36
- data/.data/spec/std/isa/csr/menvcfg.yaml +12 -1
- data/.data/spec/std/isa/csr/menvcfgh.yaml +12 -0
- data/.data/spec/std/isa/csr/mideleg.yaml +13 -36
- data/.data/spec/std/isa/csr/mie.yaml +3 -6
- data/.data/spec/std/isa/csr/minstret.yaml +2 -0
- data/.data/spec/std/isa/csr/minstreth.yaml +2 -0
- data/.data/spec/std/isa/csr/mip.yaml +3 -6
- data/.data/spec/std/isa/csr/misa.yaml +3 -23
- data/.data/spec/std/isa/csr/mseccfg.yaml +27 -1
- data/.data/spec/std/isa/csr/mstatus.yaml +8 -2
- data/.data/spec/std/isa/csr/scontext.yaml +8 -4
- data/.data/spec/std/isa/csr/tcontrol.yaml +6 -2
- data/.data/spec/std/isa/csr/tdata2.yaml +6 -2
- data/.data/spec/std/isa/csr/tdata3.yaml +6 -2
- data/.data/spec/std/isa/ext/Sdext.yaml +58 -2
- data/.data/spec/std/isa/ext/Sm.yaml +2 -2
- data/.data/spec/std/isa/ext/Smcdeleg.yaml +7 -0
- data/.data/spec/std/isa/ext/Smmpm.yaml +8 -0
- data/.data/spec/std/isa/ext/Smnpm.yaml +19 -0
- data/.data/spec/std/isa/ext/Smpmpdeleg.yaml +33 -0
- data/.data/spec/std/isa/ext/Ssccfg.yaml +7 -0
- data/.data/spec/std/isa/ext/Ssnpm.yaml +8 -0
- data/.data/spec/std/isa/ext/Sspmp.yaml +44 -0
- data/.data/spec/std/isa/ext/Sspmpen.yaml +30 -0
- data/.data/spec/std/isa/ext/Zvabd.yaml +5 -1
- data/.data/spec/std/isa/ext/Zvfbdota32f.yaml +23 -0
- data/.data/spec/std/isa/ext/Zvzip.yaml +24 -0
- data/.data/spec/std/isa/inst/C/c.bnez.yaml +2 -2
- data/.data/spec/std/isa/inst/H/hlv.b.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hlv.bu.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hlv.d.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hlv.h.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hlv.hu.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hlv.w.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hlv.wu.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hlvx.hu.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hlvx.wu.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hsv.b.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hsv.d.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hsv.h.yaml +1 -1
- data/.data/spec/std/isa/inst/H/hsv.w.yaml +1 -1
- data/.data/spec/std/isa/inst/I/ld.yaml +9 -8
- data/.data/spec/std/isa/inst/I/sd.yaml +9 -8
- data/.data/spec/std/isa/inst/Q/fcvt.q.d.yaml +1 -1
- data/.data/spec/std/isa/inst/Q/flq.yaml +1 -1
- data/.data/spec/std/isa/inst/Sdext/dret.yaml +72 -6
- data/.data/spec/std/isa/inst/V/vfncvt.f.f.w.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vfncvt.f.x.w.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vfncvt.f.xu.w.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vfncvt.rod.f.f.w.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vfncvt.rtz.x.f.w.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vfncvt.rtz.xu.f.w.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vfncvt.x.f.w.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vfncvt.xu.f.w.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnclip.wi.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnclip.wv.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnclip.wx.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnclipu.wi.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnclipu.wv.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnclipu.wx.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnsra.wi.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnsra.wv.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnsra.wx.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnsrl.wi.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnsrl.wv.yaml +2 -2
- data/.data/spec/std/isa/inst/V/vnsrl.wx.yaml +2 -2
- data/.data/spec/std/isa/inst/Zfh/fcvt.h.s.yaml +28 -20
- data/.data/spec/std/isa/inst/Zfh/fcvt.s.h.yaml +35 -20
- data/.data/spec/std/isa/inst/Zvabd/vabd.vv.yaml +3 -3
- data/.data/spec/std/isa/inst/Zvabd/vabd.vx.yaml +69 -0
- data/.data/spec/std/isa/inst/Zvabd/vabdu.vv.yaml +3 -3
- data/.data/spec/std/isa/inst/Zvabd/{vabs.v.yaml → vabdu.vx.yaml} +17 -11
- data/.data/spec/std/isa/inst/Zvabd/vwabda.vv.yaml +1 -1
- data/.data/spec/std/isa/inst/Zvabd/vwabda.vx.yaml +73 -0
- data/.data/spec/std/isa/inst/Zvabd/vwabdau.vv.yaml +1 -1
- data/.data/spec/std/isa/inst/Zvabd/vwabdau.vx.yaml +74 -0
- data/.data/spec/std/isa/inst/Zvfbdota32f/vfbdota.vv.yaml +68 -0
- data/.data/spec/std/isa/inst/Zvzip/vpaire.vv.yaml +36 -0
- data/.data/spec/std/isa/inst/Zvzip/vpairo.vv.yaml +37 -0
- data/.data/spec/std/isa/inst/Zvzip/vunzipe.v.yaml +33 -0
- data/.data/spec/std/isa/inst/Zvzip/vunzipo.v.yaml +33 -0
- data/.data/spec/std/isa/inst/Zvzip/vzip.vv.yaml +37 -0
- data/.data/spec/std/isa/isa/builtin_functions.idl +51 -0
- data/.data/spec/std/isa/isa/globals.isa +117 -5
- data/.data/spec/std/isa/param/HCONTEXT_IMPLEMENTED.yaml +29 -0
- data/.data/spec/std/isa/param/{MCONTEXT_AVAILABLE.yaml → MCONTEXT_IMPLEMENTED.yaml} +3 -3
- data/.data/spec/std/isa/param/MEDELEG_DELEGATABLE.yaml +121 -0
- data/.data/spec/std/isa/param/MEI_INTR_IMPL.yaml +1 -1
- data/.data/spec/std/isa/param/MIDELEG_DELEGATABLE.yaml +177 -0
- data/.data/spec/std/isa/param/MSI_INTR_IMPL.yaml +1 -1
- data/.data/spec/std/isa/param/MTI_INTR_IMPL.yaml +1 -1
- data/.data/spec/std/isa/param/SCONTEXT_IMPLEMENTED.yaml +18 -0
- data/.data/spec/std/isa/param/SDTRIG_BREAKPOINT_REENTRANCY.yaml +45 -0
- data/.data/spec/std/isa/param/SDTRIG_ETRIGGER_SUPPORTED_EXCEPTIONS.yaml +37 -0
- data/.data/spec/std/isa/param/SDTRIG_ETRIGGER_SUPPORTED_TRIGGERS.yaml +25 -0
- data/.data/spec/std/isa/param/SDTRIG_ICOUNT_COUNT_HARDWIRED_1.yaml +23 -0
- data/.data/spec/std/isa/param/SDTRIG_ICOUNT_SELF_WRITE_SETS_PENDING.yaml +23 -0
- data/.data/spec/std/isa/param/SDTRIG_ICOUNT_SUPPORTED_TRIGGERS.yaml +25 -0
- data/.data/spec/std/isa/param/SDTRIG_ITRIGGER_SUPPORTED_INTERRUPTS.yaml +37 -0
- data/.data/spec/std/isa/param/SDTRIG_ITRIGGER_SUPPORTED_TRIGGERS.yaml +25 -0
- data/.data/spec/std/isa/param/SDTRIG_MAX_CHAIN_LENGTH.yaml +33 -0
- data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_EXECUTE_WRITABLE.yaml +22 -0
- data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_LOAD_WRITABLE.yaml +22 -0
- data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_MASKMAX6.yaml +26 -0
- data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_MATCH_LEGAL_VALUES.yaml +41 -0
- data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_SELECT_WRITABLE.yaml +22 -0
- data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_SIZE_LEGAL_VALUES.yaml +38 -0
- data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_STORE_WRITABLE.yaml +22 -0
- data/.data/spec/std/isa/param/SDTRIG_MCONTROL6_SUPPORTED_TRIGGERS.yaml +25 -0
- data/.data/spec/std/isa/param/SDTRIG_M_WRITABLE.yaml +17 -0
- data/.data/spec/std/isa/param/SDTRIG_NUM_TRIGGERS.yaml +22 -0
- data/.data/spec/std/isa/param/SDTRIG_S_WRITABLE.yaml +19 -0
- data/.data/spec/std/isa/param/SDTRIG_TEXTRA_MHSELECT_MCONTEXT_MATCH.yaml +24 -0
- data/.data/spec/std/isa/param/SDTRIG_TEXTRA_MHSELECT_VMID_MATCH.yaml +23 -0
- data/.data/spec/std/isa/param/SDTRIG_TEXTRA_MHVALUE_LEN.yaml +26 -0
- data/.data/spec/std/isa/param/SDTRIG_TEXTRA_SSELECT_ASID_MATCH.yaml +23 -0
- data/.data/spec/std/isa/param/SDTRIG_TEXTRA_SSELECT_SCONTEXT_MATCH.yaml +26 -0
- data/.data/spec/std/isa/param/SDTRIG_TEXTRA_SVALUE_LEN.yaml +26 -0
- data/.data/spec/std/isa/param/SDTRIG_U_WRITABLE.yaml +19 -0
- data/.data/spec/std/isa/param/SDTRIG_VS_WRITABLE.yaml +19 -0
- data/.data/spec/std/isa/param/SDTRIG_VU_WRITABLE.yaml +19 -0
- data/.data/spec/std/isa/param/SEI_INTR_IMPL.yaml +1 -1
- data/.data/spec/std/isa/param/SSEED_READ_ONLY_ZERO.yaml +28 -0
- data/.data/spec/std/isa/param/SSI_INTR_IMPL.yaml +1 -1
- data/.data/spec/std/isa/param/STI_INTR_IMPL.yaml +1 -1
- data/.data/spec/std/isa/param/TCONTROL_IMPLEMENTED.yaml +16 -0
- data/.data/spec/std/isa/param/TDATA2_IMPLEMENTED.yaml +26 -0
- data/.data/spec/std/isa/param/TDATA3_IMPLEMENTED.yaml +29 -0
- data/.data/spec/std/isa/param/USEED_READ_ONLY_ZERO.yaml +28 -0
- data/.data/spec/std/isa/profile/RVA23p1S64.yaml +37 -0
- data/.data/spec/std/isa/profile/RVB23p1S64.yaml +39 -0
- data/.data/spec/std/isa/profile_family/RVA.yaml +3 -1
- data/.data/spec/std/isa/profile_family/RVB.yaml +3 -1
- data/.data/spec/std/isa/profile_release/RVA23p1.yaml +30 -0
- data/.data/spec/std/isa/profile_release/RVB23p1.yaml +30 -0
- data/lib/udb/version.rb +1 -1
- metadata +65 -8
- data/.data/spec/std/isa/param/HCONTEXT_AVAILABLE.yaml +0 -19
- data/.data/spec/std/isa/param/VSEI_INTR_IMPL.yaml +0 -28
- data/.data/spec/std/isa/param/VSSI_INTR_IMPL.yaml +0 -28
- data/.data/spec/std/isa/param/VSTI_INTR_IMPL.yaml +0 -33
|
@@ -11,6 +11,8 @@ kind: csr
|
|
|
11
11
|
name: mhpmevent9
|
|
12
12
|
long_name: Machine Hardware Performance Counter 9 Control
|
|
13
13
|
address: 0x329
|
|
14
|
+
indirect_address: 0x49
|
|
15
|
+
indirect_slot: 2
|
|
14
16
|
writable: true
|
|
15
17
|
priv_mode: M
|
|
16
18
|
length: 64
|
|
@@ -18,13 +20,8 @@ description: |
|
|
|
18
20
|
Programmable hardware performance counter event selector
|
|
19
21
|
<% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %>
|
|
20
22
|
definedBy:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
name: Sm
|
|
24
|
-
- param:
|
|
25
|
-
name: HPM_COUNTER_EN
|
|
26
|
-
index: 9
|
|
27
|
-
equal: true
|
|
23
|
+
extension:
|
|
24
|
+
name: Sm
|
|
28
25
|
fields:
|
|
29
26
|
OF:
|
|
30
27
|
location: 63
|
|
@@ -11,6 +11,8 @@ kind: csr
|
|
|
11
11
|
name: mhpmevent9h
|
|
12
12
|
long_name: Machine Hardware Performance Counter 9 Control, High half
|
|
13
13
|
address: 0x729
|
|
14
|
+
indirect_address: 0x49
|
|
15
|
+
indirect_slot: 5
|
|
14
16
|
writable: true
|
|
15
17
|
priv_mode: M
|
|
16
18
|
length: 32
|
|
@@ -24,10 +26,8 @@ definedBy:
|
|
|
24
26
|
- extension:
|
|
25
27
|
name: Sm
|
|
26
28
|
- xlen: 32
|
|
27
|
-
-
|
|
28
|
-
name:
|
|
29
|
-
index: 9
|
|
30
|
-
equal: true
|
|
29
|
+
- extension:
|
|
30
|
+
name: Sscofpmf
|
|
31
31
|
fields:
|
|
32
32
|
OF:
|
|
33
33
|
location: 31
|
|
@@ -9,6 +9,8 @@ kind: csr
|
|
|
9
9
|
name: <%= "mhpmevent#{hpm_num}" %>
|
|
10
10
|
long_name: Machine Hardware Performance Counter <%= hpm_num %> Control
|
|
11
11
|
address: <%= "0x" + (0x320 + hpm_num).to_s(16).upcase %>
|
|
12
|
+
indirect_address: <%= "0x" + (0x40 + hpm_num).to_s(16).upcase %>
|
|
13
|
+
indirect_slot: 2
|
|
12
14
|
writable: true
|
|
13
15
|
priv_mode: M
|
|
14
16
|
length: 64
|
|
@@ -16,13 +18,8 @@ description: |
|
|
|
16
18
|
Programmable hardware performance counter event selector
|
|
17
19
|
<%% if ext?(:Sscofpmf) %> and overflow/filtering control<%% end %>
|
|
18
20
|
definedBy:
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
name: Sm
|
|
22
|
-
- param:
|
|
23
|
-
name: HPM_COUNTER_EN
|
|
24
|
-
index: <%= hpm_num %>
|
|
25
|
-
equal: true
|
|
21
|
+
extension:
|
|
22
|
+
name: Sm
|
|
26
23
|
fields:
|
|
27
24
|
OF:
|
|
28
25
|
location: 63
|
|
@@ -9,6 +9,8 @@ kind: csr
|
|
|
9
9
|
name: <%= "mhpmevent#{hpm_num}h" %>
|
|
10
10
|
long_name: Machine Hardware Performance Counter <%= hpm_num %> Control, High half
|
|
11
11
|
address: 0x<%= (0x720 + hpm_num).to_s(16).upcase %>
|
|
12
|
+
indirect_address: <%= "0x" + (0x40 + hpm_num).to_s(16).upcase %>
|
|
13
|
+
indirect_slot: 5
|
|
12
14
|
writable: true
|
|
13
15
|
priv_mode: M
|
|
14
16
|
length: 32
|
|
@@ -22,10 +24,8 @@ definedBy:
|
|
|
22
24
|
- extension:
|
|
23
25
|
name: Sm
|
|
24
26
|
- xlen: 32
|
|
25
|
-
-
|
|
26
|
-
name:
|
|
27
|
-
index: <%= hpm_num %>
|
|
28
|
-
equal: true
|
|
27
|
+
- extension:
|
|
28
|
+
name: Sscofpmf
|
|
29
29
|
fields:
|
|
30
30
|
OF:
|
|
31
31
|
location: 31
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
|
|
2
|
+
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
3
|
+
|
|
4
|
+
# yaml-language-server: $schema=../../../../schemas/csr_schema.json
|
|
5
|
+
|
|
6
|
+
$schema: "csr_schema.json#"
|
|
7
|
+
kind: csr
|
|
8
|
+
name: seed
|
|
9
|
+
long_name: Seed for cryptographic random bit generators
|
|
10
|
+
address: 0x015
|
|
11
|
+
writable: true
|
|
12
|
+
priv_mode: U
|
|
13
|
+
length: 32
|
|
14
|
+
description: |
|
|
15
|
+
The seed CSR provides an interface to a NIST SP 800-90B (Turan et al., 2018)
|
|
16
|
+
or BSI AIS-31 (Killmann & Schindler, 2011) compliant physical Entropy Source (ES).
|
|
17
|
+
|
|
18
|
+
The CSR provides up to 16 physical entropy bits that can be used to seed
|
|
19
|
+
cryptographic random bit generators. The write value is ignored by
|
|
20
|
+
implementations; the write is used to signal polling and flushing.
|
|
21
|
+
definedBy:
|
|
22
|
+
extension:
|
|
23
|
+
name: Zkr
|
|
24
|
+
fields:
|
|
25
|
+
OPST:
|
|
26
|
+
location: 31-30
|
|
27
|
+
description: |
|
|
28
|
+
Status bits returned by the entropy source.
|
|
29
|
+
|
|
30
|
+
Encodings are:
|
|
31
|
+
|
|
32
|
+
* 0 - BIST
|
|
33
|
+
* 1 - WAIT
|
|
34
|
+
* 2 - ES16
|
|
35
|
+
* 3 - DEAD
|
|
36
|
+
type: RW-H
|
|
37
|
+
sw_write(csr_value): |
|
|
38
|
+
write_seed();
|
|
39
|
+
return CSR[seed].OPST;
|
|
40
|
+
reset_value: 0
|
|
41
|
+
ENTROPY:
|
|
42
|
+
location: 15-0
|
|
43
|
+
description: |
|
|
44
|
+
Sixteen bits of randomness.
|
|
45
|
+
|
|
46
|
+
This field is valid only when `OPST` is ES16. When `OPST` is not ES16,
|
|
47
|
+
`ENTROPY` must be zero.
|
|
48
|
+
type: RW-H
|
|
49
|
+
sw_write(csr_value): |
|
|
50
|
+
return CSR[seed].ENTROPY;
|
|
51
|
+
reset_value: 0
|
|
52
|
+
sw_read(): |
|
|
53
|
+
# CSRRS/CSRRC/CSRRSI/CSRRCI are the CSR instructions with funct3[1] set.
|
|
54
|
+
# Bits 19:15 hold rs1 for the register forms and uimm for the immediate
|
|
55
|
+
# forms, so a single zero check covers rs1 == x0 and uimm == 0.
|
|
56
|
+
Boolean read_only_access = ($encoding[13] == 1'b1) && ($encoding[19:15] == 5'b00000);
|
|
57
|
+
|
|
58
|
+
if (read_only_access) {
|
|
59
|
+
raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (mode() == PrivilegeMode::U && CSR[mseccfg].USEED == 1'b0) {
|
|
63
|
+
raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
|
|
64
|
+
} else if (mode() == PrivilegeMode::S && CSR[mseccfg].SSEED == 1'b0) {
|
|
65
|
+
raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
|
|
66
|
+
} else if (mode() == PrivilegeMode::VS || mode() == PrivilegeMode::VU) {
|
|
67
|
+
if (CSR[mseccfg].SSEED == 1'b1) {
|
|
68
|
+
raise(ExceptionCode::VirtualInstruction, mode(), $encoding);
|
|
69
|
+
} else {
|
|
70
|
+
raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
# A single poll returns both the status and the entropy it goes with.
|
|
75
|
+
return read_seed();
|
|
@@ -39,8 +39,8 @@ fields:
|
|
|
39
39
|
unimplemented_csr($encoding);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
# check if HCONTEXT is
|
|
43
|
-
if (!
|
|
42
|
+
# check if HCONTEXT is implemented
|
|
43
|
+
if (!HCONTEXT_IMPLEMENTED) {
|
|
44
44
|
unimplemented_csr($encoding);
|
|
45
45
|
}
|
|
46
46
|
|
|
@@ -55,8 +55,8 @@ sw_read(): |
|
|
|
55
55
|
unimplemented_csr($encoding);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
# check if HCONTEXT is
|
|
59
|
-
if (!
|
|
58
|
+
# check if HCONTEXT is implemented
|
|
59
|
+
if (!HCONTEXT_IMPLEMENTED) {
|
|
60
60
|
unimplemented_csr($encoding);
|
|
61
61
|
}
|
|
62
62
|
|
|
@@ -39,8 +39,8 @@ fields:
|
|
|
39
39
|
implement 7 bits on RV32 and 14 bits on RV64.
|
|
40
40
|
reset_value: 0
|
|
41
41
|
sw_write(csr_value): |
|
|
42
|
-
# check if MCONTEXT is
|
|
43
|
-
if (!
|
|
42
|
+
# check if MCONTEXT is implemented
|
|
43
|
+
if (!MCONTEXT_IMPLEMENTED) {
|
|
44
44
|
unimplemented_csr($encoding);
|
|
45
45
|
}
|
|
46
46
|
|
|
@@ -48,8 +48,8 @@ fields:
|
|
|
48
48
|
Bits<14> hcontext_value = csr_value.HCONTEXT & ((14'1 << DBG_HCONTEXT_WIDTH) - 1);
|
|
49
49
|
return hcontext_value;
|
|
50
50
|
sw_read(): |
|
|
51
|
-
# check if MCONTEXT is
|
|
52
|
-
if (!
|
|
51
|
+
# check if MCONTEXT is implemented
|
|
52
|
+
if (!MCONTEXT_IMPLEMENTED) {
|
|
53
53
|
unimplemented_csr($encoding);
|
|
54
54
|
}
|
|
55
55
|
return $bits(CSR[mcontext]);
|
|
@@ -76,8 +76,10 @@ fields:
|
|
|
76
76
|
! 1 ! M ! S
|
|
77
77
|
!===
|
|
78
78
|
<%- end -%>
|
|
79
|
-
type:
|
|
80
|
-
|
|
79
|
+
type(): |
|
|
80
|
+
return MEDELEG_DELEGATABLE[0] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
81
|
+
reset_value(): |
|
|
82
|
+
return MEDELEG_DELEGATABLE[0] ? UNDEFINED_LEGAL : 0;
|
|
81
83
|
IAF:
|
|
82
84
|
location: 1
|
|
83
85
|
description: |
|
|
@@ -114,8 +116,10 @@ fields:
|
|
|
114
116
|
!===
|
|
115
117
|
<%- end -%>
|
|
116
118
|
|
|
117
|
-
type:
|
|
118
|
-
|
|
119
|
+
type(): |
|
|
120
|
+
return MEDELEG_DELEGATABLE[1] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
121
|
+
reset_value(): |
|
|
122
|
+
return MEDELEG_DELEGATABLE[1] ? UNDEFINED_LEGAL : 0;
|
|
119
123
|
II:
|
|
120
124
|
location: 2
|
|
121
125
|
description: |
|
|
@@ -151,8 +155,10 @@ fields:
|
|
|
151
155
|
! 1 ! M ! S
|
|
152
156
|
!===
|
|
153
157
|
<%- end -%>
|
|
154
|
-
type:
|
|
155
|
-
|
|
158
|
+
type(): |
|
|
159
|
+
return MEDELEG_DELEGATABLE[2] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
160
|
+
reset_value(): |
|
|
161
|
+
return MEDELEG_DELEGATABLE[2] ? UNDEFINED_LEGAL : 0;
|
|
156
162
|
B:
|
|
157
163
|
location: 3
|
|
158
164
|
description: |
|
|
@@ -188,8 +194,10 @@ fields:
|
|
|
188
194
|
! 1 ! M ! S
|
|
189
195
|
!===
|
|
190
196
|
<%- end -%>
|
|
191
|
-
type:
|
|
192
|
-
|
|
197
|
+
type(): |
|
|
198
|
+
return MEDELEG_DELEGATABLE[3] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
199
|
+
reset_value(): |
|
|
200
|
+
return MEDELEG_DELEGATABLE[3] ? UNDEFINED_LEGAL : 0;
|
|
193
201
|
LAM:
|
|
194
202
|
location: 4
|
|
195
203
|
description: |
|
|
@@ -230,8 +238,10 @@ fields:
|
|
|
230
238
|
!===
|
|
231
239
|
<%- end -%>
|
|
232
240
|
|
|
233
|
-
type:
|
|
234
|
-
|
|
241
|
+
type(): |
|
|
242
|
+
return MEDELEG_DELEGATABLE[4] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
243
|
+
reset_value(): |
|
|
244
|
+
return MEDELEG_DELEGATABLE[4] ? UNDEFINED_LEGAL : 0;
|
|
235
245
|
LAF:
|
|
236
246
|
location: 5
|
|
237
247
|
description: |
|
|
@@ -268,8 +278,10 @@ fields:
|
|
|
268
278
|
!===
|
|
269
279
|
<%- end -%>
|
|
270
280
|
|
|
271
|
-
type:
|
|
272
|
-
|
|
281
|
+
type(): |
|
|
282
|
+
return MEDELEG_DELEGATABLE[5] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
283
|
+
reset_value(): |
|
|
284
|
+
return MEDELEG_DELEGATABLE[5] ? UNDEFINED_LEGAL : 0;
|
|
273
285
|
SAM:
|
|
274
286
|
location: 6
|
|
275
287
|
description: |
|
|
@@ -310,8 +322,10 @@ fields:
|
|
|
310
322
|
!===
|
|
311
323
|
<%- end -%>
|
|
312
324
|
|
|
313
|
-
type:
|
|
314
|
-
|
|
325
|
+
type(): |
|
|
326
|
+
return MEDELEG_DELEGATABLE[6] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
327
|
+
reset_value(): |
|
|
328
|
+
return MEDELEG_DELEGATABLE[6] ? UNDEFINED_LEGAL : 0;
|
|
315
329
|
SAF:
|
|
316
330
|
location: 7
|
|
317
331
|
description: |
|
|
@@ -347,8 +361,10 @@ fields:
|
|
|
347
361
|
! 1 ! M ! S
|
|
348
362
|
!===
|
|
349
363
|
<%- end -%>
|
|
350
|
-
type:
|
|
351
|
-
|
|
364
|
+
type(): |
|
|
365
|
+
return MEDELEG_DELEGATABLE[7] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
366
|
+
reset_value(): |
|
|
367
|
+
return MEDELEG_DELEGATABLE[7] ? UNDEFINED_LEGAL : 0;
|
|
352
368
|
EU:
|
|
353
369
|
location: 8
|
|
354
370
|
description: |
|
|
@@ -385,8 +401,10 @@ fields:
|
|
|
385
401
|
!===
|
|
386
402
|
<%- end -%>
|
|
387
403
|
|
|
388
|
-
type:
|
|
389
|
-
|
|
404
|
+
type(): |
|
|
405
|
+
return MEDELEG_DELEGATABLE[8] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
406
|
+
reset_value(): |
|
|
407
|
+
return MEDELEG_DELEGATABLE[8] ? UNDEFINED_LEGAL : 0;
|
|
390
408
|
ES:
|
|
391
409
|
location: 9
|
|
392
410
|
description: |
|
|
@@ -409,8 +427,10 @@ fields:
|
|
|
409
427
|
! 0 ! M ! M
|
|
410
428
|
! 1 ! M ! (H)S
|
|
411
429
|
!===
|
|
412
|
-
type:
|
|
413
|
-
|
|
430
|
+
type(): |
|
|
431
|
+
return MEDELEG_DELEGATABLE[9] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
432
|
+
reset_value(): |
|
|
433
|
+
return MEDELEG_DELEGATABLE[9] ? UNDEFINED_LEGAL : 0;
|
|
414
434
|
EVS:
|
|
415
435
|
location: 10
|
|
416
436
|
description: |
|
|
@@ -433,8 +453,10 @@ fields:
|
|
|
433
453
|
! 0 ! M ! M
|
|
434
454
|
! 1 ! M ! (H)S
|
|
435
455
|
!===
|
|
436
|
-
type:
|
|
437
|
-
|
|
456
|
+
type(): |
|
|
457
|
+
return MEDELEG_DELEGATABLE[10] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
458
|
+
reset_value(): |
|
|
459
|
+
return MEDELEG_DELEGATABLE[10] ? UNDEFINED_LEGAL : 0;
|
|
438
460
|
definedBy:
|
|
439
461
|
extension:
|
|
440
462
|
name: H
|
|
@@ -483,8 +505,10 @@ fields:
|
|
|
483
505
|
! 1 ! M ! S
|
|
484
506
|
!===
|
|
485
507
|
<%- end -%>
|
|
486
|
-
type:
|
|
487
|
-
|
|
508
|
+
type(): |
|
|
509
|
+
return MEDELEG_DELEGATABLE[12] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
510
|
+
reset_value(): |
|
|
511
|
+
return MEDELEG_DELEGATABLE[12] ? UNDEFINED_LEGAL : 0;
|
|
488
512
|
LPF:
|
|
489
513
|
location: 13
|
|
490
514
|
description: |
|
|
@@ -521,8 +545,10 @@ fields:
|
|
|
521
545
|
!===
|
|
522
546
|
<%- end -%>
|
|
523
547
|
|
|
524
|
-
type:
|
|
525
|
-
|
|
548
|
+
type(): |
|
|
549
|
+
return MEDELEG_DELEGATABLE[13] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
550
|
+
reset_value(): |
|
|
551
|
+
return MEDELEG_DELEGATABLE[13] ? UNDEFINED_LEGAL : 0;
|
|
526
552
|
SPF:
|
|
527
553
|
location: 15
|
|
528
554
|
description: |
|
|
@@ -558,8 +584,10 @@ fields:
|
|
|
558
584
|
! 1 ! M ! S
|
|
559
585
|
!===
|
|
560
586
|
<%- end -%>
|
|
561
|
-
type:
|
|
562
|
-
|
|
587
|
+
type(): |
|
|
588
|
+
return MEDELEG_DELEGATABLE[15] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
589
|
+
reset_value(): |
|
|
590
|
+
return MEDELEG_DELEGATABLE[15] ? UNDEFINED_LEGAL : 0;
|
|
563
591
|
IGPF:
|
|
564
592
|
location: 20
|
|
565
593
|
description: |
|
|
@@ -582,8 +610,10 @@ fields:
|
|
|
582
610
|
! 0 ! M ! M
|
|
583
611
|
! 1 ! M ! HS
|
|
584
612
|
!===
|
|
585
|
-
type:
|
|
586
|
-
|
|
613
|
+
type(): |
|
|
614
|
+
return MEDELEG_DELEGATABLE[20] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
615
|
+
reset_value(): |
|
|
616
|
+
return MEDELEG_DELEGATABLE[20] ? UNDEFINED_LEGAL : 0;
|
|
587
617
|
definedBy:
|
|
588
618
|
extension:
|
|
589
619
|
name: H
|
|
@@ -610,8 +640,10 @@ fields:
|
|
|
610
640
|
! 1 ! M ! HS
|
|
611
641
|
!===
|
|
612
642
|
|
|
613
|
-
type:
|
|
614
|
-
|
|
643
|
+
type(): |
|
|
644
|
+
return MEDELEG_DELEGATABLE[21] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
645
|
+
reset_value(): |
|
|
646
|
+
return MEDELEG_DELEGATABLE[21] ? UNDEFINED_LEGAL : 0;
|
|
615
647
|
definedBy:
|
|
616
648
|
extension:
|
|
617
649
|
name: H
|
|
@@ -638,8 +670,10 @@ fields:
|
|
|
638
670
|
! 1 ! M ! HS
|
|
639
671
|
!===
|
|
640
672
|
|
|
641
|
-
type:
|
|
642
|
-
|
|
673
|
+
type(): |
|
|
674
|
+
return MEDELEG_DELEGATABLE[22] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
675
|
+
reset_value(): |
|
|
676
|
+
return MEDELEG_DELEGATABLE[22] ? UNDEFINED_LEGAL : 0;
|
|
643
677
|
definedBy:
|
|
644
678
|
extension:
|
|
645
679
|
name: H
|
|
@@ -665,8 +699,10 @@ fields:
|
|
|
665
699
|
! 0 ! M ! M
|
|
666
700
|
! 1 ! M ! HS
|
|
667
701
|
!===
|
|
668
|
-
type:
|
|
669
|
-
|
|
702
|
+
type(): |
|
|
703
|
+
return MEDELEG_DELEGATABLE[23] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
704
|
+
reset_value(): |
|
|
705
|
+
return MEDELEG_DELEGATABLE[23] ? UNDEFINED_LEGAL : 0;
|
|
670
706
|
definedBy:
|
|
671
707
|
extension:
|
|
672
708
|
name: H
|
|
@@ -88,7 +88,7 @@ description: |
|
|
|
88
88
|
NOTE: The Svade extension requires page-fault exceptions be raised when PTE
|
|
89
89
|
A/D bits need be set, hence Svade is implemented when ADUE=0.
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
The definition of the CDE field is furnished by the Smcdeleg extension.
|
|
92
92
|
|
|
93
93
|
The definition of the STCE field is furnished by the Sstc extension.
|
|
94
94
|
|
|
@@ -204,6 +204,17 @@ fields:
|
|
|
204
204
|
return (implemented?(ExtensionName::Svadu)) ? CsrFieldType::RW : CsrFieldType::RO;
|
|
205
205
|
reset_value(): |
|
|
206
206
|
return (implemented?(ExtensionName::Svadu)) ? UNDEFINED_LEGAL : 0;
|
|
207
|
+
CDE:
|
|
208
|
+
location: 60
|
|
209
|
+
description: |
|
|
210
|
+
*Counter Delegation Enable*
|
|
211
|
+
|
|
212
|
+
If the Smcdeleg extension is implemented, the CDE (Counter Delegation Enable) bit controls whether Zicntr and Zihpm counters can be delegated to S-mode. When CDE=1, the Smcdeleg extension is enabled, see <<smcdeleg>>. When CDE=0, the Smcdeleg and Ssccfg extensions appear to be not implemented. If Smcdeleg is not implemented, CDE is read-only zero.
|
|
213
|
+
definedBy:
|
|
214
|
+
extension:
|
|
215
|
+
name: Smcdeleg
|
|
216
|
+
type: RW
|
|
217
|
+
reset_value: UNDEFINED_LEGAL
|
|
207
218
|
CBZE:
|
|
208
219
|
location: 7
|
|
209
220
|
description: |
|
|
@@ -57,3 +57,15 @@ fields:
|
|
|
57
57
|
return (implemented?(ExtensionName::Svadu)) ? CsrFieldType::RW : CsrFieldType::RO;
|
|
58
58
|
reset_value(): |
|
|
59
59
|
return (implemented?(ExtensionName::Svadu)) ? UNDEFINED_LEGAL : 0;
|
|
60
|
+
CDE:
|
|
61
|
+
location: 28
|
|
62
|
+
alias: menvcfg.CDE
|
|
63
|
+
description: |
|
|
64
|
+
*Counter Delegation Enable*
|
|
65
|
+
|
|
66
|
+
Alias of `menvcfg.CDE`
|
|
67
|
+
definedBy:
|
|
68
|
+
extension:
|
|
69
|
+
name: Smcdeleg
|
|
70
|
+
type: RW
|
|
71
|
+
reset_value: UNDEFINED_LEGAL
|
|
@@ -102,7 +102,7 @@ fields:
|
|
|
102
102
|
|
|
103
103
|
When 1, Supervisor Software interrupts are delegated to HS/S-mode.
|
|
104
104
|
type(): |
|
|
105
|
-
return
|
|
105
|
+
return MIDELEG_DELEGATABLE[1] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
106
106
|
reset_value: 0
|
|
107
107
|
sw_write(csr_value): |
|
|
108
108
|
if (csr_value.SSI == 0) {
|
|
@@ -124,13 +124,6 @@ fields:
|
|
|
124
124
|
definedBy:
|
|
125
125
|
extension:
|
|
126
126
|
name: H
|
|
127
|
-
sw_write(csr_value): |
|
|
128
|
-
if (csr_value.VSSI == 0) {
|
|
129
|
-
CSR[hie].VSSIE = 0;
|
|
130
|
-
CSR[hip].VSSIP = 0;
|
|
131
|
-
CSR[hideleg].VSSI = 0;
|
|
132
|
-
}
|
|
133
|
-
return csr_value.VSSI;
|
|
134
127
|
MSI:
|
|
135
128
|
location: 3
|
|
136
129
|
description: |
|
|
@@ -139,7 +132,7 @@ fields:
|
|
|
139
132
|
When 1, Machine Software interrupts are delegated to HS/S-mode.
|
|
140
133
|
This is unusual but permitted. See https://github.com/riscv/riscv-isa-manual/issues/3162.
|
|
141
134
|
type(): |
|
|
142
|
-
return
|
|
135
|
+
return MIDELEG_DELEGATABLE[3] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
143
136
|
reset_value: 0
|
|
144
137
|
STI:
|
|
145
138
|
location: 5
|
|
@@ -148,7 +141,7 @@ fields:
|
|
|
148
141
|
|
|
149
142
|
When 1, Supervisor Timer interrupts are delegated to HS/S-mode.
|
|
150
143
|
type(): |
|
|
151
|
-
return
|
|
144
|
+
return MIDELEG_DELEGATABLE[5] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
152
145
|
reset_value: 0
|
|
153
146
|
VSTI:
|
|
154
147
|
location: 6
|
|
@@ -163,13 +156,6 @@ fields:
|
|
|
163
156
|
definedBy:
|
|
164
157
|
extension:
|
|
165
158
|
name: H
|
|
166
|
-
sw_write(csr_value): |
|
|
167
|
-
if (csr_value.VSTI == 0) {
|
|
168
|
-
CSR[hie].VSTIE = 0;
|
|
169
|
-
CSR[hip].VSTIP = 0;
|
|
170
|
-
CSR[hideleg].VSTI = 0;
|
|
171
|
-
}
|
|
172
|
-
return csr_value.VSTI;
|
|
173
159
|
MTI:
|
|
174
160
|
location: 7
|
|
175
161
|
description: |
|
|
@@ -178,7 +164,7 @@ fields:
|
|
|
178
164
|
When 1, Machine Timer interrupts are delegated to HS/S-mode.
|
|
179
165
|
This is unusual but permitted. See https://github.com/riscv/riscv-isa-manual/issues/3162.
|
|
180
166
|
type(): |
|
|
181
|
-
return
|
|
167
|
+
return MIDELEG_DELEGATABLE[7] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
182
168
|
reset_value: 0
|
|
183
169
|
SEI:
|
|
184
170
|
location: 9
|
|
@@ -187,7 +173,7 @@ fields:
|
|
|
187
173
|
|
|
188
174
|
When 1, Supervisor External interrupts are delegated to HS/S-mode.
|
|
189
175
|
type(): |
|
|
190
|
-
return
|
|
176
|
+
return MIDELEG_DELEGATABLE[9] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
191
177
|
reset_value: 0
|
|
192
178
|
VSEI:
|
|
193
179
|
location: 10
|
|
@@ -200,13 +186,6 @@ fields:
|
|
|
200
186
|
definedBy:
|
|
201
187
|
extension:
|
|
202
188
|
name: H
|
|
203
|
-
sw_write(csr_value): |
|
|
204
|
-
if (csr_value.VSEI == 0) {
|
|
205
|
-
CSR[hie].VSEIE = 0;
|
|
206
|
-
CSR[hip].VSEIP = 0;
|
|
207
|
-
CSR[hideleg].VSEI = 0;
|
|
208
|
-
}
|
|
209
|
-
return csr_value.VSEI;
|
|
210
189
|
MEI:
|
|
211
190
|
location: 11
|
|
212
191
|
description: |
|
|
@@ -215,32 +194,30 @@ fields:
|
|
|
215
194
|
When 1, Machine External interrupts are delegated to HS/S-mode.
|
|
216
195
|
This is unusual but permitted. See https://github.com/riscv/riscv-isa-manual/issues/3162.
|
|
217
196
|
type(): |
|
|
218
|
-
return
|
|
197
|
+
return MIDELEG_DELEGATABLE[11] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
219
198
|
reset_value: 0
|
|
220
199
|
SGEI:
|
|
221
200
|
location: 12
|
|
222
201
|
description: |
|
|
223
202
|
*Supervisor Guest External Interrupt delegation*
|
|
224
203
|
|
|
225
|
-
Supervisor Guest External interrupts are always delegated to HS-mode
|
|
204
|
+
Supervisor Guest External interrupts are always delegated to HS-mode when any guest external interrupts
|
|
205
|
+
are implemented (`NUM_EXTERNAL_GUEST_INTERRUPTS` is nonzero), so this field is read-only one;
|
|
206
|
+
otherwise it is read-only zero.
|
|
226
207
|
type: RO
|
|
227
|
-
reset_value:
|
|
208
|
+
reset_value(): |
|
|
209
|
+
return MIDELEG_DELEGATABLE[12] ? 1 : 0;
|
|
228
210
|
definedBy:
|
|
229
211
|
extension:
|
|
230
212
|
name: H
|
|
231
|
-
sw_write(csr_value): |
|
|
232
|
-
if (csr_value.SGEI == 0) {
|
|
233
|
-
CSR[hie].SGEIE = 0;
|
|
234
|
-
CSR[hip].SGEIP = 0;
|
|
235
|
-
}
|
|
236
|
-
return csr_value.SGEI;
|
|
237
213
|
LCOFI:
|
|
238
214
|
location: 13
|
|
239
215
|
description: |
|
|
240
216
|
*Local Counter Overflow Interrupt delegation*
|
|
241
217
|
|
|
242
218
|
When 1, local counter overflow interrupts are delegated to (H)S-mode.
|
|
243
|
-
type:
|
|
219
|
+
type(): |
|
|
220
|
+
return MIDELEG_DELEGATABLE[13] ? CsrFieldType::RW : CsrFieldType::RO;
|
|
244
221
|
reset_value: 0
|
|
245
222
|
definedBy:
|
|
246
223
|
extension:
|
|
@@ -30,8 +30,7 @@ fields:
|
|
|
30
30
|
location: 2
|
|
31
31
|
description: |
|
|
32
32
|
Enables Virtual Supervisor Software Interrupts.
|
|
33
|
-
type
|
|
34
|
-
return VSSI_INTR_IMPL ? CsrFieldType::RW : CsrFieldType::RO;
|
|
33
|
+
type: RW
|
|
35
34
|
definedBy:
|
|
36
35
|
extension:
|
|
37
36
|
name: H
|
|
@@ -56,8 +55,7 @@ fields:
|
|
|
56
55
|
location: 6
|
|
57
56
|
description: |
|
|
58
57
|
Enables Virtual Supervisor Timer Interrupts.
|
|
59
|
-
type
|
|
60
|
-
return VSTI_INTR_IMPL ? CsrFieldType::RW : CsrFieldType::RO;
|
|
58
|
+
type: RW
|
|
61
59
|
definedBy:
|
|
62
60
|
extension:
|
|
63
61
|
name: H
|
|
@@ -82,8 +80,7 @@ fields:
|
|
|
82
80
|
location: 10
|
|
83
81
|
description: |
|
|
84
82
|
Enables Virtual Supervisor External Interrupts.
|
|
85
|
-
type
|
|
86
|
-
return VSEI_INTR_IMPL ? CsrFieldType::RW : CsrFieldType::RO;
|
|
83
|
+
type: RW
|
|
87
84
|
definedBy:
|
|
88
85
|
extension:
|
|
89
86
|
name: H
|
|
@@ -8,6 +8,8 @@ kind: csr
|
|
|
8
8
|
name: minstret
|
|
9
9
|
long_name: Machine Instructions Retired Counter
|
|
10
10
|
address: 0xB02
|
|
11
|
+
indirect_address: 0x42
|
|
12
|
+
indirect_slot: 1
|
|
11
13
|
writable: true
|
|
12
14
|
description: |
|
|
13
15
|
Counts the number of instructions retired by this hart from some arbitrary start point in the past.
|