Updated RegisterMonitor to use same access modes as Memory

This commit is contained in:
Niclas Finne 2012-10-17 21:54:34 +02:00
parent dbbc771224
commit 995a336e36
5 changed files with 27 additions and 25 deletions

View File

@ -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);

View File

@ -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;
}

View File

@ -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);

View File

@ -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;

View File

@ -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) {