@@ -266,6 +266,18 @@ struct : public arg_t {
266266 }
267267} rvc_sp;
268268
269+ struct : public arg_t {
270+ std::string to_string (insn_t UNUSED insn) const {
271+ return xpr_name[X_RA];
272+ }
273+ } rvc_ra;
274+
275+ struct : public arg_t {
276+ std::string to_string (insn_t UNUSED insn) const {
277+ return xpr_name[X_T0];
278+ }
279+ } rvc_t0;
280+
269281struct : public arg_t {
270282 std::string to_string (insn_t insn) const {
271283 return std::to_string ((int )insn.rvc_imm ());
@@ -2381,6 +2393,23 @@ void disassembler_t::add_instructions(const isa_parser_t* isa)
23812393 DEFINE_XSTORE_BASE (sw_rl);
23822394 DEFINE_XSTORE_BASE (sd_rl);
23832395 }
2396+
2397+ if (isa->extension_enabled (EXT_ZICFISS)) {
2398+ DISASM_INSN (" sspush" , sspush_x1, 0 , {&xrs2});
2399+ DISASM_INSN (" sspush" , sspush_x5, 0 , {&xrs2});
2400+ DISASM_INSN (" sspopchk" , sspopchk_x1, 0 , {&xrs1});
2401+ DISASM_INSN (" sspopchk" , sspopchk_x5, 0 , {&xrs1});
2402+ DISASM_INSN (" ssrdp" , ssrdp, 0 , {&xrd});
2403+ DEFINE_XAMO (ssamoswap_w);
2404+
2405+ if (isa->get_max_xlen () == 64 )
2406+ DEFINE_XAMO (ssamoswap_d)
2407+
2408+ if (isa->extension_enabled (EXT_ZCA)) {
2409+ DISASM_INSN (" c.sspush" , c_sspush_x1, 0 , {&rvc_ra});
2410+ DISASM_INSN (" c.sspopchk" , c_sspopchk_x5, 0 , {&rvc_t0});
2411+ }
2412+ }
23842413}
23852414
23862415disassembler_t ::disassembler_t (const isa_parser_t *isa)
0 commit comments