{"c",                ISA_SPEC_CLASS_20190608,        2, 0, 0 },
   {"c",                ISA_SPEC_CLASS_2P2,             2, 0, 0 },
   {"v",                ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
+  {"h",                ISA_SPEC_CLASS_DRAFT,           1, 0, 0 },
   {NULL, 0, 0, 0, 0}
 };
 
   {NULL, 0, 0, 0, 0}
 };
 
-static struct riscv_supported_ext riscv_supported_std_h_ext[] =
-{
-  {NULL, 0, 0, 0, 0}
-};
-
 static struct riscv_supported_ext riscv_supported_std_zxm_ext[] =
 {
   {NULL, 0, 0, 0, 0}
   riscv_supported_std_ext,
   riscv_supported_std_z_ext,
   riscv_supported_std_s_ext,
-  riscv_supported_std_h_ext,
   riscv_supported_std_zxm_ext,
   NULL
 };
 {
   RV_ISA_CLASS_Z = 1,
   RV_ISA_CLASS_S,
-  RV_ISA_CLASS_H,
   RV_ISA_CLASS_ZXM,
   RV_ISA_CLASS_X,
   RV_ISA_CLASS_UNKNOWN
   {RV_ISA_CLASS_ZXM, "zxm"},
   {RV_ISA_CLASS_Z, "z"},
   {RV_ISA_CLASS_S, "s"},
-  {RV_ISA_CLASS_H, "h"},
   {RV_ISA_CLASS_X, "x"},
   {RV_ISA_CLASS_UNKNOWN, NULL}
 };
     return riscv_known_prefixed_ext (ext, riscv_supported_std_zxm_ext);
   case RV_ISA_CLASS_S:
     return riscv_known_prefixed_ext (ext, riscv_supported_std_s_ext);
-  case RV_ISA_CLASS_H:
-    return riscv_known_prefixed_ext (ext, riscv_supported_std_h_ext);
   case RV_ISA_CLASS_X:
     /* Only the single x is unrecognized.  */
     if (strcmp (ext, "x") != 0)
     case RV_ISA_CLASS_ZXM: table = riscv_supported_std_zxm_ext; break;
     case RV_ISA_CLASS_Z: table = riscv_supported_std_z_ext; break;
     case RV_ISA_CLASS_S: table = riscv_supported_std_s_ext; break;
-    case RV_ISA_CLASS_H: table = riscv_supported_std_h_ext; break;
     case RV_ISA_CLASS_X:
       break;
     default:
              || riscv_subset_supports (rps, "zve32f"));
     case INSN_CLASS_SVINVAL:
       return riscv_subset_supports (rps, "svinval");
+    case INSN_CLASS_H:
+      return riscv_subset_supports (rps, "h");
     default:
       rps->error_handler
         (_("internal: unreachable INSN_CLASS_*"));
       return _("('d' and 'zfh') or 'zhinx");
     case INSN_CLASS_Q_AND_ZFH_INX:
       return _("('q' and 'zfh') or 'zhinx");
+    case INSN_CLASS_H:
+      return _("h");
     default:
       rps->error_handler
         (_("internal: unreachable INSN_CLASS_*"));
 
   CSR_CLASS_F,         /* f-ext only */
   CSR_CLASS_ZKR,       /* zkr only */
   CSR_CLASS_V,         /* rvv only */
-  CSR_CLASS_DEBUG      /* debug CSR */
+  CSR_CLASS_DEBUG,     /* debug CSR */
+  CSR_CLASS_H,         /* hypervisor */
+  CSR_CLASS_H_32,      /* hypervisor, rv32 only */
 };
 
 /* This structure holds all restricted conditions for a CSR.  */
       need_check_version = true;
       extension = "i";
       break;
+    case CSR_CLASS_H_32:
+      rv32_only = (xlen == 32);
+      /* Fall through.  */
+    case CSR_CLASS_H:
+      extension = "h";
+      break;
     case CSR_CLASS_F:
       extension = "f";
       break;
 
 [      ]+[0-9a-f]+:[   ]+33e59073[     ]+csrw[         ]+mhpmevent30,a1
 [      ]+[0-9a-f]+:[   ]+33f02573[     ]+csrr[         ]+a0,mhpmevent31
 [      ]+[0-9a-f]+:[   ]+33f59073[     ]+csrw[         ]+mhpmevent31,a1
-[      ]+[0-9a-f]+:[   ]+60002573[     ]+csrr[         ]+a0,0x600
-[      ]+[0-9a-f]+:[   ]+60059073[     ]+csrw[         ]+0x600,a1
-[      ]+[0-9a-f]+:[   ]+60202573[     ]+csrr[         ]+a0,0x602
-[      ]+[0-9a-f]+:[   ]+60259073[     ]+csrw[         ]+0x602,a1
-[      ]+[0-9a-f]+:[   ]+60302573[     ]+csrr[         ]+a0,0x603
-[      ]+[0-9a-f]+:[   ]+60359073[     ]+csrw[         ]+0x603,a1
-[      ]+[0-9a-f]+:[   ]+60402573[     ]+csrr[         ]+a0,0x604
-[      ]+[0-9a-f]+:[   ]+60459073[     ]+csrw[         ]+0x604,a1
-[      ]+[0-9a-f]+:[   ]+60602573[     ]+csrr[         ]+a0,0x606
-[      ]+[0-9a-f]+:[   ]+60659073[     ]+csrw[         ]+0x606,a1
-[      ]+[0-9a-f]+:[   ]+60702573[     ]+csrr[         ]+a0,0x607
-[      ]+[0-9a-f]+:[   ]+60759073[     ]+csrw[         ]+0x607,a1
-[      ]+[0-9a-f]+:[   ]+64302573[     ]+csrr[         ]+a0,0x643
-[      ]+[0-9a-f]+:[   ]+64359073[     ]+csrw[         ]+0x643,a1
-[      ]+[0-9a-f]+:[   ]+64402573[     ]+csrr[         ]+a0,0x644
-[      ]+[0-9a-f]+:[   ]+64459073[     ]+csrw[         ]+0x644,a1
-[      ]+[0-9a-f]+:[   ]+64502573[     ]+csrr[         ]+a0,0x645
-[      ]+[0-9a-f]+:[   ]+64559073[     ]+csrw[         ]+0x645,a1
-[      ]+[0-9a-f]+:[   ]+64a02573[     ]+csrr[         ]+a0,0x64a
-[      ]+[0-9a-f]+:[   ]+64a59073[     ]+csrw[         ]+0x64a,a1
-[      ]+[0-9a-f]+:[   ]+e1202573[     ]+csrr[         ]+a0,0xe12
-[      ]+[0-9a-f]+:[   ]+e1259073[     ]+csrw[         ]+0xe12,a1
-[      ]+[0-9a-f]+:[   ]+60a02573[     ]+csrr[         ]+a0,0x60a
-[      ]+[0-9a-f]+:[   ]+60a59073[     ]+csrw[         ]+0x60a,a1
-[      ]+[0-9a-f]+:[   ]+61a02573[     ]+csrr[         ]+a0,0x61a
-[      ]+[0-9a-f]+:[   ]+61a59073[     ]+csrw[         ]+0x61a,a1
-[      ]+[0-9a-f]+:[   ]+68002573[     ]+csrr[         ]+a0,0x680
-[      ]+[0-9a-f]+:[   ]+68059073[     ]+csrw[         ]+0x680,a1
-[      ]+[0-9a-f]+:[   ]+60502573[     ]+csrr[         ]+a0,0x605
-[      ]+[0-9a-f]+:[   ]+60559073[     ]+csrw[         ]+0x605,a1
-[      ]+[0-9a-f]+:[   ]+61502573[     ]+csrr[         ]+a0,0x615
-[      ]+[0-9a-f]+:[   ]+61559073[     ]+csrw[         ]+0x615,a1
-[      ]+[0-9a-f]+:[   ]+20002573[     ]+csrr[         ]+a0,0x200
-[      ]+[0-9a-f]+:[   ]+20059073[     ]+csrw[         ]+0x200,a1
-[      ]+[0-9a-f]+:[   ]+20402573[     ]+csrr[         ]+a0,0x204
-[      ]+[0-9a-f]+:[   ]+20459073[     ]+csrw[         ]+0x204,a1
-[      ]+[0-9a-f]+:[   ]+20502573[     ]+csrr[         ]+a0,0x205
-[      ]+[0-9a-f]+:[   ]+20559073[     ]+csrw[         ]+0x205,a1
-[      ]+[0-9a-f]+:[   ]+24002573[     ]+csrr[         ]+a0,0x240
-[      ]+[0-9a-f]+:[   ]+24059073[     ]+csrw[         ]+0x240,a1
-[      ]+[0-9a-f]+:[   ]+24102573[     ]+csrr[         ]+a0,0x241
-[      ]+[0-9a-f]+:[   ]+24159073[     ]+csrw[         ]+0x241,a1
-[      ]+[0-9a-f]+:[   ]+24202573[     ]+csrr[         ]+a0,0x242
-[      ]+[0-9a-f]+:[   ]+24259073[     ]+csrw[         ]+0x242,a1
-[      ]+[0-9a-f]+:[   ]+24302573[     ]+csrr[         ]+a0,0x243
-[      ]+[0-9a-f]+:[   ]+24359073[     ]+csrw[         ]+0x243,a1
-[      ]+[0-9a-f]+:[   ]+24402573[     ]+csrr[         ]+a0,0x244
-[      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+0x244,a1
-[      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,0x280
-[      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+0x280,a1
+[      ]+[0-9a-f]+:[   ]+60002573[     ]+csrr[         ]+a0,hstatus
+[      ]+[0-9a-f]+:[   ]+60059073[     ]+csrw[         ]+hstatus,a1
+[      ]+[0-9a-f]+:[   ]+60202573[     ]+csrr[         ]+a0,hedeleg
+[      ]+[0-9a-f]+:[   ]+60259073[     ]+csrw[         ]+hedeleg,a1
+[      ]+[0-9a-f]+:[   ]+60302573[     ]+csrr[         ]+a0,hideleg
+[      ]+[0-9a-f]+:[   ]+60359073[     ]+csrw[         ]+hideleg,a1
+[      ]+[0-9a-f]+:[   ]+60402573[     ]+csrr[         ]+a0,hie
+[      ]+[0-9a-f]+:[   ]+60459073[     ]+csrw[         ]+hie,a1
+[      ]+[0-9a-f]+:[   ]+60602573[     ]+csrr[         ]+a0,hcounteren
+[      ]+[0-9a-f]+:[   ]+60659073[     ]+csrw[         ]+hcounteren,a1
+[      ]+[0-9a-f]+:[   ]+60702573[     ]+csrr[         ]+a0,hgeie
+[      ]+[0-9a-f]+:[   ]+60759073[     ]+csrw[         ]+hgeie,a1
+[      ]+[0-9a-f]+:[   ]+64302573[     ]+csrr[         ]+a0,htval
+[      ]+[0-9a-f]+:[   ]+64359073[     ]+csrw[         ]+htval,a1
+[      ]+[0-9a-f]+:[   ]+64402573[     ]+csrr[         ]+a0,hip
+[      ]+[0-9a-f]+:[   ]+64459073[     ]+csrw[         ]+hip,a1
+[      ]+[0-9a-f]+:[   ]+64502573[     ]+csrr[         ]+a0,hvip
+[      ]+[0-9a-f]+:[   ]+64559073[     ]+csrw[         ]+hvip,a1
+[      ]+[0-9a-f]+:[   ]+64a02573[     ]+csrr[         ]+a0,htinst
+[      ]+[0-9a-f]+:[   ]+64a59073[     ]+csrw[         ]+htinst,a1
+[      ]+[0-9a-f]+:[   ]+e1202573[     ]+csrr[         ]+a0,hgeip
+[      ]+[0-9a-f]+:[   ]+e1259073[     ]+csrw[         ]+hgeip,a1
+[      ]+[0-9a-f]+:[   ]+60a02573[     ]+csrr[         ]+a0,henvcfg
+[      ]+[0-9a-f]+:[   ]+60a59073[     ]+csrw[         ]+henvcfg,a1
+[      ]+[0-9a-f]+:[   ]+61a02573[     ]+csrr[         ]+a0,henvcfgh
+[      ]+[0-9a-f]+:[   ]+61a59073[     ]+csrw[         ]+henvcfgh,a1
+[      ]+[0-9a-f]+:[   ]+68002573[     ]+csrr[         ]+a0,hgatp
+[      ]+[0-9a-f]+:[   ]+68059073[     ]+csrw[         ]+hgatp,a1
+[      ]+[0-9a-f]+:[   ]+60502573[     ]+csrr[         ]+a0,htimedelta
+[      ]+[0-9a-f]+:[   ]+60559073[     ]+csrw[         ]+htimedelta,a1
+[      ]+[0-9a-f]+:[   ]+61502573[     ]+csrr[         ]+a0,htimedeltah
+[      ]+[0-9a-f]+:[   ]+61559073[     ]+csrw[         ]+htimedeltah,a1
+[      ]+[0-9a-f]+:[   ]+20002573[     ]+csrr[         ]+a0,vsstatus
+[      ]+[0-9a-f]+:[   ]+20059073[     ]+csrw[         ]+vsstatus,a1
+[      ]+[0-9a-f]+:[   ]+20402573[     ]+csrr[         ]+a0,vsie
+[      ]+[0-9a-f]+:[   ]+20459073[     ]+csrw[         ]+vsie,a1
+[      ]+[0-9a-f]+:[   ]+20502573[     ]+csrr[         ]+a0,vstvec
+[      ]+[0-9a-f]+:[   ]+20559073[     ]+csrw[         ]+vstvec,a1
+[      ]+[0-9a-f]+:[   ]+24002573[     ]+csrr[         ]+a0,vsscratch
+[      ]+[0-9a-f]+:[   ]+24059073[     ]+csrw[         ]+vsscratch,a1
+[      ]+[0-9a-f]+:[   ]+24102573[     ]+csrr[         ]+a0,vsepc
+[      ]+[0-9a-f]+:[   ]+24159073[     ]+csrw[         ]+vsepc,a1
+[      ]+[0-9a-f]+:[   ]+24202573[     ]+csrr[         ]+a0,vscause
+[      ]+[0-9a-f]+:[   ]+24259073[     ]+csrw[         ]+vscause,a1
+[      ]+[0-9a-f]+:[   ]+24302573[     ]+csrr[         ]+a0,vstval
+[      ]+[0-9a-f]+:[   ]+24359073[     ]+csrw[         ]+vstval,a1
+[      ]+[0-9a-f]+:[   ]+24402573[     ]+csrr[         ]+a0,vsip
+[      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
+[      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
+[      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
 [      ]+[0-9a-f]+:[   ]+04302573[     ]+csrr[         ]+a0,utval
 [      ]+[0-9a-f]+:[   ]+04359073[     ]+csrw[         ]+utval,a1
 [      ]+[0-9a-f]+:[   ]+14302573[     ]+csrr[         ]+a0,stval
 
 .*Warning: invalid CSR `mhpmcounter31h', needs rv32i extension
 .*Warning: invalid CSR `mcountinhibit' for the privileged spec `1.10'
 .*Warning: invalid CSR `mcountinhibit' for the privileged spec `1.10'
-.*Warning: invalid CSR `hstatus' for the privileged spec `1.10'
-.*Warning: invalid CSR `hstatus' for the privileged spec `1.10'
-.*Warning: invalid CSR `hedeleg' for the privileged spec `1.10'
-.*Warning: invalid CSR `hedeleg' for the privileged spec `1.10'
-.*Warning: invalid CSR `hideleg' for the privileged spec `1.10'
-.*Warning: invalid CSR `hideleg' for the privileged spec `1.10'
-.*Warning: invalid CSR `hie' for the privileged spec `1.10'
-.*Warning: invalid CSR `hie' for the privileged spec `1.10'
-.*Warning: invalid CSR `hcounteren' for the privileged spec `1.10'
-.*Warning: invalid CSR `hcounteren' for the privileged spec `1.10'
-.*Warning: invalid CSR `hgeie' for the privileged spec `1.10'
-.*Warning: invalid CSR `hgeie' for the privileged spec `1.10'
-.*Warning: invalid CSR `htval' for the privileged spec `1.10'
-.*Warning: invalid CSR `htval' for the privileged spec `1.10'
-.*Warning: invalid CSR `hip' for the privileged spec `1.10'
-.*Warning: invalid CSR `hip' for the privileged spec `1.10'
-.*Warning: invalid CSR `hvip' for the privileged spec `1.10'
-.*Warning: invalid CSR `hvip' for the privileged spec `1.10'
-.*Warning: invalid CSR `htinst' for the privileged spec `1.10'
-.*Warning: invalid CSR `htinst' for the privileged spec `1.10'
-.*Warning: invalid CSR `hgeip' for the privileged spec `1.10'
-.*Warning: invalid CSR `hgeip' for the privileged spec `1.10'
+.*Warning: invalid CSR `hstatus', needs `h' extension
+.*Warning: invalid CSR `hstatus', needs `h' extension
+.*Warning: invalid CSR `hedeleg', needs `h' extension
+.*Warning: invalid CSR `hedeleg', needs `h' extension
+.*Warning: invalid CSR `hideleg', needs `h' extension
+.*Warning: invalid CSR `hideleg', needs `h' extension
+.*Warning: invalid CSR `hie', needs `h' extension
+.*Warning: invalid CSR `hie', needs `h' extension
+.*Warning: invalid CSR `hcounteren', needs `h' extension
+.*Warning: invalid CSR `hcounteren', needs `h' extension
+.*Warning: invalid CSR `hgeie', needs `h' extension
+.*Warning: invalid CSR `hgeie', needs `h' extension
+.*Warning: invalid CSR `htval', needs `h' extension
+.*Warning: invalid CSR `htval', needs `h' extension
+.*Warning: invalid CSR `hip', needs `h' extension
+.*Warning: invalid CSR `hip', needs `h' extension
+.*Warning: invalid CSR `hvip', needs `h' extension
+.*Warning: invalid CSR `hvip', needs `h' extension
+.*Warning: invalid CSR `htinst', needs `h' extension
+.*Warning: invalid CSR `htinst', needs `h' extension
+.*Warning: invalid CSR `hgeip', needs `h' extension
+.*Warning: invalid CSR `hgeip', needs `h' extension
 .*Warning: read-only CSR is written `csrw hgeip,a1'
-.*Warning: invalid CSR `henvcfg' for the privileged spec `1.10'
-.*Warning: invalid CSR `henvcfg' for the privileged spec `1.10'
+.*Warning: invalid CSR `henvcfg', needs `h' extension
+.*Warning: invalid CSR `henvcfg', needs `h' extension
 .*Warning: invalid CSR `henvcfgh', needs rv32i extension
-.*Warning: invalid CSR `henvcfgh' for the privileged spec `1.10'
+.*Warning: invalid CSR `henvcfgh', needs `h' extension
 .*Warning: invalid CSR `henvcfgh', needs rv32i extension
-.*Warning: invalid CSR `henvcfgh' for the privileged spec `1.10'
-.*Warning: invalid CSR `hgatp' for the privileged spec `1.10'
-.*Warning: invalid CSR `hgatp' for the privileged spec `1.10'
-.*Warning: invalid CSR `htimedelta' for the privileged spec `1.10'
-.*Warning: invalid CSR `htimedelta' for the privileged spec `1.10'
+.*Warning: invalid CSR `henvcfgh', needs `h' extension
+.*Warning: invalid CSR `hgatp', needs `h' extension
+.*Warning: invalid CSR `hgatp', needs `h' extension
+.*Warning: invalid CSR `htimedelta', needs `h' extension
+.*Warning: invalid CSR `htimedelta', needs `h' extension
 .*Warning: invalid CSR `htimedeltah', needs rv32i extension
-.*Warning: invalid CSR `htimedeltah' for the privileged spec `1.10'
+.*Warning: invalid CSR `htimedeltah', needs `h' extension
 .*Warning: invalid CSR `htimedeltah', needs rv32i extension
-.*Warning: invalid CSR `htimedeltah' for the privileged spec `1.10'
-.*Warning: invalid CSR `vsstatus' for the privileged spec `1.10'
-.*Warning: invalid CSR `vsstatus' for the privileged spec `1.10'
-.*Warning: invalid CSR `vsie' for the privileged spec `1.10'
-.*Warning: invalid CSR `vsie' for the privileged spec `1.10'
-.*Warning: invalid CSR `vstvec' for the privileged spec `1.10'
-.*Warning: invalid CSR `vstvec' for the privileged spec `1.10'
-.*Warning: invalid CSR `vsscratch' for the privileged spec `1.10'
-.*Warning: invalid CSR `vsscratch' for the privileged spec `1.10'
-.*Warning: invalid CSR `vsepc' for the privileged spec `1.10'
-.*Warning: invalid CSR `vsepc' for the privileged spec `1.10'
-.*Warning: invalid CSR `vscause' for the privileged spec `1.10'
-.*Warning: invalid CSR `vscause' for the privileged spec `1.10'
-.*Warning: invalid CSR `vstval' for the privileged spec `1.10'
-.*Warning: invalid CSR `vstval' for the privileged spec `1.10'
-.*Warning: invalid CSR `vsip' for the privileged spec `1.10'
-.*Warning: invalid CSR `vsip' for the privileged spec `1.10'
-.*Warning: invalid CSR `vsatp' for the privileged spec `1.10'
-.*Warning: invalid CSR `vsatp' for the privileged spec `1.10'
+.*Warning: invalid CSR `htimedeltah', needs `h' extension
+.*Warning: invalid CSR `vsstatus', needs `h' extension
+.*Warning: invalid CSR `vsstatus', needs `h' extension
+.*Warning: invalid CSR `vsie', needs `h' extension
+.*Warning: invalid CSR `vsie', needs `h' extension
+.*Warning: invalid CSR `vstvec', needs `h' extension
+.*Warning: invalid CSR `vstvec', needs `h' extension
+.*Warning: invalid CSR `vsscratch', needs `h' extension
+.*Warning: invalid CSR `vsscratch', needs `h' extension
+.*Warning: invalid CSR `vsepc', needs `h' extension
+.*Warning: invalid CSR `vsepc', needs `h' extension
+.*Warning: invalid CSR `vscause', needs `h' extension
+.*Warning: invalid CSR `vscause', needs `h' extension
+.*Warning: invalid CSR `vstval', needs `h' extension
+.*Warning: invalid CSR `vstval', needs `h' extension
+.*Warning: invalid CSR `vsip', needs `h' extension
+.*Warning: invalid CSR `vsip', needs `h' extension
+.*Warning: invalid CSR `vsatp', needs `h' extension
+.*Warning: invalid CSR `vsatp', needs `h' extension
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.10'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.10'
 
 [      ]+[0-9a-f]+:[   ]+33e59073[     ]+csrw[         ]+mhpmevent30,a1
 [      ]+[0-9a-f]+:[   ]+33f02573[     ]+csrr[         ]+a0,mhpmevent31
 [      ]+[0-9a-f]+:[   ]+33f59073[     ]+csrw[         ]+mhpmevent31,a1
-[      ]+[0-9a-f]+:[   ]+60002573[     ]+csrr[         ]+a0,0x600
-[      ]+[0-9a-f]+:[   ]+60059073[     ]+csrw[         ]+0x600,a1
-[      ]+[0-9a-f]+:[   ]+60202573[     ]+csrr[         ]+a0,0x602
-[      ]+[0-9a-f]+:[   ]+60259073[     ]+csrw[         ]+0x602,a1
-[      ]+[0-9a-f]+:[   ]+60302573[     ]+csrr[         ]+a0,0x603
-[      ]+[0-9a-f]+:[   ]+60359073[     ]+csrw[         ]+0x603,a1
-[      ]+[0-9a-f]+:[   ]+60402573[     ]+csrr[         ]+a0,0x604
-[      ]+[0-9a-f]+:[   ]+60459073[     ]+csrw[         ]+0x604,a1
-[      ]+[0-9a-f]+:[   ]+60602573[     ]+csrr[         ]+a0,0x606
-[      ]+[0-9a-f]+:[   ]+60659073[     ]+csrw[         ]+0x606,a1
-[      ]+[0-9a-f]+:[   ]+60702573[     ]+csrr[         ]+a0,0x607
-[      ]+[0-9a-f]+:[   ]+60759073[     ]+csrw[         ]+0x607,a1
-[      ]+[0-9a-f]+:[   ]+64302573[     ]+csrr[         ]+a0,0x643
-[      ]+[0-9a-f]+:[   ]+64359073[     ]+csrw[         ]+0x643,a1
-[      ]+[0-9a-f]+:[   ]+64402573[     ]+csrr[         ]+a0,0x644
-[      ]+[0-9a-f]+:[   ]+64459073[     ]+csrw[         ]+0x644,a1
-[      ]+[0-9a-f]+:[   ]+64502573[     ]+csrr[         ]+a0,0x645
-[      ]+[0-9a-f]+:[   ]+64559073[     ]+csrw[         ]+0x645,a1
-[      ]+[0-9a-f]+:[   ]+64a02573[     ]+csrr[         ]+a0,0x64a
-[      ]+[0-9a-f]+:[   ]+64a59073[     ]+csrw[         ]+0x64a,a1
-[      ]+[0-9a-f]+:[   ]+e1202573[     ]+csrr[         ]+a0,0xe12
-[      ]+[0-9a-f]+:[   ]+e1259073[     ]+csrw[         ]+0xe12,a1
-[      ]+[0-9a-f]+:[   ]+60a02573[     ]+csrr[         ]+a0,0x60a
-[      ]+[0-9a-f]+:[   ]+60a59073[     ]+csrw[         ]+0x60a,a1
-[      ]+[0-9a-f]+:[   ]+61a02573[     ]+csrr[         ]+a0,0x61a
-[      ]+[0-9a-f]+:[   ]+61a59073[     ]+csrw[         ]+0x61a,a1
-[      ]+[0-9a-f]+:[   ]+68002573[     ]+csrr[         ]+a0,0x680
-[      ]+[0-9a-f]+:[   ]+68059073[     ]+csrw[         ]+0x680,a1
-[      ]+[0-9a-f]+:[   ]+60502573[     ]+csrr[         ]+a0,0x605
-[      ]+[0-9a-f]+:[   ]+60559073[     ]+csrw[         ]+0x605,a1
-[      ]+[0-9a-f]+:[   ]+61502573[     ]+csrr[         ]+a0,0x615
-[      ]+[0-9a-f]+:[   ]+61559073[     ]+csrw[         ]+0x615,a1
-[      ]+[0-9a-f]+:[   ]+20002573[     ]+csrr[         ]+a0,0x200
-[      ]+[0-9a-f]+:[   ]+20059073[     ]+csrw[         ]+0x200,a1
-[      ]+[0-9a-f]+:[   ]+20402573[     ]+csrr[         ]+a0,0x204
-[      ]+[0-9a-f]+:[   ]+20459073[     ]+csrw[         ]+0x204,a1
-[      ]+[0-9a-f]+:[   ]+20502573[     ]+csrr[         ]+a0,0x205
-[      ]+[0-9a-f]+:[   ]+20559073[     ]+csrw[         ]+0x205,a1
-[      ]+[0-9a-f]+:[   ]+24002573[     ]+csrr[         ]+a0,0x240
-[      ]+[0-9a-f]+:[   ]+24059073[     ]+csrw[         ]+0x240,a1
-[      ]+[0-9a-f]+:[   ]+24102573[     ]+csrr[         ]+a0,0x241
-[      ]+[0-9a-f]+:[   ]+24159073[     ]+csrw[         ]+0x241,a1
-[      ]+[0-9a-f]+:[   ]+24202573[     ]+csrr[         ]+a0,0x242
-[      ]+[0-9a-f]+:[   ]+24259073[     ]+csrw[         ]+0x242,a1
-[      ]+[0-9a-f]+:[   ]+24302573[     ]+csrr[         ]+a0,0x243
-[      ]+[0-9a-f]+:[   ]+24359073[     ]+csrw[         ]+0x243,a1
-[      ]+[0-9a-f]+:[   ]+24402573[     ]+csrr[         ]+a0,0x244
-[      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+0x244,a1
-[      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,0x280
-[      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+0x280,a1
+[      ]+[0-9a-f]+:[   ]+60002573[     ]+csrr[         ]+a0,hstatus
+[      ]+[0-9a-f]+:[   ]+60059073[     ]+csrw[         ]+hstatus,a1
+[      ]+[0-9a-f]+:[   ]+60202573[     ]+csrr[         ]+a0,hedeleg
+[      ]+[0-9a-f]+:[   ]+60259073[     ]+csrw[         ]+hedeleg,a1
+[      ]+[0-9a-f]+:[   ]+60302573[     ]+csrr[         ]+a0,hideleg
+[      ]+[0-9a-f]+:[   ]+60359073[     ]+csrw[         ]+hideleg,a1
+[      ]+[0-9a-f]+:[   ]+60402573[     ]+csrr[         ]+a0,hie
+[      ]+[0-9a-f]+:[   ]+60459073[     ]+csrw[         ]+hie,a1
+[      ]+[0-9a-f]+:[   ]+60602573[     ]+csrr[         ]+a0,hcounteren
+[      ]+[0-9a-f]+:[   ]+60659073[     ]+csrw[         ]+hcounteren,a1
+[      ]+[0-9a-f]+:[   ]+60702573[     ]+csrr[         ]+a0,hgeie
+[      ]+[0-9a-f]+:[   ]+60759073[     ]+csrw[         ]+hgeie,a1
+[      ]+[0-9a-f]+:[   ]+64302573[     ]+csrr[         ]+a0,htval
+[      ]+[0-9a-f]+:[   ]+64359073[     ]+csrw[         ]+htval,a1
+[      ]+[0-9a-f]+:[   ]+64402573[     ]+csrr[         ]+a0,hip
+[      ]+[0-9a-f]+:[   ]+64459073[     ]+csrw[         ]+hip,a1
+[      ]+[0-9a-f]+:[   ]+64502573[     ]+csrr[         ]+a0,hvip
+[      ]+[0-9a-f]+:[   ]+64559073[     ]+csrw[         ]+hvip,a1
+[      ]+[0-9a-f]+:[   ]+64a02573[     ]+csrr[         ]+a0,htinst
+[      ]+[0-9a-f]+:[   ]+64a59073[     ]+csrw[         ]+htinst,a1
+[      ]+[0-9a-f]+:[   ]+e1202573[     ]+csrr[         ]+a0,hgeip
+[      ]+[0-9a-f]+:[   ]+e1259073[     ]+csrw[         ]+hgeip,a1
+[      ]+[0-9a-f]+:[   ]+60a02573[     ]+csrr[         ]+a0,henvcfg
+[      ]+[0-9a-f]+:[   ]+60a59073[     ]+csrw[         ]+henvcfg,a1
+[      ]+[0-9a-f]+:[   ]+61a02573[     ]+csrr[         ]+a0,henvcfgh
+[      ]+[0-9a-f]+:[   ]+61a59073[     ]+csrw[         ]+henvcfgh,a1
+[      ]+[0-9a-f]+:[   ]+68002573[     ]+csrr[         ]+a0,hgatp
+[      ]+[0-9a-f]+:[   ]+68059073[     ]+csrw[         ]+hgatp,a1
+[      ]+[0-9a-f]+:[   ]+60502573[     ]+csrr[         ]+a0,htimedelta
+[      ]+[0-9a-f]+:[   ]+60559073[     ]+csrw[         ]+htimedelta,a1
+[      ]+[0-9a-f]+:[   ]+61502573[     ]+csrr[         ]+a0,htimedeltah
+[      ]+[0-9a-f]+:[   ]+61559073[     ]+csrw[         ]+htimedeltah,a1
+[      ]+[0-9a-f]+:[   ]+20002573[     ]+csrr[         ]+a0,vsstatus
+[      ]+[0-9a-f]+:[   ]+20059073[     ]+csrw[         ]+vsstatus,a1
+[      ]+[0-9a-f]+:[   ]+20402573[     ]+csrr[         ]+a0,vsie
+[      ]+[0-9a-f]+:[   ]+20459073[     ]+csrw[         ]+vsie,a1
+[      ]+[0-9a-f]+:[   ]+20502573[     ]+csrr[         ]+a0,vstvec
+[      ]+[0-9a-f]+:[   ]+20559073[     ]+csrw[         ]+vstvec,a1
+[      ]+[0-9a-f]+:[   ]+24002573[     ]+csrr[         ]+a0,vsscratch
+[      ]+[0-9a-f]+:[   ]+24059073[     ]+csrw[         ]+vsscratch,a1
+[      ]+[0-9a-f]+:[   ]+24102573[     ]+csrr[         ]+a0,vsepc
+[      ]+[0-9a-f]+:[   ]+24159073[     ]+csrw[         ]+vsepc,a1
+[      ]+[0-9a-f]+:[   ]+24202573[     ]+csrr[         ]+a0,vscause
+[      ]+[0-9a-f]+:[   ]+24259073[     ]+csrw[         ]+vscause,a1
+[      ]+[0-9a-f]+:[   ]+24302573[     ]+csrr[         ]+a0,vstval
+[      ]+[0-9a-f]+:[   ]+24359073[     ]+csrw[         ]+vstval,a1
+[      ]+[0-9a-f]+:[   ]+24402573[     ]+csrr[         ]+a0,vsip
+[      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
+[      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
+[      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
 [      ]+[0-9a-f]+:[   ]+04302573[     ]+csrr[         ]+a0,utval
 [      ]+[0-9a-f]+:[   ]+04359073[     ]+csrw[         ]+utval,a1
 [      ]+[0-9a-f]+:[   ]+14302573[     ]+csrr[         ]+a0,stval
 
 .*Warning: invalid CSR `mhpmcounter30h', needs rv32i extension
 .*Warning: invalid CSR `mhpmcounter31h', needs rv32i extension
 .*Warning: invalid CSR `mhpmcounter31h', needs rv32i extension
-.*Warning: invalid CSR `hstatus' for the privileged spec `1.11'
-.*Warning: invalid CSR `hstatus' for the privileged spec `1.11'
-.*Warning: invalid CSR `hedeleg' for the privileged spec `1.11'
-.*Warning: invalid CSR `hedeleg' for the privileged spec `1.11'
-.*Warning: invalid CSR `hideleg' for the privileged spec `1.11'
-.*Warning: invalid CSR `hideleg' for the privileged spec `1.11'
-.*Warning: invalid CSR `hie' for the privileged spec `1.11'
-.*Warning: invalid CSR `hie' for the privileged spec `1.11'
-.*Warning: invalid CSR `hcounteren' for the privileged spec `1.11'
-.*Warning: invalid CSR `hcounteren' for the privileged spec `1.11'
-.*Warning: invalid CSR `hgeie' for the privileged spec `1.11'
-.*Warning: invalid CSR `hgeie' for the privileged spec `1.11'
-.*Warning: invalid CSR `htval' for the privileged spec `1.11'
-.*Warning: invalid CSR `htval' for the privileged spec `1.11'
-.*Warning: invalid CSR `hip' for the privileged spec `1.11'
-.*Warning: invalid CSR `hip' for the privileged spec `1.11'
-.*Warning: invalid CSR `hvip' for the privileged spec `1.11'
-.*Warning: invalid CSR `hvip' for the privileged spec `1.11'
-.*Warning: invalid CSR `htinst' for the privileged spec `1.11'
-.*Warning: invalid CSR `htinst' for the privileged spec `1.11'
-.*Warning: invalid CSR `hgeip' for the privileged spec `1.11'
-.*Warning: invalid CSR `hgeip' for the privileged spec `1.11'
+.*Warning: invalid CSR `hstatus', needs `h' extension
+.*Warning: invalid CSR `hstatus', needs `h' extension
+.*Warning: invalid CSR `hedeleg', needs `h' extension
+.*Warning: invalid CSR `hedeleg', needs `h' extension
+.*Warning: invalid CSR `hideleg', needs `h' extension
+.*Warning: invalid CSR `hideleg', needs `h' extension
+.*Warning: invalid CSR `hie', needs `h' extension
+.*Warning: invalid CSR `hie', needs `h' extension
+.*Warning: invalid CSR `hcounteren', needs `h' extension
+.*Warning: invalid CSR `hcounteren', needs `h' extension
+.*Warning: invalid CSR `hgeie', needs `h' extension
+.*Warning: invalid CSR `hgeie', needs `h' extension
+.*Warning: invalid CSR `htval', needs `h' extension
+.*Warning: invalid CSR `htval', needs `h' extension
+.*Warning: invalid CSR `hip', needs `h' extension
+.*Warning: invalid CSR `hip', needs `h' extension
+.*Warning: invalid CSR `hvip', needs `h' extension
+.*Warning: invalid CSR `hvip', needs `h' extension
+.*Warning: invalid CSR `htinst', needs `h' extension
+.*Warning: invalid CSR `htinst', needs `h' extension
+.*Warning: invalid CSR `hgeip', needs `h' extension
+.*Warning: invalid CSR `hgeip', needs `h' extension
 .*Warning: read-only CSR is written `csrw hgeip,a1'
-.*Warning: invalid CSR `henvcfg' for the privileged spec `1.11'
-.*Warning: invalid CSR `henvcfg' for the privileged spec `1.11'
+.*Warning: invalid CSR `henvcfg', needs `h' extension
+.*Warning: invalid CSR `henvcfg', needs `h' extension
 .*Warning: invalid CSR `henvcfgh', needs rv32i extension
-.*Warning: invalid CSR `henvcfgh' for the privileged spec `1.11'
+.*Warning: invalid CSR `henvcfgh', needs `h' extension
 .*Warning: invalid CSR `henvcfgh', needs rv32i extension
-.*Warning: invalid CSR `henvcfgh' for the privileged spec `1.11'
-.*Warning: invalid CSR `hgatp' for the privileged spec `1.11'
-.*Warning: invalid CSR `hgatp' for the privileged spec `1.11'
-.*Warning: invalid CSR `htimedelta' for the privileged spec `1.11'
-.*Warning: invalid CSR `htimedelta' for the privileged spec `1.11'
+.*Warning: invalid CSR `henvcfgh', needs `h' extension
+.*Warning: invalid CSR `hgatp', needs `h' extension
+.*Warning: invalid CSR `hgatp', needs `h' extension
+.*Warning: invalid CSR `htimedelta', needs `h' extension
+.*Warning: invalid CSR `htimedelta', needs `h' extension
 .*Warning: invalid CSR `htimedeltah', needs rv32i extension
-.*Warning: invalid CSR `htimedeltah' for the privileged spec `1.11'
+.*Warning: invalid CSR `htimedeltah', needs `h' extension
 .*Warning: invalid CSR `htimedeltah', needs rv32i extension
-.*Warning: invalid CSR `htimedeltah' for the privileged spec `1.11'
-.*Warning: invalid CSR `vsstatus' for the privileged spec `1.11'
-.*Warning: invalid CSR `vsstatus' for the privileged spec `1.11'
-.*Warning: invalid CSR `vsie' for the privileged spec `1.11'
-.*Warning: invalid CSR `vsie' for the privileged spec `1.11'
-.*Warning: invalid CSR `vstvec' for the privileged spec `1.11'
-.*Warning: invalid CSR `vstvec' for the privileged spec `1.11'
-.*Warning: invalid CSR `vsscratch' for the privileged spec `1.11'
-.*Warning: invalid CSR `vsscratch' for the privileged spec `1.11'
-.*Warning: invalid CSR `vsepc' for the privileged spec `1.11'
-.*Warning: invalid CSR `vsepc' for the privileged spec `1.11'
-.*Warning: invalid CSR `vscause' for the privileged spec `1.11'
-.*Warning: invalid CSR `vscause' for the privileged spec `1.11'
-.*Warning: invalid CSR `vstval' for the privileged spec `1.11'
-.*Warning: invalid CSR `vstval' for the privileged spec `1.11'
-.*Warning: invalid CSR `vsip' for the privileged spec `1.11'
-.*Warning: invalid CSR `vsip' for the privileged spec `1.11'
-.*Warning: invalid CSR `vsatp' for the privileged spec `1.11'
-.*Warning: invalid CSR `vsatp' for the privileged spec `1.11'
+.*Warning: invalid CSR `htimedeltah', needs `h' extension
+.*Warning: invalid CSR `vsstatus', needs `h' extension
+.*Warning: invalid CSR `vsstatus', needs `h' extension
+.*Warning: invalid CSR `vsie', needs `h' extension
+.*Warning: invalid CSR `vsie', needs `h' extension
+.*Warning: invalid CSR `vstvec', needs `h' extension
+.*Warning: invalid CSR `vstvec', needs `h' extension
+.*Warning: invalid CSR `vsscratch', needs `h' extension
+.*Warning: invalid CSR `vsscratch', needs `h' extension
+.*Warning: invalid CSR `vsepc', needs `h' extension
+.*Warning: invalid CSR `vsepc', needs `h' extension
+.*Warning: invalid CSR `vscause', needs `h' extension
+.*Warning: invalid CSR `vscause', needs `h' extension
+.*Warning: invalid CSR `vstval', needs `h' extension
+.*Warning: invalid CSR `vstval', needs `h' extension
+.*Warning: invalid CSR `vsip', needs `h' extension
+.*Warning: invalid CSR `vsip', needs `h' extension
+.*Warning: invalid CSR `vsatp', needs `h' extension
+.*Warning: invalid CSR `vsatp', needs `h' extension
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.11'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.11'
 
 .*Warning: invalid CSR `mhpmcounter30h', needs rv32i extension
 .*Warning: invalid CSR `mhpmcounter31h', needs rv32i extension
 .*Warning: invalid CSR `mhpmcounter31h', needs rv32i extension
+.*Warning: invalid CSR `hstatus', needs `h' extension
+.*Warning: invalid CSR `hstatus', needs `h' extension
+.*Warning: invalid CSR `hedeleg', needs `h' extension
+.*Warning: invalid CSR `hedeleg', needs `h' extension
+.*Warning: invalid CSR `hideleg', needs `h' extension
+.*Warning: invalid CSR `hideleg', needs `h' extension
+.*Warning: invalid CSR `hie', needs `h' extension
+.*Warning: invalid CSR `hie', needs `h' extension
+.*Warning: invalid CSR `hcounteren', needs `h' extension
+.*Warning: invalid CSR `hcounteren', needs `h' extension
+.*Warning: invalid CSR `hgeie', needs `h' extension
+.*Warning: invalid CSR `hgeie', needs `h' extension
+.*Warning: invalid CSR `htval', needs `h' extension
+.*Warning: invalid CSR `htval', needs `h' extension
+.*Warning: invalid CSR `hip', needs `h' extension
+.*Warning: invalid CSR `hip', needs `h' extension
+.*Warning: invalid CSR `hvip', needs `h' extension
+.*Warning: invalid CSR `hvip', needs `h' extension
+.*Warning: invalid CSR `htinst', needs `h' extension
+.*Warning: invalid CSR `htinst', needs `h' extension
+.*Warning: invalid CSR `hgeip', needs `h' extension
+.*Warning: invalid CSR `hgeip', needs `h' extension
 .*Warning: read-only CSR is written `csrw hgeip,a1'
+.*Warning: invalid CSR `henvcfg', needs `h' extension
+.*Warning: invalid CSR `henvcfg', needs `h' extension
 .*Warning: invalid CSR `henvcfgh', needs rv32i extension
+.*Warning: invalid CSR `henvcfgh', needs `h' extension
 .*Warning: invalid CSR `henvcfgh', needs rv32i extension
+.*Warning: invalid CSR `henvcfgh', needs `h' extension
+.*Warning: invalid CSR `hgatp', needs `h' extension
+.*Warning: invalid CSR `hgatp', needs `h' extension
+.*Warning: invalid CSR `htimedelta', needs `h' extension
+.*Warning: invalid CSR `htimedelta', needs `h' extension
 .*Warning: invalid CSR `htimedeltah', needs rv32i extension
+.*Warning: invalid CSR `htimedeltah', needs `h' extension
 .*Warning: invalid CSR `htimedeltah', needs rv32i extension
+.*Warning: invalid CSR `htimedeltah', needs `h' extension
+.*Warning: invalid CSR `vsstatus', needs `h' extension
+.*Warning: invalid CSR `vsstatus', needs `h' extension
+.*Warning: invalid CSR `vsie', needs `h' extension
+.*Warning: invalid CSR `vsie', needs `h' extension
+.*Warning: invalid CSR `vstvec', needs `h' extension
+.*Warning: invalid CSR `vstvec', needs `h' extension
+.*Warning: invalid CSR `vsscratch', needs `h' extension
+.*Warning: invalid CSR `vsscratch', needs `h' extension
+.*Warning: invalid CSR `vsepc', needs `h' extension
+.*Warning: invalid CSR `vsepc', needs `h' extension
+.*Warning: invalid CSR `vscause', needs `h' extension
+.*Warning: invalid CSR `vscause', needs `h' extension
+.*Warning: invalid CSR `vstval', needs `h' extension
+.*Warning: invalid CSR `vstval', needs `h' extension
+.*Warning: invalid CSR `vsip', needs `h' extension
+.*Warning: invalid CSR `vsip', needs `h' extension
+.*Warning: invalid CSR `vsatp', needs `h' extension
+.*Warning: invalid CSR `vsatp', needs `h' extension
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `ubadaddr' for the privileged spec `1.12'
 .*Warning: invalid CSR `sbadaddr' for the privileged spec `1.12'
 
 [      ]+[0-9a-f]+:[   ]+33e59073[     ]+csrw[         ]+mhpmevent30,a1
 [      ]+[0-9a-f]+:[   ]+33f02573[     ]+csrr[         ]+a0,mhpmevent31
 [      ]+[0-9a-f]+:[   ]+33f59073[     ]+csrw[         ]+mhpmevent31,a1
-[      ]+[0-9a-f]+:[   ]+60002573[     ]+csrr[         ]+a0,0x600
-[      ]+[0-9a-f]+:[   ]+60059073[     ]+csrw[         ]+0x600,a1
-[      ]+[0-9a-f]+:[   ]+60202573[     ]+csrr[         ]+a0,0x602
-[      ]+[0-9a-f]+:[   ]+60259073[     ]+csrw[         ]+0x602,a1
-[      ]+[0-9a-f]+:[   ]+60302573[     ]+csrr[         ]+a0,0x603
-[      ]+[0-9a-f]+:[   ]+60359073[     ]+csrw[         ]+0x603,a1
-[      ]+[0-9a-f]+:[   ]+60402573[     ]+csrr[         ]+a0,0x604
-[      ]+[0-9a-f]+:[   ]+60459073[     ]+csrw[         ]+0x604,a1
-[      ]+[0-9a-f]+:[   ]+60602573[     ]+csrr[         ]+a0,0x606
-[      ]+[0-9a-f]+:[   ]+60659073[     ]+csrw[         ]+0x606,a1
-[      ]+[0-9a-f]+:[   ]+60702573[     ]+csrr[         ]+a0,0x607
-[      ]+[0-9a-f]+:[   ]+60759073[     ]+csrw[         ]+0x607,a1
-[      ]+[0-9a-f]+:[   ]+64302573[     ]+csrr[         ]+a0,0x643
-[      ]+[0-9a-f]+:[   ]+64359073[     ]+csrw[         ]+0x643,a1
-[      ]+[0-9a-f]+:[   ]+64402573[     ]+csrr[         ]+a0,0x644
-[      ]+[0-9a-f]+:[   ]+64459073[     ]+csrw[         ]+0x644,a1
-[      ]+[0-9a-f]+:[   ]+64502573[     ]+csrr[         ]+a0,0x645
-[      ]+[0-9a-f]+:[   ]+64559073[     ]+csrw[         ]+0x645,a1
-[      ]+[0-9a-f]+:[   ]+64a02573[     ]+csrr[         ]+a0,0x64a
-[      ]+[0-9a-f]+:[   ]+64a59073[     ]+csrw[         ]+0x64a,a1
-[      ]+[0-9a-f]+:[   ]+e1202573[     ]+csrr[         ]+a0,0xe12
-[      ]+[0-9a-f]+:[   ]+e1259073[     ]+csrw[         ]+0xe12,a1
-[      ]+[0-9a-f]+:[   ]+60a02573[     ]+csrr[         ]+a0,0x60a
-[      ]+[0-9a-f]+:[   ]+60a59073[     ]+csrw[         ]+0x60a,a1
-[      ]+[0-9a-f]+:[   ]+61a02573[     ]+csrr[         ]+a0,0x61a
-[      ]+[0-9a-f]+:[   ]+61a59073[     ]+csrw[         ]+0x61a,a1
-[      ]+[0-9a-f]+:[   ]+68002573[     ]+csrr[         ]+a0,0x680
-[      ]+[0-9a-f]+:[   ]+68059073[     ]+csrw[         ]+0x680,a1
-[      ]+[0-9a-f]+:[   ]+60502573[     ]+csrr[         ]+a0,0x605
-[      ]+[0-9a-f]+:[   ]+60559073[     ]+csrw[         ]+0x605,a1
-[      ]+[0-9a-f]+:[   ]+61502573[     ]+csrr[         ]+a0,0x615
-[      ]+[0-9a-f]+:[   ]+61559073[     ]+csrw[         ]+0x615,a1
-[      ]+[0-9a-f]+:[   ]+20002573[     ]+csrr[         ]+a0,0x200
-[      ]+[0-9a-f]+:[   ]+20059073[     ]+csrw[         ]+0x200,a1
-[      ]+[0-9a-f]+:[   ]+20402573[     ]+csrr[         ]+a0,0x204
-[      ]+[0-9a-f]+:[   ]+20459073[     ]+csrw[         ]+0x204,a1
-[      ]+[0-9a-f]+:[   ]+20502573[     ]+csrr[         ]+a0,0x205
-[      ]+[0-9a-f]+:[   ]+20559073[     ]+csrw[         ]+0x205,a1
-[      ]+[0-9a-f]+:[   ]+24002573[     ]+csrr[         ]+a0,0x240
-[      ]+[0-9a-f]+:[   ]+24059073[     ]+csrw[         ]+0x240,a1
-[      ]+[0-9a-f]+:[   ]+24102573[     ]+csrr[         ]+a0,0x241
-[      ]+[0-9a-f]+:[   ]+24159073[     ]+csrw[         ]+0x241,a1
-[      ]+[0-9a-f]+:[   ]+24202573[     ]+csrr[         ]+a0,0x242
-[      ]+[0-9a-f]+:[   ]+24259073[     ]+csrw[         ]+0x242,a1
-[      ]+[0-9a-f]+:[   ]+24302573[     ]+csrr[         ]+a0,0x243
-[      ]+[0-9a-f]+:[   ]+24359073[     ]+csrw[         ]+0x243,a1
-[      ]+[0-9a-f]+:[   ]+24402573[     ]+csrr[         ]+a0,0x244
-[      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+0x244,a1
-[      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,0x280
-[      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+0x280,a1
+[      ]+[0-9a-f]+:[   ]+60002573[     ]+csrr[         ]+a0,hstatus
+[      ]+[0-9a-f]+:[   ]+60059073[     ]+csrw[         ]+hstatus,a1
+[      ]+[0-9a-f]+:[   ]+60202573[     ]+csrr[         ]+a0,hedeleg
+[      ]+[0-9a-f]+:[   ]+60259073[     ]+csrw[         ]+hedeleg,a1
+[      ]+[0-9a-f]+:[   ]+60302573[     ]+csrr[         ]+a0,hideleg
+[      ]+[0-9a-f]+:[   ]+60359073[     ]+csrw[         ]+hideleg,a1
+[      ]+[0-9a-f]+:[   ]+60402573[     ]+csrr[         ]+a0,hie
+[      ]+[0-9a-f]+:[   ]+60459073[     ]+csrw[         ]+hie,a1
+[      ]+[0-9a-f]+:[   ]+60602573[     ]+csrr[         ]+a0,hcounteren
+[      ]+[0-9a-f]+:[   ]+60659073[     ]+csrw[         ]+hcounteren,a1
+[      ]+[0-9a-f]+:[   ]+60702573[     ]+csrr[         ]+a0,hgeie
+[      ]+[0-9a-f]+:[   ]+60759073[     ]+csrw[         ]+hgeie,a1
+[      ]+[0-9a-f]+:[   ]+64302573[     ]+csrr[         ]+a0,htval
+[      ]+[0-9a-f]+:[   ]+64359073[     ]+csrw[         ]+htval,a1
+[      ]+[0-9a-f]+:[   ]+64402573[     ]+csrr[         ]+a0,hip
+[      ]+[0-9a-f]+:[   ]+64459073[     ]+csrw[         ]+hip,a1
+[      ]+[0-9a-f]+:[   ]+64502573[     ]+csrr[         ]+a0,hvip
+[      ]+[0-9a-f]+:[   ]+64559073[     ]+csrw[         ]+hvip,a1
+[      ]+[0-9a-f]+:[   ]+64a02573[     ]+csrr[         ]+a0,htinst
+[      ]+[0-9a-f]+:[   ]+64a59073[     ]+csrw[         ]+htinst,a1
+[      ]+[0-9a-f]+:[   ]+e1202573[     ]+csrr[         ]+a0,hgeip
+[      ]+[0-9a-f]+:[   ]+e1259073[     ]+csrw[         ]+hgeip,a1
+[      ]+[0-9a-f]+:[   ]+60a02573[     ]+csrr[         ]+a0,henvcfg
+[      ]+[0-9a-f]+:[   ]+60a59073[     ]+csrw[         ]+henvcfg,a1
+[      ]+[0-9a-f]+:[   ]+61a02573[     ]+csrr[         ]+a0,henvcfgh
+[      ]+[0-9a-f]+:[   ]+61a59073[     ]+csrw[         ]+henvcfgh,a1
+[      ]+[0-9a-f]+:[   ]+68002573[     ]+csrr[         ]+a0,hgatp
+[      ]+[0-9a-f]+:[   ]+68059073[     ]+csrw[         ]+hgatp,a1
+[      ]+[0-9a-f]+:[   ]+60502573[     ]+csrr[         ]+a0,htimedelta
+[      ]+[0-9a-f]+:[   ]+60559073[     ]+csrw[         ]+htimedelta,a1
+[      ]+[0-9a-f]+:[   ]+61502573[     ]+csrr[         ]+a0,htimedeltah
+[      ]+[0-9a-f]+:[   ]+61559073[     ]+csrw[         ]+htimedeltah,a1
+[      ]+[0-9a-f]+:[   ]+20002573[     ]+csrr[         ]+a0,vsstatus
+[      ]+[0-9a-f]+:[   ]+20059073[     ]+csrw[         ]+vsstatus,a1
+[      ]+[0-9a-f]+:[   ]+20402573[     ]+csrr[         ]+a0,vsie
+[      ]+[0-9a-f]+:[   ]+20459073[     ]+csrw[         ]+vsie,a1
+[      ]+[0-9a-f]+:[   ]+20502573[     ]+csrr[         ]+a0,vstvec
+[      ]+[0-9a-f]+:[   ]+20559073[     ]+csrw[         ]+vstvec,a1
+[      ]+[0-9a-f]+:[   ]+24002573[     ]+csrr[         ]+a0,vsscratch
+[      ]+[0-9a-f]+:[   ]+24059073[     ]+csrw[         ]+vsscratch,a1
+[      ]+[0-9a-f]+:[   ]+24102573[     ]+csrr[         ]+a0,vsepc
+[      ]+[0-9a-f]+:[   ]+24159073[     ]+csrw[         ]+vsepc,a1
+[      ]+[0-9a-f]+:[   ]+24202573[     ]+csrr[         ]+a0,vscause
+[      ]+[0-9a-f]+:[   ]+24259073[     ]+csrw[         ]+vscause,a1
+[      ]+[0-9a-f]+:[   ]+24302573[     ]+csrr[         ]+a0,vstval
+[      ]+[0-9a-f]+:[   ]+24359073[     ]+csrw[         ]+vstval,a1
+[      ]+[0-9a-f]+:[   ]+24402573[     ]+csrr[         ]+a0,vsip
+[      ]+[0-9a-f]+:[   ]+24459073[     ]+csrw[         ]+vsip,a1
+[      ]+[0-9a-f]+:[   ]+28002573[     ]+csrr[         ]+a0,vsatp
+[      ]+[0-9a-f]+:[   ]+28059073[     ]+csrw[         ]+vsatp,a1
 [      ]+[0-9a-f]+:[   ]+04302573[     ]+csrr[         ]+a0,ubadaddr
 [      ]+[0-9a-f]+:[   ]+04359073[     ]+csrw[         ]+ubadaddr,a1
 [      ]+[0-9a-f]+:[   ]+14302573[     ]+csrr[         ]+a0,sbadaddr
 
 .*Warning: invalid CSR `mhpmcounter31h', needs rv32i extension
 .*Warning: invalid CSR `mcountinhibit' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `mcountinhibit' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `hstatus' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `hstatus' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `hedeleg' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `hedeleg' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `hideleg' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `hideleg' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `hie' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `hie' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `hcounteren' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `hcounteren' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `hgeie' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `hgeie' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `htval' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `htval' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `hip' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `hip' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `hvip' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `hvip' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `htinst' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `htinst' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `hgeip' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `hgeip' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `hstatus', needs `h' extension
+.*Warning: invalid CSR `hstatus', needs `h' extension
+.*Warning: invalid CSR `hedeleg', needs `h' extension
+.*Warning: invalid CSR `hedeleg', needs `h' extension
+.*Warning: invalid CSR `hideleg', needs `h' extension
+.*Warning: invalid CSR `hideleg', needs `h' extension
+.*Warning: invalid CSR `hie', needs `h' extension
+.*Warning: invalid CSR `hie', needs `h' extension
+.*Warning: invalid CSR `hcounteren', needs `h' extension
+.*Warning: invalid CSR `hcounteren', needs `h' extension
+.*Warning: invalid CSR `hgeie', needs `h' extension
+.*Warning: invalid CSR `hgeie', needs `h' extension
+.*Warning: invalid CSR `htval', needs `h' extension
+.*Warning: invalid CSR `htval', needs `h' extension
+.*Warning: invalid CSR `hip', needs `h' extension
+.*Warning: invalid CSR `hip', needs `h' extension
+.*Warning: invalid CSR `hvip', needs `h' extension
+.*Warning: invalid CSR `hvip', needs `h' extension
+.*Warning: invalid CSR `htinst', needs `h' extension
+.*Warning: invalid CSR `htinst', needs `h' extension
+.*Warning: invalid CSR `hgeip', needs `h' extension
+.*Warning: invalid CSR `hgeip', needs `h' extension
 .*Warning: read-only CSR is written `csrw hgeip,a1'
-.*Warning: invalid CSR `henvcfg' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `henvcfg' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `henvcfg', needs `h' extension
+.*Warning: invalid CSR `henvcfg', needs `h' extension
 .*Warning: invalid CSR `henvcfgh', needs rv32i extension
-.*Warning: invalid CSR `henvcfgh' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `henvcfgh', needs `h' extension
 .*Warning: invalid CSR `henvcfgh', needs rv32i extension
-.*Warning: invalid CSR `henvcfgh' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `hgatp' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `hgatp' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `htimedelta' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `htimedelta' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `henvcfgh', needs `h' extension
+.*Warning: invalid CSR `hgatp', needs `h' extension
+.*Warning: invalid CSR `hgatp', needs `h' extension
+.*Warning: invalid CSR `htimedelta', needs `h' extension
+.*Warning: invalid CSR `htimedelta', needs `h' extension
 .*Warning: invalid CSR `htimedeltah', needs rv32i extension
-.*Warning: invalid CSR `htimedeltah' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `htimedeltah', needs `h' extension
 .*Warning: invalid CSR `htimedeltah', needs rv32i extension
-.*Warning: invalid CSR `htimedeltah' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `vsstatus' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `vsstatus' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `vsie' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `vsie' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `vstvec' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `vstvec' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `vsscratch' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `vsscratch' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `vsepc' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `vsepc' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `vscause' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `vscause' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `vstval' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `vstval' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `vsip' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `vsip' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `vsatp' for the privileged spec `1.9.1'
-.*Warning: invalid CSR `vsatp' for the privileged spec `1.9.1'
+.*Warning: invalid CSR `htimedeltah', needs `h' extension
+.*Warning: invalid CSR `vsstatus', needs `h' extension
+.*Warning: invalid CSR `vsstatus', needs `h' extension
+.*Warning: invalid CSR `vsie', needs `h' extension
+.*Warning: invalid CSR `vsie', needs `h' extension
+.*Warning: invalid CSR `vstvec', needs `h' extension
+.*Warning: invalid CSR `vstvec', needs `h' extension
+.*Warning: invalid CSR `vsscratch', needs `h' extension
+.*Warning: invalid CSR `vsscratch', needs `h' extension
+.*Warning: invalid CSR `vsepc', needs `h' extension
+.*Warning: invalid CSR `vsepc', needs `h' extension
+.*Warning: invalid CSR `vscause', needs `h' extension
+.*Warning: invalid CSR `vscause', needs `h' extension
+.*Warning: invalid CSR `vstval', needs `h' extension
+.*Warning: invalid CSR `vstval', needs `h' extension
+.*Warning: invalid CSR `vsip', needs `h' extension
+.*Warning: invalid CSR `vsip', needs `h' extension
+.*Warning: invalid CSR `vsatp', needs `h' extension
+.*Warning: invalid CSR `vsatp', needs `h' extension
 .*Warning: invalid CSR `utval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `utval' for the privileged spec `1.9.1'
 .*Warning: invalid CSR `fflags', needs `f' extension
 
-#as: -march=rv32i
+#as: -march=rv32ih
 #source: h-ext-32.s
 #objdump: -d
 
 
-#as: -march=rv64i
+#as: -march=rv64ih
 #source: h-ext-64.s
 #objdump: -d
 
 
+++ /dev/null
-#as: -march=rv32ih
-#source: empty.s
-#error_output: march-fail-single-prefix.l
 
+++ /dev/null
-#as: -march=rv32ihfoo2p0
-#source: empty.s
-#error_output: march-fail-unknown.l
 
 DECLARE_CSR(mhpmevent30, CSR_MHPMEVENT30, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
 DECLARE_CSR(mhpmevent31, CSR_MHPMEVENT31, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_DRAFT)
 /* Privileged Hypervisor CSRs.  */
-DECLARE_CSR(hstatus, CSR_HSTATUS, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hedeleg, CSR_HEDELEG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hideleg, CSR_HIDELEG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hie, CSR_HIE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hcounteren, CSR_HCOUNTEREN, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hgeie, CSR_HGEIE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(htval, CSR_HTVAL, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hip, CSR_HIP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hvip, CSR_HVIP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(htinst, CSR_HTINST, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hgeip, CSR_HGEIP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(henvcfg, CSR_HENVCFG, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(henvcfgh, CSR_HENVCFGH, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(hgatp, CSR_HGATP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(htimedelta, CSR_HTIMEDELTA, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(htimedeltah, CSR_HTIMEDELTAH, CSR_CLASS_I_32, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(vsstatus, CSR_VSSTATUS, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(vsie, CSR_VSIE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(vstvec, CSR_VSTVEC, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(vsscratch, CSR_VSSCRATCH, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(vsepc, CSR_VSEPC, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(vscause, CSR_VSCAUSE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
-DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_I, PRIV_SPEC_CLASS_1P12, PRIV_SPEC_CLASS_DRAFT)
+DECLARE_CSR(hstatus, CSR_HSTATUS, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hedeleg, CSR_HEDELEG, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hideleg, CSR_HIDELEG, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hie, CSR_HIE, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hcounteren, CSR_HCOUNTEREN, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hgeie, CSR_HGEIE, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(htval, CSR_HTVAL, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hip, CSR_HIP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hvip, CSR_HVIP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(htinst, CSR_HTINST, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hgeip, CSR_HGEIP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(henvcfg, CSR_HENVCFG, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(henvcfgh, CSR_HENVCFGH, CSR_CLASS_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(hgatp, CSR_HGATP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(htimedelta, CSR_HTIMEDELTA, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(htimedeltah, CSR_HTIMEDELTAH, CSR_CLASS_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(vsstatus, CSR_VSSTATUS, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(vsie, CSR_VSIE, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(vstvec, CSR_VSTVEC, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(vsscratch, CSR_VSSCRATCH, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(vsepc, CSR_VSEPC, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(vscause, CSR_VSCAUSE, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
+DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
 /* Dropped CSRs.  */
 DECLARE_CSR(mbase, CSR_MBASE, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
 DECLARE_CSR(mbound, CSR_MBOUND, CSR_CLASS_I, PRIV_SPEC_CLASS_1P9P1, PRIV_SPEC_CLASS_1P10)
 
   INSN_CLASS_ZICBOM,
   INSN_CLASS_ZICBOP,
   INSN_CLASS_ZICBOZ,
+  INSN_CLASS_H,
 };
 
 /* This structure holds information for a particular instruction.  */
 
 {"hinval.gvma",     0, INSN_CLASS_SVINVAL, "s,t", MATCH_HINVAL_GVMA, MASK_HINVAL_GVMA, match_opcode, 0 },
 
 /* Hypervisor instructions.  */
-{"hfence.vvma", 0, INSN_CLASS_I, "",       MATCH_HFENCE_VVMA, MASK_HFENCE_VVMA|MASK_RS1|MASK_RS2, match_opcode, INSN_ALIAS },
-{"hfence.vvma", 0, INSN_CLASS_I, "s",      MATCH_HFENCE_VVMA, MASK_HFENCE_VVMA|MASK_RS2, match_opcode, INSN_ALIAS },
-{"hfence.vvma", 0, INSN_CLASS_I, "s,t",    MATCH_HFENCE_VVMA, MASK_HFENCE_VVMA, match_opcode, 0 },
-{"hfence.gvma", 0, INSN_CLASS_I, "",       MATCH_HFENCE_GVMA, MASK_HFENCE_GVMA|MASK_RS1|MASK_RS2, match_opcode, INSN_ALIAS },
-{"hfence.gvma", 0, INSN_CLASS_I, "s",      MATCH_HFENCE_GVMA, MASK_HFENCE_GVMA|MASK_RS2, match_opcode, INSN_ALIAS },
-{"hfence.gvma", 0, INSN_CLASS_I, "s,t",    MATCH_HFENCE_GVMA, MASK_HFENCE_GVMA, match_opcode, 0 },
-{"hlv.b",       0, INSN_CLASS_I, "d,0(s)", MATCH_HLV_B, MASK_HLV_B, match_opcode, INSN_DREF|INSN_1_BYTE },
-{"hlv.bu",      0, INSN_CLASS_I, "d,0(s)", MATCH_HLV_BU, MASK_HLV_BU, match_opcode, INSN_DREF|INSN_1_BYTE },
-{"hlv.h",       0, INSN_CLASS_I, "d,0(s)", MATCH_HLV_H, MASK_HLV_H, match_opcode, INSN_DREF|INSN_2_BYTE },
-{"hlv.hu",      0, INSN_CLASS_I, "d,0(s)", MATCH_HLV_HU, MASK_HLV_HU, match_opcode, INSN_DREF|INSN_2_BYTE },
-{"hlvx.hu",     0, INSN_CLASS_I, "d,0(s)", MATCH_HLVX_HU, MASK_HLVX_HU, match_opcode, INSN_DREF|INSN_2_BYTE },
-{"hlv.w",       0, INSN_CLASS_I, "d,0(s)", MATCH_HLV_W, MASK_HLV_W, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"hlv.wu",     64, INSN_CLASS_I, "d,0(s)", MATCH_HLV_WU, MASK_HLV_WU, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"hlvx.wu",     0, INSN_CLASS_I, "d,0(s)", MATCH_HLVX_WU, MASK_HLVX_WU, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"hlv.d",      64, INSN_CLASS_I, "d,0(s)", MATCH_HLV_D, MASK_HLV_D, match_opcode, INSN_DREF|INSN_8_BYTE },
-{"hsv.b",       0, INSN_CLASS_I, "t,0(s)", MATCH_HSV_B, MASK_HSV_B, match_opcode, INSN_DREF|INSN_1_BYTE },
-{"hsv.h",       0, INSN_CLASS_I, "t,0(s)", MATCH_HSV_H, MASK_HSV_H, match_opcode, INSN_DREF|INSN_2_BYTE },
-{"hsv.w",       0, INSN_CLASS_I, "t,0(s)", MATCH_HSV_W, MASK_HSV_W, match_opcode, INSN_DREF|INSN_4_BYTE },
-{"hsv.d",      64, INSN_CLASS_I, "t,0(s)", MATCH_HSV_D, MASK_HSV_D, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"hfence.vvma", 0, INSN_CLASS_H, "",       MATCH_HFENCE_VVMA, MASK_HFENCE_VVMA|MASK_RS1|MASK_RS2, match_opcode, INSN_ALIAS },
+{"hfence.vvma", 0, INSN_CLASS_H, "s",      MATCH_HFENCE_VVMA, MASK_HFENCE_VVMA|MASK_RS2, match_opcode, INSN_ALIAS },
+{"hfence.vvma", 0, INSN_CLASS_H, "s,t",    MATCH_HFENCE_VVMA, MASK_HFENCE_VVMA, match_opcode, 0 },
+{"hfence.gvma", 0, INSN_CLASS_H, "",       MATCH_HFENCE_GVMA, MASK_HFENCE_GVMA|MASK_RS1|MASK_RS2, match_opcode, INSN_ALIAS },
+{"hfence.gvma", 0, INSN_CLASS_H, "s",      MATCH_HFENCE_GVMA, MASK_HFENCE_GVMA|MASK_RS2, match_opcode, INSN_ALIAS },
+{"hfence.gvma", 0, INSN_CLASS_H, "s,t",    MATCH_HFENCE_GVMA, MASK_HFENCE_GVMA, match_opcode, 0 },
+{"hlv.b",       0, INSN_CLASS_H, "d,0(s)", MATCH_HLV_B, MASK_HLV_B, match_opcode, INSN_DREF|INSN_1_BYTE },
+{"hlv.bu",      0, INSN_CLASS_H, "d,0(s)", MATCH_HLV_BU, MASK_HLV_BU, match_opcode, INSN_DREF|INSN_1_BYTE },
+{"hlv.h",       0, INSN_CLASS_H, "d,0(s)", MATCH_HLV_H, MASK_HLV_H, match_opcode, INSN_DREF|INSN_2_BYTE },
+{"hlv.hu",      0, INSN_CLASS_H, "d,0(s)", MATCH_HLV_HU, MASK_HLV_HU, match_opcode, INSN_DREF|INSN_2_BYTE },
+{"hlvx.hu",     0, INSN_CLASS_H, "d,0(s)", MATCH_HLVX_HU, MASK_HLVX_HU, match_opcode, INSN_DREF|INSN_2_BYTE },
+{"hlv.w",       0, INSN_CLASS_H, "d,0(s)", MATCH_HLV_W, MASK_HLV_W, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"hlv.wu",     64, INSN_CLASS_H, "d,0(s)", MATCH_HLV_WU, MASK_HLV_WU, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"hlvx.wu",     0, INSN_CLASS_H, "d,0(s)", MATCH_HLVX_WU, MASK_HLVX_WU, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"hlv.d",      64, INSN_CLASS_H, "d,0(s)", MATCH_HLV_D, MASK_HLV_D, match_opcode, INSN_DREF|INSN_8_BYTE },
+{"hsv.b",       0, INSN_CLASS_H, "t,0(s)", MATCH_HSV_B, MASK_HSV_B, match_opcode, INSN_DREF|INSN_1_BYTE },
+{"hsv.h",       0, INSN_CLASS_H, "t,0(s)", MATCH_HSV_H, MASK_HSV_H, match_opcode, INSN_DREF|INSN_2_BYTE },
+{"hsv.w",       0, INSN_CLASS_H, "t,0(s)", MATCH_HSV_W, MASK_HSV_W, match_opcode, INSN_DREF|INSN_4_BYTE },
+{"hsv.d",      64, INSN_CLASS_H, "t,0(s)", MATCH_HSV_D, MASK_HSV_D, match_opcode, INSN_DREF|INSN_8_BYTE },
 
 /* Terminate the list.  */
 {0, 0, INSN_CLASS_NONE, 0, 0, 0, 0, 0}