summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Norton2016-01-28 17:32:05 +0000
committerRobert Norton2016-01-28 17:32:05 +0000
commit18b5be634007e84ce93b3de0bd5a07b5bbb64160 (patch)
tree539d22ec1ec62d22b40ef535214e67e22a6ebc74
parent537fa693fc97ba138fcdf51712f5979be2a01e35 (diff)
Add test for sltu. Fixed decode function which was returning wrong ast node but test still does not pass, apparently because sail is doing signed comparison for <
-rw-r--r--mips/mips.sail4
-rwxr-xr-xsrc/test/mips/test_sltu.elfbin0 -> 74387 bytes
2 files changed, 2 insertions, 2 deletions
diff --git a/mips/mips.sail b/mips/mips.sail
index 1bf97a0e..4df6f72c 100644
--- a/mips/mips.sail
+++ b/mips/mips.sail
@@ -185,7 +185,7 @@ function (option<Exception>, option<bit[64]>) TranslateAddress ((bit[64]) vAddr,
case (0b1111111111111111111111111111111, 0b00) -> (None, Some(EXTZ(vAddr[28..0]))) (* kseg0 unmapped cached 32-bit compat *)
case (_, _) -> (err, None) (* xkseg mapped TODO *)
}
- case 0b10 -> (None, Some(EXTZ(vAddr[58..0]))) (* xkphys bits 61-59 are cache mode which we ignore *)
+ case 0b10 -> (None, Some(vAddr)) (* xkphys bits 61-59 are cache mode which we ignore *)
case 0b01 -> (err, None) (* xsseg - supervisor mapped TODO *)
case 0b00 -> (err, None) (* xuseg - user mapped TODO *)
}
@@ -765,7 +765,7 @@ function clause execute (SLTI(rs, rt, imm)) =
union ast member regregreg SLTU
function clause decode (0b000000 : (regno) rs : (regno) rt : (regno) rd : 0b00000 : 0b101011) =
- Some(SLT(rs, rt, rd))
+ Some(SLTU(rs, rt, rd))
function clause execute (SLTU(rs, rt, rd)) =
{
wGPR(rd) := if (rGPR(rs) < rGPR(rt)) then 1 else 0
diff --git a/src/test/mips/test_sltu.elf b/src/test/mips/test_sltu.elf
new file mode 100755
index 00000000..443bc489
--- /dev/null
+++ b/src/test/mips/test_sltu.elf
Binary files differ