diff --git a/CHANGE_LOG.txt b/CHANGE_LOG.txt index 771e1ee..321b066 100644 --- a/CHANGE_LOG.txt +++ b/CHANGE_LOG.txt @@ -1,4 +1,5 @@ 0.97 +- fixed some cycle timing bugs of instruction set execution - added stack trace for misalignment warnings if MSP430 Core is in log mode - added MSP430 Core as a loggable - added emulation of DS2411 for generating MAC addresses diff --git a/se/sics/mspsim/chip/CC2420.java b/se/sics/mspsim/chip/CC2420.java index 399e6f9..6f9d0c5 100644 --- a/se/sics/mspsim/chip/CC2420.java +++ b/se/sics/mspsim/chip/CC2420.java @@ -1083,8 +1083,6 @@ public class CC2420 extends Chip implements USARTListener, RFListener, RFSource } public void stateChanged(int state) { - // TODO Auto-generated method stub - } } // CC2420 diff --git a/se/sics/mspsim/core/MSP430Core.java b/se/sics/mspsim/core/MSP430Core.java index d17ad1d..d5ccffc 100644 --- a/se/sics/mspsim/core/MSP430Core.java +++ b/se/sics/mspsim/core/MSP430Core.java @@ -857,12 +857,11 @@ public class MSP430Core extends Chip implements MSP430Constants { dstAddress = readRegister(PC); pc += 2; writeRegister(PC, pc); - cycles += 5; } else { dstAddress = readRegister(dstRegister); writeRegister(dstRegister, dstAddress + (word ? 2 : 1)); - cycles += 3; } + cycles += 3; break; } } @@ -927,6 +926,8 @@ public class MSP430Core extends Chip implements MSP430Constants { cycles += (ad == AM_REG || ad == AM_IND_AUTOINC) ? 2 : 1; write = false; updateStatus = false; + System.out.println("Cycles on PUSH: " + (cycles - startCycles)); + break; case CALL: // store current PC on stack... (current PC points to next instr.) @@ -954,10 +955,12 @@ public class MSP430Core extends Chip implements MSP430Constants { write = false; updateStatus = false; + cycles += 4; + if (debugInterrupts) { System.out.println("### RETI at " + pc + " => " + reg[PC] + " SP after: " + reg[SP]); - } + } // This assumes that all interrupts will get back using RETI! handlePendingInterrupts();