diff options
| author | Robert Norton | 2016-05-18 16:15:41 +0100 |
|---|---|---|
| committer | Robert Norton | 2016-05-18 16:15:56 +0100 |
| commit | a73404e8655d2b3e07d34a5649f853f8568a5921 (patch) | |
| tree | a15063ec9b6b99e9486e1849250e6ae358d22f88 | |
| parent | 8007d3f8c0ffe2b4d98db63ba390630acbc5e717 (diff) | |
Make TLB address error exception save BadVAddr.
| -rw-r--r-- | mips/mips_prelude.sail | 3 |
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) |
