mirror of https://github.com/contiki-ng/mspsim
Updated RegisterMonitor to use same access modes as Memory
This commit is contained in:
parent
dbbc771224
commit
995a336e36
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue