From d17f981238451c360a30bd631ca8a4bc95762a33 Mon Sep 17 00:00:00 2001 From: brian Date: Tue, 13 Dec 2005 23:22:03 -0800 Subject: [PATCH] better handling of alignment errors darcs-hash:20051214072203-24bed-a08ee821938079032efd1b8992ab61571bc369d8.gz --- src/org/ibex/nestedvm/Interpreter.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/org/ibex/nestedvm/Interpreter.java b/src/org/ibex/nestedvm/Interpreter.java index b6b3424..e39ecfa 100644 --- a/src/org/ibex/nestedvm/Interpreter.java +++ b/src/org/ibex/nestedvm/Interpreter.java @@ -470,9 +470,10 @@ public class Interpreter extends UnixRuntime implements Cloneable { } catch(RuntimeException e) { tmp = memRead(addr&~3); } - switch(addr&2) { + switch(addr&3) { case 0: tmp = (tmp>>>16)&0xffff; break; case 2: tmp = (tmp>>> 0)&0xffff; break; + default: throw new ReadFaultException(addr); } if((tmp&0x8000)!=0) tmp |= 0xffff0000; // sign extend r[rt] = tmp; @@ -523,9 +524,10 @@ public class Interpreter extends UnixRuntime implements Cloneable { } catch(RuntimeException e) { tmp = memRead(addr&~3); } - switch(addr&2) { + switch(addr&3) { case 0: r[rt] = (tmp>>>16)&0xffff; break; case 2: r[rt] = (tmp>>> 0)&0xffff; break; + default: throw new ReadFaultException(addr); } break; } @@ -571,9 +573,10 @@ public class Interpreter extends UnixRuntime implements Cloneable { } catch(RuntimeException e) { tmp = memRead(addr&~3); } - switch(addr&2) { + switch(addr&3) { case 0: tmp = (tmp&0x0000ffff) | ((r[rt]&0xffff)<<16); break; case 2: tmp = (tmp&0xffff0000) | ((r[rt]&0xffff)<< 0); break; + default: throw new WriteFaultException(addr); } try { writePages[addr>>>pageShift][(addr>>>2)&(PAGE_WORDS-1)] = tmp; -- 1.7.10.4