Skip to content

Commit 3a468e6

Browse files
authored
Merge pull request #180 from ChinYikMing/master
Improve consistency in accessing RISC-V registers
2 parents 86b5616 + ea22c87 commit 3a468e6

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

src/emulate.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -1044,7 +1044,7 @@ RVOP(fmvwx, { rv->F_int[ir->rd] = rv->X[ir->rs1]; })
10441044
* This instruction is used to generate pointers to stack-allocated variables,
10451045
* and expands to addi rd', x2, nzuimm[9:2].
10461046
*/
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; })
10481048

10491049
/* C.LW loads a 32-bit value from memory into register rd'. It computes an
10501050
* 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; })
10801080

10811081
/* C.JAL */
10821082
RVOP(cjal, {
1083-
rv->X[1] = rv->PC + ir->insn_len;
1083+
rv->X[rv_reg_ra] = rv->PC + ir->insn_len;
10841084
rv->PC += ir->imm;
10851085
RV_EXC_MISALIGN_HANDLER(rv->PC, insn, true, 0);
10861086
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]; })
12441244

12451245
/* C.SWSP */
12461246
RVOP(cswsp, {
1247-
const uint32_t addr = rv->X[2] + ir->imm;
1247+
const uint32_t addr = rv->X[rv_reg_sp] + ir->imm;
12481248
RV_EXC_MISALIGN_HANDLER(3, store, true, 1);
12491249
rv->io.mem_write_w(addr, rv->X[ir->rs2]);
12501250
})

0 commit comments

Comments
 (0)