// Path: se/sics/mspsim/core/EmulationLogger.java
// public enum WarningType {
//     EMULATION_ERROR, EXECUTION,
//     MISALIGNED_READ, MISALIGNED_WRITE,
//     ADDRESS_OUT_OF_BOUNDS_READ, ADDRESS_OUT_OF_BOUNDS_WRITE,
//     ILLEGAL_IO_WRITE, VOID_IO_READ, VOID_IO_WRITE
// };


import se.sics.mspsim.core.EmulationLogger.WarningType;
import se.sics.mspsim.util.ArrayUtils;


  public String getName() {
    return name;
  }

  public abstract int getModeMax();

  /* By default the cs is set high */
  public boolean getChipSelect() {
    return true;
  }
  
  public String info() {
    return "* no info";
  }

  public int getLogLevel() {
      return logLevel;
  }

  public void setLogLevel(int l) {
      logLevel = l;
      DEBUG = logLevel == Loggable.DEBUG;
  }
  
  protected void log(String msg) {
      logger.log(this, msg);
  }

  /* warn about anything above severe - but what types are severe? */

// Path: se/sics/mspsim/core/EmulationLogger.java
// public enum WarningType {
//     EMULATION_ERROR, EXECUTION,
//     MISALIGNED_READ, MISALIGNED_WRITE,
//     ADDRESS_OUT_OF_BOUNDS_READ, ADDRESS_OUT_OF_BOUNDS_WRITE,
//     ILLEGAL_IO_WRITE, VOID_IO_READ, VOID_IO_WRITE
// };


// Path: se/sics/mspsim/core/Chip.java
import se.sics.mspsim.core.EmulationLogger.WarningType;
import se.sics.mspsim.util.ArrayUtils;


  public String getName() {
    return name;
  }

  public abstract int getModeMax();

  /* By default the cs is set high */
  public boolean getChipSelect() {
    return true;
  }
  
  public String info() {
    return "* no info";
  }

  public int getLogLevel() {
      return logLevel;
  }

  public void setLogLevel(int l) {
      logLevel = l;
      DEBUG = logLevel == Loggable.DEBUG;
  }
  
  protected void log(String msg) {
      logger.log(this, msg);
  }

  /* warn about anything above severe - but what types are severe? */

  protected void logw(WarningType type, String msg) {
