summaryrefslogtreecommitdiff
path: root/risc-v
diff options
context:
space:
mode:
authorRobert Norton2017-08-15 13:30:44 +0100
committerRobert Norton2017-08-15 13:30:47 +0100
commite94a22447236cfb4f7e82516b1a9abcdfaf5c419 (patch)
tree2f09eeeb2afe309720bb3dd7fe95a3681e0320af /risc-v
parente8dcc8ab28d2d7b7764db95ba611b4d64b5bdade (diff)
riscv: fix word/half backwards in load.
Diffstat (limited to 'risc-v')
-rw-r--r--risc-v/riscv.sail16
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)
}
}