@@ -1044,7 +1044,7 @@ RVOP(fmvwx, { rv->F_int[ir->rd] = rv->X[ir->rs1]; })
1044
1044
* This instruction is used to generate pointers to stack-allocated variables,
1045
1045
* and expands to addi rd', x2, nzuimm[9:2].
1046
1046
*/
1047
- RVOP (caddi4spn , { rv -> X [ir -> rd ] = rv -> X [2 ] + (uint16_t ) ir -> imm ; })
1047
+ RVOP (caddi4spn , { rv -> X [ir -> rd ] = rv -> X [rv_reg_sp ] + (uint16_t ) ir -> imm ; })
1048
1048
1049
1049
/* C.LW loads a 32-bit value from memory into register rd'. It computes an
1050
1050
* effective address by adding the zero-extended offset, scaled by 4, to the
@@ -1080,7 +1080,7 @@ RVOP(caddi, { rv->X[ir->rd] += (int16_t) ir->imm; })
1080
1080
1081
1081
/* C.JAL */
1082
1082
RVOP (cjal , {
1083
- rv -> X [1 ] = rv -> PC + ir -> insn_len ;
1083
+ rv -> X [rv_reg_ra ] = rv -> PC + ir -> insn_len ;
1084
1084
rv -> PC += ir -> imm ;
1085
1085
RV_EXC_MISALIGN_HANDLER (rv -> PC , insn , true, 0 );
1086
1086
return ir -> branch_taken -> impl (rv , ir -> branch_taken );
@@ -1244,7 +1244,7 @@ RVOP(cadd, { rv->X[ir->rd] = rv->X[ir->rs1] + rv->X[ir->rs2]; })
1244
1244
1245
1245
/* C.SWSP */
1246
1246
RVOP (cswsp , {
1247
- const uint32_t addr = rv -> X [2 ] + ir -> imm ;
1247
+ const uint32_t addr = rv -> X [rv_reg_sp ] + ir -> imm ;
1248
1248
RV_EXC_MISALIGN_HANDLER (3 , store , true, 1 );
1249
1249
rv -> io .mem_write_w (addr , rv -> X [ir -> rs2 ]);
1250
1250
})
0 commit comments