summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Norton2016-05-18 16:15:41 +0100
committerRobert Norton2016-05-18 16:15:56 +0100
commita73404e8655d2b3e07d34a5649f853f8568a5921 (patch)
treea15063ec9b6b99e9486e1849250e6ae358d22f88
parent8007d3f8c0ffe2b4d98db63ba390630acbc5e717 (diff)
Make TLB address error exception save BadVAddr.
-rw-r--r--mips/mips_prelude.sail3
1 files changed, 1 insertions, 2 deletions
diff --git a/mips/mips_prelude.sail b/mips/mips_prelude.sail
index 6105deb8..1f2b55b9 100644
--- a/mips/mips_prelude.sail
+++ b/mips/mips_prelude.sail
@@ -406,7 +406,6 @@ function (bit[64]) TLBTranslate2 ((bit[64]) vAddr, (MemAccessType) accessType) =
function (bit[64]) TLBTranslate ((bit[64]) vAddr, (MemAccessType) accessType) =
{
- err := (if (accessType == StoreData) then AdES else AdEL);
let currentAccessLevel = getAccessLevel() in
let (requiredLevel, addr) = switch(vAddr[63..62]) {
case 0b11 -> switch(vAddr[61..31], vAddr[30..29]) { (* xkseg *)
@@ -421,7 +420,7 @@ function (bit[64]) TLBTranslate ((bit[64]) vAddr, (MemAccessType) accessType) =
case 0b00 -> (User, None) (* xuseg - user mapped *)
} in
if (((nat)currentAccessLevel) < ((nat)requiredLevel)) then
- exit (SignalException(err))
+ exit (SignalExceptionBadAddr(if (accessType == StoreData) then AdES else AdEL, vAddr))
else switch(addr) {
case (Some(a)) -> a
case None -> TLBTranslate2(vAddr, accessType)