|
@@ -974,6 +974,8 @@ typedef enum {
|
|
rv_op_amomaxu_h = 943,
|
|
rv_op_amomaxu_h = 943,
|
|
rv_op_amocas_b = 944,
|
|
rv_op_amocas_b = 944,
|
|
rv_op_amocas_h = 945,
|
|
rv_op_amocas_h = 945,
|
|
|
|
+ rv_op_wrs_sto = 946,
|
|
|
|
+ rv_op_wrs_nto = 947,
|
|
} rv_op;
|
|
} rv_op;
|
|
|
|
|
|
/* register names */
|
|
/* register names */
|
|
@@ -2232,6 +2234,8 @@ const rv_opcode_data rvi_opcode_data[] = {
|
|
{ "amomaxu.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 },
|
|
{ "amomaxu.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 },
|
|
{ "amocas.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 },
|
|
{ "amocas.b", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 },
|
|
{ "amocas.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 },
|
|
{ "amocas.h", rv_codec_r_a, rv_fmt_aqrl_rd_rs2_rs1, NULL, 0, 0, 0 },
|
|
|
|
+ { "wrs.sto", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 },
|
|
|
|
+ { "wrs.nto", rv_codec_none, rv_fmt_none, NULL, 0, 0, 0 },
|
|
};
|
|
};
|
|
|
|
|
|
/* CSR names */
|
|
/* CSR names */
|
|
@@ -3980,6 +3984,8 @@ static void decode_inst_opcode(rv_decode *dec, rv_isa isa)
|
|
case 0: op = rv_op_ecall; break;
|
|
case 0: op = rv_op_ecall; break;
|
|
case 32: op = rv_op_ebreak; break;
|
|
case 32: op = rv_op_ebreak; break;
|
|
case 64: op = rv_op_uret; break;
|
|
case 64: op = rv_op_uret; break;
|
|
|
|
+ case 416: op = rv_op_wrs_nto; break;
|
|
|
|
+ case 928: op = rv_op_wrs_sto; break;
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
case 256:
|
|
case 256:
|