diff --git a/se/sics/mspsim/cli/DebugCommands.java b/se/sics/mspsim/cli/DebugCommands.java index d95c936..91a0d71 100644 --- a/se/sics/mspsim/cli/DebugCommands.java +++ b/se/sics/mspsim/cli/DebugCommands.java @@ -206,7 +206,7 @@ public class DebugCommands implements CommandBundle { } monitor = new RegisterMonitor.Adapter() { @Override - public void notifyWriteBefore(int register, int data, int mode) { + public void notifyWriteBefore(int register, int data, AccessMode mode) { if (watchMode == 0) { int pc = cpu.getPC(); String adrStr = getRegisterName(register); diff --git a/se/sics/mspsim/core/MSP430Core.java b/se/sics/mspsim/core/MSP430Core.java index c62fdd0..a726064 100644 --- a/se/sics/mspsim/core/MSP430Core.java +++ b/se/sics/mspsim/core/MSP430Core.java @@ -438,9 +438,9 @@ public class MSP430Core extends Chip implements MSP430Constants { RegisterMonitor rwm = regWriteMonitors[r]; if (rwm != null) { // TODO Add register access mode - rwm.notifyWriteBefore(r, value, 0); + rwm.notifyWriteBefore(r, value, AccessMode.WORD); reg[r] = value; - rwm.notifyWriteAfter(r, value, 0); + rwm.notifyWriteAfter(r, value, AccessMode.WORD); } else { reg[r] = value; } @@ -493,9 +493,9 @@ public class MSP430Core extends Chip implements MSP430Constants { RegisterMonitor rrm = regReadMonitors[r]; if (rrm != null) { // TODO Register access mode - rrm.notifyReadBefore(r, 0); + rrm.notifyReadBefore(r, AccessMode.WORD); value = reg[r]; - rrm.notifyReadAfter(r, 0); + rrm.notifyReadAfter(r, AccessMode.WORD); } else { value = reg[r]; } @@ -512,9 +512,9 @@ public class MSP430Core extends Chip implements MSP430Constants { RegisterMonitor rrm = regReadMonitors[r]; if (rrm != null) { // TODO Register access mode - rrm.notifyReadBefore(r, 0); + rrm.notifyReadBefore(r, AccessMode.WORD); value = reg[r]; - rrm.notifyReadAfter(r, 0); + rrm.notifyReadAfter(r, AccessMode.WORD); } else { value = reg[r]; } @@ -525,18 +525,18 @@ public class MSP430Core extends Chip implements MSP430Constants { int registerValue; RegisterMonitor rm = regReadMonitors[r]; if (rm != null) { - rm.notifyReadBefore(r, 0); + rm.notifyReadBefore(r, AccessMode.WORD); registerValue = reg[r]; - rm.notifyReadAfter(r, 0); + rm.notifyReadAfter(r, AccessMode.WORD); } else { registerValue = reg[r]; } rm = regWriteMonitors[r]; registerValue += value; if (rm != null) { - rm.notifyWriteBefore(r, registerValue, 0); + rm.notifyWriteBefore(r, registerValue, AccessMode.WORD); reg[r] = registerValue; - rm.notifyWriteAfter(r, registerValue, 0); + rm.notifyWriteAfter(r, registerValue, AccessMode.WORD); } else { reg[r] = registerValue; } diff --git a/se/sics/mspsim/core/RegisterMonitor.java b/se/sics/mspsim/core/RegisterMonitor.java index 9d44ce9..b49fc3c 100644 --- a/se/sics/mspsim/core/RegisterMonitor.java +++ b/se/sics/mspsim/core/RegisterMonitor.java @@ -4,28 +4,28 @@ import se.sics.mspsim.util.ProxySupport; public interface RegisterMonitor { - public void notifyReadBefore(int reg, int mode); - public void notifyReadAfter(int reg, int mode); + public void notifyReadBefore(int reg, Memory.AccessMode mode); + public void notifyReadAfter(int reg, Memory.AccessMode mode); - public void notifyWriteBefore(int reg, int data, int mode); - public void notifyWriteAfter(int reg, int data, int mode); + public void notifyWriteBefore(int reg, int data, Memory.AccessMode mode); + public void notifyWriteAfter(int reg, int data, Memory.AccessMode mode); public static class Adapter implements RegisterMonitor { @Override - public void notifyReadBefore(int reg, int mode) { + public void notifyReadBefore(int reg, Memory.AccessMode mode) { } @Override - public void notifyReadAfter(int reg, int mode) { + public void notifyReadAfter(int reg, Memory.AccessMode mode) { } @Override - public void notifyWriteBefore(int reg, int data, int mode) { + public void notifyWriteBefore(int reg, int data, Memory.AccessMode mode) { } @Override - public void notifyWriteAfter(int reg, int data, int mode) { + public void notifyWriteAfter(int reg, int data, Memory.AccessMode mode) { } } @@ -34,7 +34,7 @@ public interface RegisterMonitor { public static final Proxy INSTANCE = new Proxy(); @Override - public void notifyReadBefore(int reg, int mode) { + public void notifyReadBefore(int reg, Memory.AccessMode mode) { RegisterMonitor[] listeners = this.listeners; for(RegisterMonitor listener : listeners) { listener.notifyReadBefore(reg, mode); @@ -42,7 +42,7 @@ public interface RegisterMonitor { } @Override - public void notifyReadAfter(int reg, int mode) { + public void notifyReadAfter(int reg, Memory.AccessMode mode) { RegisterMonitor[] listeners = this.listeners; for(RegisterMonitor listener : listeners) { listener.notifyReadAfter(reg, mode); @@ -50,7 +50,7 @@ public interface RegisterMonitor { } @Override - public void notifyWriteBefore(int reg, int data, int mode) { + public void notifyWriteBefore(int reg, int data, Memory.AccessMode mode) { RegisterMonitor[] listeners = this.listeners; for(RegisterMonitor listener : listeners) { listener.notifyWriteBefore(reg, data, mode); @@ -58,7 +58,7 @@ public interface RegisterMonitor { } @Override - public void notifyWriteAfter(int reg, int data, int mode) { + public void notifyWriteAfter(int reg, int data, Memory.AccessMode mode) { RegisterMonitor[] listeners = this.listeners; for(RegisterMonitor listener : listeners) { listener.notifyWriteAfter(reg, data, mode); diff --git a/se/sics/mspsim/ui/StackUI.java b/se/sics/mspsim/ui/StackUI.java index 2bd6324..366b22d 100644 --- a/se/sics/mspsim/ui/StackUI.java +++ b/se/sics/mspsim/ui/StackUI.java @@ -45,6 +45,7 @@ import javax.swing.JPanel; import se.sics.mspsim.core.MSP430; import se.sics.mspsim.core.RegisterMonitor; +import se.sics.mspsim.core.Memory.AccessMode; import se.sics.mspsim.util.ComponentRegistry; import se.sics.mspsim.util.MapTable; import se.sics.mspsim.util.ServiceComponent; @@ -148,7 +149,7 @@ public class StackUI extends JPanel implements ServiceComponent { registerMonitor = new RegisterMonitor.Adapter() { @Override - public void notifyWriteBefore(int register, int data, int mode) { + public void notifyWriteBefore(int register, int data, AccessMode mode) { int size = stackStartAddress - data; if (minData[pos] > size) { minData[pos] = size; diff --git a/se/sics/mspsim/util/StackMonitor.java b/se/sics/mspsim/util/StackMonitor.java index bc3d445..bc01294 100644 --- a/se/sics/mspsim/util/StackMonitor.java +++ b/se/sics/mspsim/util/StackMonitor.java @@ -1,6 +1,7 @@ package se.sics.mspsim.util; import se.sics.mspsim.core.MSP430; import se.sics.mspsim.core.RegisterMonitor; +import se.sics.mspsim.core.Memory.AccessMode; public class StackMonitor { @@ -61,7 +62,7 @@ public class StackMonitor { cpu.addRegisterWriteMonitor(MSP430.SP, new RegisterMonitor.Adapter() { @Override - public void notifyWriteBefore(int reg, int data, int mode) { + public void notifyWriteBefore(int reg, int data, AccessMode mode) { // TODO add support for 20 bit addresses stack = ((stackStartAddress - data) + 0xffff) & 0xffff; if (stack > stackMax) {