diff options
| author | Robert Norton | 2017-08-15 13:30:44 +0100 |
|---|---|---|
| committer | Robert Norton | 2017-08-15 13:30:47 +0100 |
| commit | e94a22447236cfb4f7e82516b1a9abcdfaf5c419 (patch) | |
| tree | 2f09eeeb2afe309720bb3dd7fe95a3681e0320af /risc-v | |
| parent | e8dcc8ab28d2d7b7764db95ba611b4d64b5bdade (diff) | |
riscv: fix word/half backwards in load.
Diffstat (limited to 'risc-v')
| -rw-r--r-- | risc-v/riscv.sail | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/risc-v/riscv.sail b/risc-v/riscv.sail index 01fcbdc4..1a5a3b33 100644 --- a/risc-v/riscv.sail +++ b/risc-v/riscv.sail @@ -208,15 +208,15 @@ function clause execute(LOAD(imm, rs1, rd, unsigned, width)) = let (bit[64]) result = if unsigned then switch (width) { case BYTE -> EXTZ(MEMr(addr, 1)) - case WORD -> EXTZ(MEMr(addr, 2)) - case HALF -> EXTZ(MEMr(addr, 4)) + case HALF -> EXTZ(MEMr(addr, 2)) + case WORD -> EXTZ(MEMr(addr, 4)) case DOUBLE -> MEMr(addr, 8) } else switch (width) { case BYTE -> EXTS(MEMr(addr, 1)) - case WORD -> EXTS(MEMr(addr, 2)) - case HALF -> EXTS(MEMr(addr, 4)) + case HALF -> EXTS(MEMr(addr, 2)) + case WORD -> EXTS(MEMr(addr, 4)) case DOUBLE -> MEMr(addr, 8) } in wGPR(rd, result) @@ -230,15 +230,15 @@ function clause execute (STORE(imm, rs2, rs1, width)) = let (bit[64]) addr = rGPR(rs1) + EXTS(imm) in { switch (width) { case BYTE -> MEMea(addr, 1) - case WORD -> MEMea(addr, 2) - case HALF -> MEMea(addr, 4) + case HALF -> MEMea(addr, 2) + case WORD -> MEMea(addr, 4) case DOUBLE -> MEMea(addr, 8) }; let rs2_val = rGPR(rs2) in switch (width) { case BYTE -> MEMval(addr, 1, rs2_val[7..0]) - case WORD -> MEMval(addr, 2, rs2_val[15..0]) - case HALF -> MEMval(addr, 4, rs2_val[31..0]) + case HALF -> MEMval(addr, 2, rs2_val[15..0]) + case WORD -> MEMval(addr, 4, rs2_val[31..0]) case DOUBLE -> MEMval(addr, 8, rs2_val) } } |
