Merge zizzer:/bk/newmem
into  zower.eecs.umich.edu:/eecshome/m5/newmem

src/arch/sparc/isa/formats/mem/util.isa:
src/arch/sparc/isa_traits.hh:
src/arch/sparc/system.cc:
    Hand Merge

--HG--
extra : convert_revision : d5e0c97caebb616493e2f642e915969d7028109c
diff --git a/SConstruct b/SConstruct
index 7e8c6c2..f99bc1f 100644
--- a/SConstruct
+++ b/SConstruct
@@ -66,6 +66,7 @@
 # Python library imports
 import sys
 import os
+import subprocess
 from os.path import join as joinpath
 
 # Check for recent-enough Python and SCons versions.  If your system's
@@ -206,11 +207,36 @@
 
 # M5_PLY is used by isa_parser.py to find the PLY package.
 env.Append(ENV = { 'M5_PLY' : Dir('ext/ply') })
+env['GCC'] = False
+env['SUNCC'] = False
+env['GCC'] = subprocess.Popen(env['CXX'] + ' --version', shell=True, 
+        stdout=subprocess.PIPE, stderr=subprocess.STDOUT, 
+        close_fds=True).communicate()[0].find('GCC') >= 0
+env['SUNCC'] = subprocess.Popen(env['CXX'] + ' -V', shell=True, 
+        stdout=subprocess.PIPE, stderr=subprocess.STDOUT, 
+        close_fds=True).communicate()[0].find('Sun C++') >= 0
+if (env['GCC'] and env['SUNCC']):
+    print 'Error: How can we have both g++ and Sun C++ at the same time?'
+    Exit(1)
+
 
 # Set up default C++ compiler flags
-env.Append(CCFLAGS='-pipe')
-env.Append(CCFLAGS='-fno-strict-aliasing')
-env.Append(CCFLAGS=Split('-Wall -Wno-sign-compare -Werror -Wundef'))
+if env['GCC']:
+    env.Append(CCFLAGS='-pipe')
+    env.Append(CCFLAGS='-fno-strict-aliasing')
+    env.Append(CCFLAGS=Split('-Wall -Wno-sign-compare -Werror -Wundef'))
+elif env['SUNCC']:
+    env.Append(CCFLAGS='-Qoption ccfe')
+    env.Append(CCFLAGS='-features=gcc')
+    env.Append(CCFLAGS='-features=extensions')
+    env.Append(CCFLAGS='-library=stlport4')
+    env.Append(CCFLAGS='-xar')
+#    env.Append(CCFLAGS='-instances=semiexplicit')
+else:
+    print 'Error: Don\'t know what compiler options to use for your compiler.'
+    print '       Please fix SConstruct and try again.'
+    Exit(1)
+
 if sys.platform == 'cygwin':
     # cygwin has some header file issues...
     env.Append(CCFLAGS=Split("-Wno-uninitialized"))
@@ -293,7 +319,7 @@
 
 # Check for zlib.  If the check passes, libz will be automatically
 # added to the LIBS environment variable.
-if not conf.CheckLibWithHeader('z', 'zlib.h', 'C++'):
+if not conf.CheckLibWithHeader('z', 'zlib.h', 'C++','zlibVersion();'):
     print 'Error: did not find needed zlib compression library '\
           'and/or zlib.h header file.'
     print '       Please install zlib and try again.'
diff --git a/src/SConscript b/src/SConscript
index a998dd5..6c179f8 100644
--- a/src/SConscript
+++ b/src/SConscript
@@ -311,30 +311,41 @@
     envList.append(newEnv)
 
 # Debug binary
-# Solaris seems to have some issue with DWARF2 debugging information, it's ok
-# with stabs though
-if sys.platform == 'sunos5':
-   debug_flag = '-gstabs+'
+ccflags = {}
+if env['GCC']:
+    if sys.platform == 'sunos5':
+        ccflags['debug'] = '-gstabs+'
+    else:
+        ccflags['debug'] = '-ggdb3'
+    ccflags['opt'] = '-g -O3'
+    ccflags['fast'] = '-O3'
+    ccflags['prof'] = '-O3 -g -pg'
+elif env['SUNCC']:
+    ccflags['debug'] = '-g0'
+    ccflags['opt'] = '-g -O'
+    ccflags['fast'] = '-fast'
+    ccflags['prof'] = '-fast -g -pg'
 else:
-   debug_flag = '-ggdb3'
+    print 'Unknown compiler, please fix compiler options'
+    Exit(1)    
 
 makeEnv('debug', '.do',
-        CCFLAGS = Split('%s -O0' % debug_flag),
+        CCFLAGS = Split(ccflags['debug']),
         CPPDEFINES = ['DEBUG', 'TRACING_ON=1'])
 
 # Optimized binary
 makeEnv('opt', '.o',
-        CCFLAGS = Split('-g -O3'),
+        CCFLAGS = Split(ccflags['opt']),
         CPPDEFINES = ['TRACING_ON=1'])
 
 # "Fast" binary
 makeEnv('fast', '.fo', strip = True,
-        CCFLAGS = Split('-O3'),
+        CCFLAGS = Split(ccflags['fast']),
         CPPDEFINES = ['NDEBUG', 'TRACING_ON=0'])
 
 # Profiled binary
 makeEnv('prof', '.po',
-        CCFLAGS = Split('-O3 -g -pg'),
+        CCFLAGS = Split(ccflags['prof']),
         CPPDEFINES = ['NDEBUG', 'TRACING_ON=0'],
         LINKFLAGS = '-pg')
 
diff --git a/src/arch/alpha/ev5.cc b/src/arch/alpha/ev5.cc
index 3d71fbd..8d13511 100644
--- a/src/arch/alpha/ev5.cc
+++ b/src/arch/alpha/ev5.cc
@@ -94,8 +94,6 @@
     int ipl = 0;
     int summary = 0;
 
-    cpu->checkInterrupts = false;
-
     if (cpu->readMiscReg(IPR_ASTRR))
         panic("asynchronous traps not implemented\n");
 
@@ -155,8 +153,6 @@
     if (!misspeculating()) {
         if (kernelStats)
             kernelStats->hwrei();
-
-        cpu->checkInterrupts = true;
     }
 
     // FIXME: XXX check for interrupts? XXX
diff --git a/src/arch/sparc/floatregfile.cc b/src/arch/sparc/floatregfile.cc
index 7f3d5a7..1bb78c6 100644
--- a/src/arch/sparc/floatregfile.cc
+++ b/src/arch/sparc/floatregfile.cc
@@ -72,16 +72,19 @@
         float32_t result32;
         memcpy(&result32, regSpace + 4 * floatReg, sizeof(result32));
         result = htog(result32);
+        DPRINTF(Sparc, "Read FP32 register %d = 0x%x\n", floatReg, result);
         break;
       case DoubleWidth:
         float64_t result64;
         memcpy(&result64, regSpace + 4 * floatReg, sizeof(result64));
         result = htog(result64);
+        DPRINTF(Sparc, "Read FP64 register %d = 0x%x\n", floatReg, result);
         break;
       case QuadWidth:
         float128_t result128;
         memcpy(&result128, regSpace + 4 * floatReg, sizeof(result128));
         result = htog(result128);
+        DPRINTF(Sparc, "Read FP128 register %d = 0x%x\n", floatReg, result);
         break;
       default:
         panic("Attempted to read a %d bit floating point register!", width);
@@ -101,16 +104,19 @@
         uint32_t result32;
         memcpy(&result32, regSpace + 4 * floatReg, sizeof(result32));
         result = htog(result32);
+        DPRINTF(Sparc, "Read FP32 bits register %d = 0x%x\n", floatReg, result);
         break;
       case DoubleWidth:
         uint64_t result64;
         memcpy(&result64, regSpace + 4 * floatReg, sizeof(result64));
         result = htog(result64);
+        DPRINTF(Sparc, "Read FP64 bits register %d = 0x%x\n", floatReg, result);
         break;
       case QuadWidth:
         uint64_t result128;
         memcpy(&result128, regSpace + 4 * floatReg, sizeof(result128));
         result = htog(result128);
+        DPRINTF(Sparc, "Read FP128 bits register %d = 0x%x\n", floatReg, result);
         break;
       default:
         panic("Attempted to read a %d bit floating point register!", width);
diff --git a/src/arch/sparc/isa/base.isa b/src/arch/sparc/isa/base.isa
index b785113..58a17f2 100644
--- a/src/arch/sparc/isa/base.isa
+++ b/src/arch/sparc/isa/base.isa
@@ -416,3 +416,27 @@
         }
 }};
 
+output exec {{
+    /// Check "FP enabled" machine status bit.  Called when executing any FP
+    /// instruction in full-system mode.
+    /// @retval Full-system mode: NoFault if FP is enabled, FpDisabled
+    /// if not.  Non-full-system mode: always returns NoFault.
+#if FULL_SYSTEM
+    inline Fault checkFpEnableFault(%(CPU_exec_context)s *xc)
+    {
+        Fault fault = NoFault;	// dummy... this ipr access should not fault
+        if (xc->readMiscRegWithEffect(MISCREG_PSTATE) & PSTATE::pef &&
+            xc->readMiscRegWithEffect(MISCREG_FPRS) & 0x4)
+            return NoFault;
+        else
+            return new FpDisabled;
+    }
+#else
+    inline Fault checkFpEnableFault(%(CPU_exec_context)s *xc)
+    {
+        return NoFault;
+    }
+#endif
+}};
+
+
diff --git a/src/arch/sparc/isa/decoder.isa b/src/arch/sparc/isa/decoder.isa
index 138485a..cc6eded 100644
--- a/src/arch/sparc/isa/decoder.isa
+++ b/src/arch/sparc/isa/decoder.isa
@@ -192,7 +192,7 @@
                 Y = Rd<63:32>;
             }});
             0x0B: smul({{
-                Rd.sdw = Rs1.sdw<31:0> * Rs2_or_imm13<31:0>;
+                Rd.sdw = sext<32>(Rs1.sdw<31:0>) * sext<32>(Rs2_or_imm13<31:0>);
                 Y = Rd.sdw<63:32>;
             }});
             0x0C: subc({{Rd.sdw = Rs1.sdw + (~Rs2_or_imm13) + 1 - Ccr<0:0>}});
@@ -215,10 +215,10 @@
                 else
                 {
                     Rd.udw = ((int64_t)((Y << 32) | Rs1.sdw<31:0>)) / Rs2_or_imm13.sdw;
-                    if(Rd.udw<63:31> != 0)
+                    if((int64_t)Rd.udw >= std::numeric_limits<int32_t>::max())
                         Rd.udw = 0x7FFFFFFF;
-                    else if(Rd.udw<63:> && Rd.udw<62:31> != 0xFFFFFFFF)
-                        Rd.udw = 0xFFFFFFFF80000000ULL;
+                    else if((int64_t)Rd.udw <= std::numeric_limits<int32_t>::min())
+                        Rd.udw = ULL(0xFFFFFFFF80000000);
                 }
             }});
         }
@@ -252,8 +252,7 @@
                 Rd = resTemp = Rs1 + val2 + carryin;}},
                 {{(Rs1<31:0> + val2<31:0> + carryin)<32:>}},
                 {{Rs1<31:> == val2<31:> && val2<31:> != resTemp<31:>}},
-                {{(Rs1<63:1> + val2<63:1> +
-                    ((Rs1 & val2) | (carryin & (Rs1 | val2)))<0:>)<63:>}},
+                {{((Rs1 & val2) | (~resTemp & (Rs1 | val2)))<63:>}},
                 {{Rs1<63:> == val2<63:> && val2<63:> != resTemp<63:>}}
             );
             0x1A: IntOpCcRes::umulcc({{
@@ -262,15 +261,15 @@
                 Y = resTemp<63:32>;}});
             0x1B: IntOpCcRes::smulcc({{
                 int64_t resTemp;
-                Rd = resTemp = Rs1.sdw<31:0> * Rs2_or_imm13.sdw<31:0>;
+                Rd = resTemp = sext<32>(Rs1.sdw<31:0>) * sext<32>(Rs2_or_imm13<31:0>);
                 Y = resTemp<63:32>;}});
             0x1C: subccc({{
                 int64_t resTemp, val2 = Rs2_or_imm13;
                 int64_t carryin = Ccr<0:0>;
                 Rd = resTemp = Rs1 + ~val2 + 1 - carryin;}},
-                {{(~((Rs1<31:0> + (~(val2 + carryin))<31:0> + 1))<32:>)}},
+                {{((~Rs1 & val2) | (resTemp & (~Rs1 | val2)))<31:>}},
                 {{Rs1<31:> != val2<31:> && Rs1<31:> != resTemp<31:>}},
-                {{(~((Rs1<63:1> + (~(val2 + carryin))<63:1>) + (Rs1<0:> + (~(val2+carryin))<0:> + 1)<63:1>))<63:>}},
+                {{((~Rs1 & val2) | (resTemp & (~Rs1 | val2)))<63:>}},
                 {{Rs1<63:> != val2<63:> && Rs1<63:> != resTemp<63:>}}
             );
             0x1D: IntOpCcRes::udivxcc({{
@@ -299,10 +298,10 @@
                 else
                 {
                     Rd = (int64_t)((Y << 32) | Rs1.sdw<31:0>) / val2;
-                    overflow = (Rd<63:31> != 0);
-                    underflow = (Rd<63:> && Rd<62:31> != 0xFFFFFFFF);
+                    overflow = ((int64_t)Rd >= std::numeric_limits<int32_t>::max());
+                    underflow = ((int64_t)Rd <= std::numeric_limits<int32_t>::min());
                     if(overflow) Rd = 0x7FFFFFFF;
-                    else if(underflow) Rd = 0xFFFFFFFF80000000ULL;
+                    else if(underflow) Rd = ULL(0xFFFFFFFF80000000);
                 } }},
                 {{0}},
                 {{overflow || underflow}},
@@ -379,7 +378,7 @@
                 0x1: srax({{Rd = Rs1.sdw >> (I ? SHCNT64 : Rs2<5:0>);}});
             }
             0x28: decode RS1 {
-                0x00: NoPriv::rdy({{Rd = Y;}});
+                0x00: NoPriv::rdy({{Rd = Y<31:0>;}});
                 //1 should cause an illegal instruction exception
                 0x02: NoPriv::rdccr({{Rd = Ccr;}});
                 0x03: NoPriv::rdasi({{Rd = Asi;}});
@@ -529,7 +528,7 @@
                 0x7: movrge({{Rd = (Rs1.sdw >= 0) ? Rs2_or_imm10 : Rd;}});
             }
             0x30: decode RD {
-                0x00: NoPriv::wry({{Y = Rs1 ^ Rs2_or_imm13;}});
+                0x00: NoPriv::wry({{Y = (Rs1 ^ Rs2_or_imm13)<31:0>;}});
                 //0x01 should cause an illegal instruction exception
                 0x02: NoPriv::wrccr({{Ccr = Rs1 ^ Rs2_or_imm13;}});
                 0x03: NoPriv::wrasi({{Asi = Rs1 ^ Rs2_or_imm13;}});
@@ -667,7 +666,7 @@
                         Fsr &= ~(7 << 14);
                         Fsr &= ~(0x1F);
                     }});
-                    0x03: Trap::fmovq({{fault = new FpDisabled;}});
+                    0x03: Trap::fmovq({{fault = new FpExceptionOther;}});
                     0x05: fnegs({{
                         Frds.uw = Frs2s.uw ^ (1UL << 31);
                         //fsr.ftt = fsr.cexc = 0
@@ -694,8 +693,8 @@
                         Fsr &= ~(0x1F);
                     }});
                     0x0B: Trap::fabsq({{fault = new FpDisabled;}});
-                    0x29: fsqrts({{Frds.sf = sqrt(Frs2s.sf);}});
-                    0x2A: fsqrtd({{Frd.df = sqrt(Frs2.df);}});
+                    0x29: fsqrts({{Frds.sf = std::sqrt(Frs2s.sf);}});
+                    0x2A: fsqrtd({{Frd.df = std::sqrt(Frs2.df);}});
                     0x2B: Trap::fsqrtq({{fault = new FpDisabled;}});
                     0x41: fadds({{Frds.sf = Frs1s.sf + Frs2s.sf;}});
                     0x42: faddd({{Frd.df = Frs1.df + Frs2.df;}});
@@ -863,11 +862,11 @@
                 0x72: Trap::fxnor({{fault = new IllegalInstruction;}});
                 0x73: Trap::fxnors({{fault = new IllegalInstruction;}});
                 0x74: BasicOperate::fsrc1({{Frd.udw = Frs1.udw;}});
-                0x75: BasicOperate::fsrc1s({{Frd.uw = Frs1.uw;}});
+                0x75: BasicOperate::fsrc1s({{Frds.uw = Frs1s.uw;}});
                 0x76: Trap::fornot2({{fault = new IllegalInstruction;}});
                 0x77: Trap::fornot2s({{fault = new IllegalInstruction;}});
                 0x78: BasicOperate::fsrc2({{Frd.udw = Frs2.udw;}});
-                0x79: BasicOperate::fsrc2s({{Frd.uw = Frs2.uw;}});
+                0x79: BasicOperate::fsrc2s({{Frds.uw = Frs2s.uw;}});
                 0x7A: Trap::fornot1({{fault = new IllegalInstruction;}});
                 0x7B: Trap::fornot1s({{fault = new IllegalInstruction;}});
                 0x7C: Trap::for({{fault = new IllegalInstruction;}});
@@ -885,7 +884,7 @@
                 else
                 {
                     if (Pstate<3:>)
-                        (Rd = xc->readPC())<31:0>;
+                        Rd = (xc->readPC())<31:0>;
                     else
                         Rd = xc->readPC();
                     NNPC = target;
@@ -1037,13 +1036,14 @@
             0x0B: ldx({{Rd = (int64_t)Mem.sdw;}});
         }
         0x0D: LoadStore::ldstub(
-        {{Rd = Mem.ub;}},
-        {{Mem.ub = 0xFF;}});
+        {{uReg0 = Mem.ub;}},
+        {{Rd.ub = uReg0;
+          Mem.ub = 0xFF;}});
         0x0E: Store::stx({{Mem.udw = Rd}});
         0x0F: LoadStore::swap(
-            {{uReg0 = Rd.uw;
-            Rd.uw = Mem.uw;}},
-            {{Mem.uw = uReg0;}});
+            {{ uReg0 = Mem.uw}},
+            {{ Mem.uw = Rd.uw;
+               Rd.uw = uReg0;}});
         format LoadAlt {
             0x10: lduwa({{Rd = Mem.uw;}}, {{EXT_ASI}});
             0x11: lduba({{Rd = Mem.ub;}}, {{EXT_ASI}});
@@ -1051,34 +1051,34 @@
             0x13: decode EXT_ASI {
                 //ASI_LDTD_AIUP
                 0x22: TwinLoad::ldtx_aiup(
-                    {{RdTwin.udw = Mem.udw}}, {{EXT_ASI}});
+                    {{RdTwin.udw = Mem.udw;}}, {{EXT_ASI}});
                 //ASI_LDTD_AIUS
                 0x23: TwinLoad::ldtx_aius(
-                    {{RdTwin.udw = Mem.udw}}, {{EXT_ASI}});
+                    {{RdTwin.udw = Mem.udw;}}, {{EXT_ASI}});
                 //ASI_QUAD_LDD
                 0x24: TwinLoad::ldtx_quad_ldd(
-                    {{RdTwin.udw = Mem.udw}}, {{EXT_ASI}});
+                    {{RdTwin.udw = Mem.udw;}}, {{EXT_ASI}});
                 //ASI_LDTX_REAL
                 0x26: TwinLoad::ldtx_real(
-                    {{RdTwin.udw = Mem.udw}}, {{EXT_ASI}});
+                    {{RdTwin.udw = Mem.udw;}}, {{EXT_ASI}});
                //ASI_LDTX_N
                0x27: TwinLoad::ldtx_n(
-                    {{RdTwin.udw = Mem.udw}}, {{EXT_ASI}});
+                    {{RdTwin.udw = Mem.udw;}}, {{EXT_ASI}});
                //ASI_LDTX_L
                0x2C: TwinLoad::ldtx_l(
-                    {{RdTwin.udw = Mem.udw}}, {{EXT_ASI}});
+                    {{RdTwin.udw = Mem.udw;}}, {{EXT_ASI}});
                 //ASI_LDTX_REAL_L
                 0x2E: TwinLoad::ldtx_real_l(
-                    {{RdTwin.udw = Mem.udw}}, {{EXT_ASI}});
+                    {{RdTwin.udw = Mem.udw;}}, {{EXT_ASI}});
                 //ASI_LDTX_N_L
                 0x2F: TwinLoad::ldtx_n_l(
-                    {{RdTwin.udw = Mem.udw}}, {{EXT_ASI}});
+                    {{RdTwin.udw = Mem.udw;}}, {{EXT_ASI}});
                 //ASI_LDTX_P
                 0xE2: TwinLoad::ldtx_p(
-                    {{RdTwin.udw = Mem.udw}}, {{EXT_ASI}});
+                    {{RdTwin.udw = Mem.udw;}}, {{EXT_ASI}});
                 //ASI_LDTX_S
                 0xE3: TwinLoad::ldtx_s(
-                    {{RdTwin.udw = Mem.udw}}, {{EXT_ASI}});
+                    {{RdTwin.udw = Mem.udw;}}, {{EXT_ASI}});
                 default: ldtwa({{
                         uint64_t val = Mem.udw;
                         RdLow = val<31:0>;
@@ -1099,22 +1099,23 @@
             0x1B: ldxa({{Rd = (int64_t)Mem.sdw;}}, {{EXT_ASI}});
         }
         0x1D: LoadStoreAlt::ldstuba(
-                {{Rd = Mem.ub;}},
-                {{Mem.ub = 0xFF}}, {{EXT_ASI}});
+                {{uReg0 = Mem.ub;}},
+                {{Rd.ub = uReg0;
+                  Mem.ub = 0xFF;}}, {{EXT_ASI}});
         0x1E: StoreAlt::stxa({{Mem.udw = Rd}}, {{EXT_ASI}});
         0x1F: LoadStoreAlt::swapa(
-            {{uReg0 = Rd.uw;
-            Rd.uw = Mem.uw;}},
-            {{Mem.uw = uReg0;}}, {{EXT_ASI}});
+            {{ uReg0 = Mem.uw}},
+            {{ Mem.uw = Rd.uw;
+               Rd.uw = uReg0;}}, {{EXT_ASI}});
         format Trap {
-            0x20: Load::ldf({{Frd.uw = Mem.uw;}});
+            0x20: Load::ldf({{Frds.uw = Mem.uw;}});
             0x21: decode X {
                 0x0: Load::ldfsr({{Fsr = Mem.uw | Fsr<63:32>;}});
                 0x1: Load::ldxfsr({{Fsr = Mem.udw;}});
             }
             0x22: ldqf({{fault = new FpDisabled;}});
             0x23: Load::lddf({{Frd.udw = Mem.udw;}});
-            0x24: Store::stf({{Mem.uw = Frd.uw;}});
+            0x24: Store::stf({{Mem.uw = Frds.uw;}});
             0x25: decode X {
                 0x0: Store::stfsr({{Mem.uw = Fsr<31:0>;}});
                 0x1: Store::stxfsr({{Mem.udw = Fsr;}});
@@ -1122,7 +1123,7 @@
             0x26: stqf({{fault = new FpDisabled;}});
             0x27: Store::stdf({{Mem.udw = Frd.udw;}});
             0x2D: Nop::prefetch({{ }});
-            0x30: LoadAlt::ldfa({{Frd.uw = Mem.uw;}}, {{EXT_ASI}});
+            0x30: LoadAlt::ldfa({{Frds.uw = Mem.uw;}}, {{EXT_ASI}});
             0x32: ldqfa({{fault = new FpDisabled;}});
             format LoadAlt {
                 0x33: decode EXT_ASI {
@@ -1205,7 +1206,7 @@
                         {{fault = new DataAccessException;}});
                 }
             }
-            0x34: Store::stfa({{Mem.uw = Frd.uw;}});
+            0x34: Store::stfa({{Mem.uw = Frds.uw;}});
             0x36: stqfa({{fault = new FpDisabled;}});
             format StoreAlt {
                 0x37: decode EXT_ASI {
diff --git a/src/arch/sparc/isa/formats/basic.isa b/src/arch/sparc/isa/formats/basic.isa
index 56e9337..e8762a2 100644
--- a/src/arch/sparc/isa/formats/basic.isa
+++ b/src/arch/sparc/isa/formats/basic.isa
@@ -1,4 +1,4 @@
-// Copyright (c) 2006 The Regents of The University of Michigan
+// Copyright (c) 2006-2007 The Regents of The University of Michigan
 // All rights reserved.
 //
 // Redistribution and use in source and binary forms, with or without
@@ -38,6 +38,7 @@
         Fault execute(%(CPU_exec_context)s *, Trace::InstRecord *) const
         {
             panic("Execute method called when it shouldn't!");
+            M5_DUMMY_RETURN
         }
 }};
 
@@ -71,6 +72,7 @@
         {
             Fault fault = NoFault;
 
+            %(fp_enable_check)s;
             %(op_decl)s;
             %(op_rd)s;
             %(code)s;
diff --git a/src/arch/sparc/isa/formats/integerop.isa b/src/arch/sparc/isa/formats/integerop.isa
index 363aca1..f877b87 100644
--- a/src/arch/sparc/isa/formats/integerop.isa
+++ b/src/arch/sparc/isa/formats/integerop.isa
@@ -1,4 +1,4 @@
-// Copyright (c) 2006 The Regents of The University of Michigan
+// Copyright (c) 2006-2007 The Regents of The University of Michigan
 // All rights reserved.
 //
 // Redistribution and use in source and binary forms, with or without
@@ -154,7 +154,7 @@
         bool IntOp::printPseudoOps(std::ostream &os, Addr pc,
                 const SymbolTable *symbab) const
         {
-            if(!strcmp(mnemonic, "or") && _srcRegIdx[0] == 0)
+            if(!std::strcmp(mnemonic, "or") && _srcRegIdx[0] == 0)
             {
                 printMnemonic(os, "mov");
                 printSrcReg(os, 1);
@@ -168,7 +168,7 @@
         bool IntOpImm::printPseudoOps(std::ostream &os, Addr pc,
                 const SymbolTable *symbab) const
         {
-            if(!strcmp(mnemonic, "or"))
+            if(!std::strcmp(mnemonic, "or"))
             {
                 if(_numSrcRegs > 0 && _srcRegIdx[0] == 0)
                 {
diff --git a/src/arch/sparc/isa/formats/mem/blockmem.isa b/src/arch/sparc/isa/formats/mem/blockmem.isa
index 352e963..9795d23 100644
--- a/src/arch/sparc/isa/formats/mem/blockmem.isa
+++ b/src/arch/sparc/isa/formats/mem/blockmem.isa
@@ -476,7 +476,6 @@
             faultCode = ''
         return (header_output, decoder_output, exec_output, decode_block)
 
-
     def doTwinLoadFormat(code, faultCode, name, Name, asi, opt_flags):
         addrCalcReg = 'EA = Rs1 + Rs2 + offset;'
         addrCalcImm = 'EA = Rs1 + imm + offset;'
@@ -492,10 +491,11 @@
             pcedCode = ''
             if (microPc == 1):
                 flag_code = "flags[IsLastMicroOp] = true;"
-                pcedCode = matcher.sub("RdHigh", code)
+                pcedCode = "RdLow = uReg0;\n"
+                pcedCode += matcher.sub("RdHigh", code)
             else:
                 flag_code = "flags[IsDelayedCommit] = true; flags[IsFirstMicroOp] = true;"
-                pcedCode = matcher.sub("RdLow", code)
+                pcedCode = matcher.sub("uReg0", code)
             iop = InstObjParams(name, Name, 'TwinMem',
                     {"code": pcedCode, "ea_code": addrCalcReg,
                     "fault_check": faultCode, "micro_pc": microPc,
diff --git a/src/arch/sparc/isa/formats/mem/util.isa b/src/arch/sparc/isa/formats/mem/util.isa
index 5bb4e1f..dbaabdc 100644
--- a/src/arch/sparc/isa/formats/mem/util.isa
+++ b/src/arch/sparc/isa/formats/mem/util.isa
@@ -141,6 +141,7 @@
         {
             Fault fault = NoFault;
             Addr EA;
+            %(fp_enable_check)s;
             %(op_decl)s;
             %(op_rd)s;
             %(ea_code)s;
@@ -170,6 +171,7 @@
         {
             Fault fault = NoFault;
             Addr EA;
+            %(fp_enable_check)s;
             %(op_decl)s;
             %(op_rd)s;
             %(ea_code)s;
@@ -210,6 +212,7 @@
             //It should be optomized out in all the others
             bool storeCond = true;
             Addr EA;
+            %(fp_enable_check)s;
             %(op_decl)s;
             %(op_rd)s;
             %(ea_code)s;
@@ -241,6 +244,7 @@
             Fault fault = NoFault;
             bool storeCond = true;
             Addr EA;
+            %(fp_enable_check)s;
             %(op_decl)s;
             %(op_rd)s;
             %(ea_code)s;
diff --git a/src/arch/sparc/isa/includes.isa b/src/arch/sparc/isa/includes.isa
index 2e7b16f..474af3a 100644
--- a/src/arch/sparc/isa/includes.isa
+++ b/src/arch/sparc/isa/includes.isa
@@ -1,4 +1,4 @@
-// Copyright (c) 2006 The Regents of The University of Michigan
+// Copyright (c) 2006-2007 The Regents of The University of Michigan
 // All rights reserved.
 //
 // Redistribution and use in source and binary forms, with or without
@@ -34,6 +34,7 @@
 //
 
 output header {{
+#include <cstring>
 #include <sstream>
 #include <iostream>
 
@@ -64,7 +65,9 @@
 #if defined(linux)
 #include <fenv.h>
 #endif
+#include <limits>
 
+#include <cmath>
 #include "arch/sparc/asi.hh"
 #include "cpu/base.hh"
 #include "cpu/exetrace.hh"
diff --git a/src/arch/sparc/isa_traits.hh b/src/arch/sparc/isa_traits.hh
index 8a26334..64ae6ab 100644
--- a/src/arch/sparc/isa_traits.hh
+++ b/src/arch/sparc/isa_traits.hh
@@ -59,7 +59,7 @@
     // These enumerate all the registers for dependence tracking.
     enum DependenceTags {
         FP_Base_DepTag = 32*3+8,
-        Ctrl_Base_DepTag = FP_Base_DepTag + 64,
+        Ctrl_Base_DepTag = FP_Base_DepTag + 64
     };
 
     // semantically meaningful register indices
diff --git a/src/arch/sparc/tlb.cc b/src/arch/sparc/tlb.cc
index 86e1cef..bc3c392 100644
--- a/src/arch/sparc/tlb.cc
+++ b/src/arch/sparc/tlb.cc
@@ -28,6 +28,8 @@
  * Authors: Ali Saidi
  */
 
+#include <cstring>
+
 #include "arch/sparc/asi.hh"
 #include "arch/sparc/miscregfile.hh"
 #include "arch/sparc/tlb.hh"
@@ -53,7 +55,7 @@
         fatal("SPARC T1 TLB registers don't support more than 64 TLB entries.");
 
     tlb = new TlbEntry[size];
-    memset(tlb, 0, sizeof(TlbEntry) * size);
+    std::memset(tlb, 0, sizeof(TlbEntry) * size);
 
     for (int x = 0; x < size; x++)
         freeList.push_back(&tlb[x]);
@@ -170,8 +172,8 @@
     freeList.remove(new_entry);
     if (new_entry->valid && new_entry->used)
         usedEntries--;
-
-    lookupTable.erase(new_entry->range);
+    if (new_entry->valid)
+        lookupTable.erase(new_entry->range);
 
 
     assert(PTE.valid());
@@ -577,6 +579,9 @@
     DPRINTF(TLB, "TLB: DTB Request to translate va=%#x size=%d asi=%#x\n",
             vaddr, size, asi);
 
+    if (lookupTable.size() != 64 - freeList.size())
+       panic("Lookup table size: %d tlb size: %d\n", lookupTable.size(),
+               freeList.size());
     if (asi == ASI_IMPLICIT)
         implicit = true;
 
diff --git a/src/arch/sparc/tlb_map.hh b/src/arch/sparc/tlb_map.hh
index 688daf5..8285db9 100644
--- a/src/arch/sparc/tlb_map.hh
+++ b/src/arch/sparc/tlb_map.hh
@@ -135,6 +135,19 @@
     {
         return tree.empty();
     }
+
+    void print()
+    {
+        iterator i;
+        i = tree.begin();
+        while (i != tree.end()) {
+           std::cout << std::hex << i->first.va << " " << i->first.size << " " <<
+                i->first.contextId << " " << i->first.partitionId << " " <<
+                i->first.real << " " << i->second << std::endl;
+            i++;
+        }
+    }
+
 };
 
 };
diff --git a/src/arch/sparc/ua2005.cc b/src/arch/sparc/ua2005.cc
index 00a4427..ecb63bb 100644
--- a/src/arch/sparc/ua2005.cc
+++ b/src/arch/sparc/ua2005.cc
@@ -48,7 +48,6 @@
       case MISCREG_SOFTINT_CLR:
         return setRegWithEffect(MISCREG_SOFTINT, ~val & softint, tc);
       case MISCREG_SOFTINT_SET:
-        tc->getCpuPtr()->checkInterrupts = true;
         tc->getCpuPtr()->post_interrupt(soft_interrupt);
         return setRegWithEffect(MISCREG_SOFTINT, val | softint, tc);
 
@@ -78,15 +77,9 @@
         break;
 
       case MISCREG_PSTATE:
-        if (val & PSTATE::ie && !(pstate & PSTATE::ie)) {
-            tc->getCpuPtr()->checkInterrupts = true;
-        }
         setReg(miscReg, val);
 
       case MISCREG_PIL:
-        if (val < pil) {
-            tc->getCpuPtr()->checkInterrupts = true;
-        }
         setReg(miscReg, val);
         break;
 
@@ -110,7 +103,7 @@
       case MISCREG_QUEUE_NRES_ERROR_HEAD:
       case MISCREG_QUEUE_NRES_ERROR_TAIL:
         setReg(miscReg, val);
-        tc->getCpuPtr()->checkInterrupts = true;
+        //do something to post mondo interrupt
         break;
 
       case MISCREG_HSTICK_CMPR:
@@ -206,7 +199,6 @@
                 (stick_cmpr & mask(63)));
         if (!(tc->readMiscReg(MISCREG_STICK_CMPR) & (ULL(1) << 63))) {
             tc->getCpuPtr()->post_interrupt(soft_interrupt);
-            tc->getCpuPtr()->checkInterrupts = true;
             setRegWithEffect(MISCREG_SOFTINT, softint | (ULL(1) << 16), tc);
         }
     } else
@@ -230,7 +222,6 @@
         if (!(tc->readMiscReg(MISCREG_HSTICK_CMPR) & (ULL(1) << 63))) {
             setRegWithEffect(MISCREG_HINTP, 1, tc);
             tc->getCpuPtr()->post_interrupt(hstick_match);
-            tc->getCpuPtr()->checkInterrupts = true;
         }
         // Need to do something to cause interrupt to happen here !!! @todo
     } else
diff --git a/src/arch/sparc/utility.hh b/src/arch/sparc/utility.hh
index 5c7fe34..3c8bdcd 100644
--- a/src/arch/sparc/utility.hh
+++ b/src/arch/sparc/utility.hh
@@ -50,7 +50,7 @@
 
     inline ExtMachInst
     makeExtMI(MachInst inst, ThreadContext * xc) {
-        ExtMachInst emi = (unsigned MachInst) inst;
+        ExtMachInst emi = (MachInst) inst;
         //The I bit, bit 13, is used to figure out where the ASI
         //should come from. Use that in the ExtMachInst. This is
         //slightly redundant, but it removes the need to put a condition
diff --git a/src/base/compiler.hh b/src/base/compiler.hh
new file mode 100644
index 0000000..5f2e9d7
--- /dev/null
+++ b/src/base/compiler.hh
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2006 The Regents of The University of Michigan
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met: redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer;
+ * redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution;
+ * neither the name of the copyright holders nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Authors: Ali Saidi
+ */
+
+#ifndef __BASE_COMPILER_HH__
+#define __BASE_COMPILER_HH__
+
+//http://msdn2.microsoft.com/en-us/library/ms937669.aspx
+//http://msdn2.microsoft.com/en-us/library/aa448724.aspx
+//http://docs.sun.com/source/819-3688/sun.specific.html#marker-998278
+//http://gcc.gnu.org/onlinedocs/gcc-3.3.1/gcc/Function-Attributes.html#Function%20Attributes
+
+#if defined(__GNUC__)
+#define M5_ATTR_NORETURN  __attribute__((noreturn))
+#define M5_PRAGMA_NORETURN(x)
+#define M5_DUMMY_RETURN
+#elif defined(__SUNPRO_CC)
+// this doesn't do anything with sun cc, but why not
+#define M5_ATTR_NORETURN  __sun_attr__((__noreturn__))
+#define M5_DUMMY_RETURN return (0);
+#define M5_PRAGMA_NORETURN(x) _Pragma("does_not_return(x)")
+#else
+#error "Need to define compiler options in base/compiler.hh"
+#endif
+
+#endif // __BASE_COMPILER_HH__
diff --git a/src/base/compression/lzss_compression.cc b/src/base/compression/lzss_compression.cc
index eb35fb8..bd16d82 100644
--- a/src/base/compression/lzss_compression.cc
+++ b/src/base/compression/lzss_compression.cc
@@ -32,8 +32,8 @@
  * LZSSCompression definitions.
  */
 
-#include <assert.h>
-
+#include <cassert>
+#include <cstring>
 #include "base/compression/lzss_compression.hh"
 
 #include "base/misc.hh" //for fatal
@@ -134,7 +134,7 @@
 
     if (dest_index >= size) {
         // Have expansion instead of compression, just copy.
-        memcpy(dest,src,size);
+        std::memcpy(dest,src,size);
         return size;
     }
     return dest_index;
diff --git a/src/base/compression/null_compression.hh b/src/base/compression/null_compression.hh
index ff11080..798acb7 100644
--- a/src/base/compression/null_compression.hh
+++ b/src/base/compression/null_compression.hh
@@ -50,11 +50,13 @@
     int uncompress(uint8_t * dest, uint8_t *src, int size)
     {
         fatal("Can't uncompress data");
+        M5_DUMMY_RETURN
     }
 
     int compress(uint8_t *dest, uint8_t *src, int size)
     {
         fatal("Can't compress data");
+        M5_DUMMY_RETURN
     }
 };
 
diff --git a/src/base/cprintf.hh b/src/base/cprintf.hh
index 9967b05..dd2256e 100644
--- a/src/base/cprintf.hh
+++ b/src/base/cprintf.hh
@@ -136,10 +136,10 @@
 inline void
 __cprintf(const std::string &format, ArgList &args)
 { args.dump(format); delete &args; }
-#define __cprintf__(format, args...) \
-    cp::__cprintf(format, (*(new cp::ArgList), args))
-#define cprintf(args...) \
-    __cprintf__(args, cp::ArgListNull())
+#define __cprintf__(format, ...) \
+    cp::__cprintf(format, (*(new cp::ArgList), __VA_ARGS__))
+#define cprintf(...) \
+    __cprintf__(__VA_ARGS__, cp::ArgListNull())
 
 //
 // ccprintf(stream, format, args, ...) prints to the specified stream
@@ -148,10 +148,10 @@
 inline void
 __ccprintf(std::ostream &stream, const std::string &format, ArgList &args)
 { args.dump(stream, format); delete &args; }
-#define __ccprintf__(stream, format, args...) \
-    cp::__ccprintf(stream, format, (*(new cp::ArgList), args))
-#define ccprintf(stream, args...) \
-    __ccprintf__(stream, args, cp::ArgListNull())
+#define __ccprintf__(stream, format, ...) \
+    cp::__ccprintf(stream, format, (*(new cp::ArgList), __VA_ARGS__))
+#define ccprintf(stream, ...) \
+    __ccprintf__(stream, __VA_ARGS__, cp::ArgListNull())
 
 //
 // csprintf(format, args, ...) returns a string
@@ -160,10 +160,10 @@
 inline std::string
 __csprintf(const std::string &format, ArgList &args)
 { std::string s = args.dumpToString(format); delete &args; return s; }
-#define __csprintf__(format, args...) \
-    cp::__csprintf(format, (*(new cp::ArgList), args))
-#define csprintf(args...) \
-    __csprintf__(args, cp::ArgListNull())
+#define __csprintf__(format, ...) \
+    cp::__csprintf(format, (*(new cp::ArgList), __VA_ARGS__))
+#define csprintf(...) \
+    __csprintf__(__VA_ARGS__, cp::ArgListNull())
 
 }
 
diff --git a/src/base/hashmap.hh b/src/base/hashmap.hh
index 570cbc1..b78cc02 100644
--- a/src/base/hashmap.hh
+++ b/src/base/hashmap.hh
@@ -59,7 +59,7 @@
 //
 
 namespace __hash_namespace {
-#if !defined(__LP64__) && !defined(__alpha__)
+#if !defined(__LP64__) && !defined(__alpha__) && !defined(__SUNPRO_CC)
     template<>
     struct hash<uint64_t> {
         size_t operator()(uint64_t r) const {
diff --git a/src/base/hostinfo.cc b/src/base/hostinfo.cc
index a7c93e7..7cc07c1 100644
--- a/src/base/hostinfo.cc
+++ b/src/base/hostinfo.cc
@@ -33,6 +33,7 @@
 #include <math.h>
 #include <unistd.h>
 
+#include <stdio.h>
 #include <cstdlib>
 #include <cstring>
 #include <string>
diff --git a/src/base/loader/object_file.cc b/src/base/loader/object_file.cc
index da5aa95..7424b93 100644
--- a/src/base/loader/object_file.cc
+++ b/src/base/loader/object_file.cc
@@ -101,7 +101,7 @@
     }
 
     if (fileData) {
-        ::munmap(fileData, len);
+        ::munmap((char*)fileData, len);
         fileData = NULL;
     }
 }
@@ -147,7 +147,7 @@
 
     // don't know what it is
     close(fd);
-    munmap(fileData, len);
+    munmap((char*)fileData, len);
     return NULL;
 }
 
diff --git a/src/base/misc.hh b/src/base/misc.hh
index 1c5720c..c12c2fe 100644
--- a/src/base/misc.hh
+++ b/src/base/misc.hh
@@ -33,8 +33,13 @@
 #define __MISC_HH__
 
 #include <assert.h>
+#include "base/compiler.hh"
 #include "base/cprintf.hh"
 
+#if defined(__SUNPRO_CC)
+#define __FUNCTION__ "how to fix me?"
+#endif
+
 //
 // This implements a cprintf based panic() function.  panic() should
 // be called when something happens that should never ever happen
@@ -43,12 +48,13 @@
 //
 //
 void __panic(const std::string&, cp::ArgList &, const char*, const char*, int)
-    __attribute__((noreturn));
-#define __panic__(format, args...) \
-    __panic(format, (*(new cp::ArgList), args), \
-        __FUNCTION__, __FILE__, __LINE__)
-#define panic(args...) \
-    __panic__(args, cp::ArgListNull())
+    M5_ATTR_NORETURN;
+#define __panic__(format, ...) \
+    __panic(format, (*(new cp::ArgList), __VA_ARGS__), \
+        __FUNCTION__ , __FILE__, __LINE__)
+#define panic(...) \
+    __panic__(__VA_ARGS__, cp::ArgListNull())
+M5_PRAGMA_NORETURN(__panic)
 
 //
 // This implements a cprintf based fatal() function.  fatal() should
@@ -59,32 +65,33 @@
 // panic() does.
 //
 void __fatal(const std::string&, cp::ArgList &, const char*, const char*, int)
-    __attribute__((noreturn));
-#define __fatal__(format, args...) \
-    __fatal(format, (*(new cp::ArgList), args), \
-        __FUNCTION__, __FILE__, __LINE__)
-#define fatal(args...) \
-    __fatal__(args, cp::ArgListNull())
+    M5_ATTR_NORETURN;
+#define __fatal__(format, ...) \
+    __fatal(format, (*(new cp::ArgList), __VA_ARGS__), \
+        __FUNCTION__ , __FILE__, __LINE__)
+#define fatal(...) \
+    __fatal__(__VA_ARGS__, cp::ArgListNull())
+M5_PRAGMA_NORETURN(__fatal)
 
 //
 // This implements a cprintf based warn
 //
 void __warn(const std::string&, cp::ArgList &, const char*, const char*, int);
-#define __warn__(format, args...) \
-    __warn(format, (*(new cp::ArgList), args), \
-           __FUNCTION__, __FILE__, __LINE__)
-#define warn(args...) \
-    __warn__(args, cp::ArgListNull())
+#define __warn__(format, ...) \
+    __warn(format, (*(new cp::ArgList), __VA_ARGS__), \
+           __FUNCTION__ , __FILE__, __LINE__)
+#define warn(...) \
+    __warn__(__VA_ARGS__, cp::ArgListNull())
 
 // Only print the warning message the first time it is seen.  This
 // doesn't check the warning string itself, it just only lets one
 // warning come from the statement. So, even if the arguments change
 // and that would have resulted in a different warning message,
 // subsequent messages would still be supressed.
-#define warn_once(args...) do {                     \
+#define warn_once(...) do {                     \
         static bool once = false;                   \
         if (!once) {                                \
-            __warn__(args, cp::ArgListNull());      \
+            __warn__(__VA_ARGS__, cp::ArgListNull());      \
             once = true;                            \
         }                                           \
     } while (0)
diff --git a/src/base/pollevent.cc b/src/base/pollevent.cc
index fd5b09d..32724b7 100644
--- a/src/base/pollevent.cc
+++ b/src/base/pollevent.cc
@@ -30,7 +30,7 @@
 
 #include <sys/ioctl.h>
 #include <sys/types.h>
-#if defined(__sun__)
+#if defined(__sun__) || defined(__SUNPRO_CC)
 #include <sys/file.h>
 #endif
 
diff --git a/src/base/random.cc b/src/base/random.cc
index 82c9e35..0ccedcb 100644
--- a/src/base/random.cc
+++ b/src/base/random.cc
@@ -29,12 +29,17 @@
  *          Ali Saidi
  */
 
+#if defined(__sun)
+#include <ieeefp.h>
+#endif
+#ifdef __SUNPRO_CC
+#include <stdlib.h>
+#include <math.h>
+#endif
+
 #include <cstdlib>
 #include <cmath>
 
-#if defined(__sun__)
-#include <ieeefp.h>
-#endif
 
 #include "sim/param.hh"
 #include "base/random.hh"
@@ -72,7 +77,7 @@
 double
 m5round(double r)
 {
-#if defined(__sun__)
+#if defined(__sun)
     double val;
     fp_rnd oldrnd = fpsetround(FP_RN);
     val = rint(r);
diff --git a/src/base/remote_gdb.cc b/src/base/remote_gdb.cc
index b1f5075..988b50c 100644
--- a/src/base/remote_gdb.cc
+++ b/src/base/remote_gdb.cc
@@ -631,7 +631,7 @@
     uint64_t val;
     size_t datalen, len;
     char data[GDBPacketBufLen + 1];
-    char buffer[gdbregs.bytes() * 2 + 256];
+    char *buffer;
     const char *p;
     char command, subcmd;
     string var;
@@ -640,6 +640,8 @@
     if (!attached)
         return false;
 
+    buffer = (char*)malloc(gdbregs.bytes() * 2 + 256);
+
     DPRINTF(GDBMisc, "trap: PC=%#x NPC=%#x\n",
             context->readPC(), context->readNextPC());
 
@@ -937,6 +939,7 @@
     }
 
   out:
+    free(buffer);
     return true;
 }
 
diff --git a/src/base/statistics.hh b/src/base/statistics.hh
index 577ea5e..d8e8b4c 100644
--- a/src/base/statistics.hh
+++ b/src/base/statistics.hh
@@ -50,6 +50,9 @@
 
 #include <algorithm>
 #include <cassert>
+#ifdef __SUNPRO_CC
+#include <math.h>
+#endif
 #include <cmath>
 #include <functional>
 #include <iosfwd>
@@ -1410,7 +1413,7 @@
         else if (val > params.max)
             overflow += number;
         else {
-            int index = (int)floor((val - params.min) / params.bucket_size);
+            int index = (int)std::floor((val - params.min) / params.bucket_size);
             assert(index < size(params));
             cvec[index] += number;
         }
diff --git a/src/base/stats/text.cc b/src/base/stats/text.cc
index c4448ef..ae0d655 100644
--- a/src/base/stats/text.cc
+++ b/src/base/stats/text.cc
@@ -32,6 +32,10 @@
 #define _GLIBCPP_USE_C99 1
 #endif
 
+#if defined(__sun)
+#include <math.h>
+#endif
+
 #include <iostream>
 #include <sstream>
 #include <fstream>
diff --git a/src/base/time.cc b/src/base/time.cc
index cbc7256..76ba355 100644
--- a/src/base/time.cc
+++ b/src/base/time.cc
@@ -105,7 +105,11 @@
     char buf[256];
 
     if (format.empty()) {
+#ifdef __SUNPRO_CC
+        ctime_r(&sec, buf, 256);
+#else
         ctime_r(&sec, buf);
+#endif
         buf[24] = '\0';
         return buf;
     }
diff --git a/src/base/time.hh b/src/base/time.hh
index 7aa4c50..f10cc5d 100644
--- a/src/base/time.hh
+++ b/src/base/time.hh
@@ -97,7 +97,7 @@
  *	@(#)time.h	8.2 (Berkeley) 7/10/94
  */
 
-#if defined(__sun__)
+#if defined(__sun)
 #define timersub(tvp, uvp, vvp)                                         \
     do {                                                            \
             (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \
diff --git a/src/base/timebuf.hh b/src/base/timebuf.hh
index 1d0de82..348f7a6 100644
--- a/src/base/timebuf.hh
+++ b/src/base/timebuf.hh
@@ -33,6 +33,7 @@
 #define __BASE_TIMEBUF_HH__
 
 #include <cassert>
+#include <cstring>
 #include <vector>
 
 template <class T>
@@ -143,7 +144,7 @@
         char *ptr = data;
         for (int i = 0; i < size; i++) {
             index[i] = ptr;
-            memset(ptr, 0, sizeof(T));
+            std::memset(ptr, 0, sizeof(T));
             new (ptr) T;
             ptr += sizeof(T);
         }
@@ -171,7 +172,7 @@
         if (ptr >= size)
             ptr -= size;
         (reinterpret_cast<T *>(index[ptr]))->~T();
-        memset(index[ptr], 0, sizeof(T));
+        std::memset(index[ptr], 0, sizeof(T));
         new (index[ptr]) T;
     }
 
diff --git a/src/base/trace.hh b/src/base/trace.hh
index 9b05399..a466431 100644
--- a/src/base/trace.hh
+++ b/src/base/trace.hh
@@ -186,39 +186,39 @@
         Trace::dataDump(curTick, name(), data, count);	\
 } while (0)
 
-#define __dprintf(cycle, name, format, args...) \
-    Trace::dprintf(format, (*(new cp::ArgList), args), cycle, name)
+#define __dprintf(cycle, name, format, ...) \
+    Trace::dprintf(format, (*(new cp::ArgList), __VA_ARGS__), cycle, name)
 
-#define DPRINTF(x, args...) \
+#define DPRINTF(x, ...) \
 do { \
     if (Trace::IsOn(Trace::x)) \
-        __dprintf(curTick, name(), args, cp::ArgListNull()); \
+        __dprintf(curTick, name(), __VA_ARGS__, cp::ArgListNull()); \
 } while (0)
 
-#define DPRINTFR(x, args...) \
+#define DPRINTFR(x, ...) \
 do { \
     if (Trace::IsOn(Trace::x)) \
-        __dprintf((Tick)-1, std::string(), args, cp::ArgListNull());	\
+        __dprintf((Tick)-1, std::string(), __VA_ARGS__, cp::ArgListNull());	\
 } while (0)
 
-#define DPRINTFN(args...) \
+#define DPRINTFN(...) \
 do { \
-    __dprintf(curTick, name(), args, cp::ArgListNull()); \
+    __dprintf(curTick, name(), __VA_ARGS__, cp::ArgListNull()); \
 } while (0)
 
-#define DPRINTFNR(args...) \
+#define DPRINTFNR(...) \
 do { \
-    __dprintf((Tick)-1, string(), args, cp::ArgListNull()); \
+    __dprintf((Tick)-1, string(), __VA_ARGS__, cp::ArgListNull()); \
 } while (0)
 
 #else // !TRACING_ON
 
 #define DTRACE(x) (false)
 #define DCOUT(x) if (0) DebugOut()
-#define DPRINTF(x, args...) do {} while (0)
-#define DPRINTFR(args...) do {} while (0)
-#define DPRINTFN(args...) do {} while (0)
-#define DPRINTFNR(args...) do {} while (0)
+#define DPRINTF(x, ...) do {} while (0)
+#define DPRINTFR(...) do {} while (0)
+#define DPRINTFN(...) do {} while (0)
+#define DPRINTFNR(...) do {} while (0)
 #define DDUMP(x, data, count) do {} while (0)
 
 #endif	// TRACING_ON
diff --git a/src/cpu/SConscript b/src/cpu/SConscript
index 5771a79..4d4b757 100644
--- a/src/cpu/SConscript
+++ b/src/cpu/SConscript
@@ -54,18 +54,18 @@
 exec_sig_template = '''
 virtual Fault execute(%s *xc, Trace::InstRecord *traceData) const = 0;
 virtual Fault initiateAcc(%s *xc, Trace::InstRecord *traceData) const
-{ panic("initiateAcc not defined!"); };
+{ panic("initiateAcc not defined!"); M5_DUMMY_RETURN };
 virtual Fault completeAcc(Packet *pkt, %s *xc,
                           Trace::InstRecord *traceData) const
-{ panic("completeAcc not defined!"); };
+{ panic("completeAcc not defined!"); M5_DUMMY_RETURN };
 '''
 
 mem_ini_sig_template = '''
-virtual Fault initiateAcc(%s *xc, Trace::InstRecord *traceData) const { panic("Not defined!"); };
+virtual Fault initiateAcc(%s *xc, Trace::InstRecord *traceData) const { panic("Not defined!"); M5_DUMMY_RETURN };
 '''
 
 mem_comp_sig_template = '''
-virtual Fault completeAcc(uint8_t *data, %s *xc, Trace::InstRecord *traceData) const { panic("Not defined!"); return NoFault; };
+virtual Fault completeAcc(uint8_t *data, %s *xc, Trace::InstRecord *traceData) const { panic("Not defined!"); return NoFault; M5_DUMMY_RETURN };
 '''
 
 # Generate a temporary CPU list, including the CheckerCPU if
diff --git a/src/cpu/activity.cc b/src/cpu/activity.cc
index 9a0f6d9..15e0556 100644
--- a/src/cpu/activity.cc
+++ b/src/cpu/activity.cc
@@ -28,6 +28,8 @@
  * Authors: Kevin Lim
  */
 
+#include <cstring>
+
 #include "base/timebuf.hh"
 #include "cpu/activity.hh"
 
@@ -37,7 +39,7 @@
       activityCount(activity), numStages(num_stages)
 {
     stageActive = new bool[numStages];
-    memset(stageActive, 0, numStages);
+    std::memset(stageActive, 0, numStages);
 }
 
 void
@@ -114,7 +116,7 @@
 ActivityRecorder::reset()
 {
     activityCount = 0;
-    memset(stageActive, 0, numStages);
+    std::memset(stageActive, 0, numStages);
     for (int i = 0; i < longestLatency + 1; ++i)
         activityBuffer.advance();
 }
diff --git a/src/cpu/base.cc b/src/cpu/base.cc
index b03bc19..deb4e02 100644
--- a/src/cpu/base.cc
+++ b/src/cpu/base.cc
@@ -96,7 +96,7 @@
 
 #if FULL_SYSTEM
 BaseCPU::BaseCPU(Params *p)
-    : MemObject(p->name), clock(p->clock), instCnt(0), checkInterrupts(true),
+    : MemObject(p->name), clock(p->clock), instCnt(0),
       params(p), number_of_threads(p->numberOfThreads), system(p->system),
       phase(p->phase)
 #else
@@ -334,7 +334,6 @@
 
 #if FULL_SYSTEM
     interrupts = oldCPU->interrupts;
-    checkInterrupts = oldCPU->checkInterrupts;
 
     for (int i = 0; i < threadContexts.size(); ++i)
         threadContexts[i]->profileClear();
@@ -371,7 +370,6 @@
 void
 BaseCPU::post_interrupt(int int_num, int index)
 {
-    checkInterrupts = true;
     interrupts.post(int_num, index);
 }
 
diff --git a/src/cpu/base.hh b/src/cpu/base.hh
index 89c7d9d..3ae9c60 100644
--- a/src/cpu/base.hh
+++ b/src/cpu/base.hh
@@ -106,7 +106,6 @@
     virtual void post_interrupt(int int_num, int index);
     virtual void clear_interrupt(int int_num, int index);
     virtual void clear_interrupts();
-    bool checkInterrupts;
 
     bool check_interrupts(ThreadContext * tc) const
     { return interrupts.check_interrupts(tc); }
diff --git a/src/cpu/exetrace.cc b/src/cpu/exetrace.cc
index 2329182..bfd7012 100644
--- a/src/cpu/exetrace.cc
+++ b/src/cpu/exetrace.cc
@@ -295,7 +295,8 @@
         bool diffPC   = false;
         bool diffCC   = false;
         bool diffInst = false;
-        bool diffRegs = false;
+        bool diffIntRegs = false;
+        bool diffFpRegs = false;
         bool diffTpc = false;
         bool diffTnpc = false;
         bool diffTstate = false;
@@ -359,10 +360,15 @@
                     }
                     for (int i = 0; i < TheISA::NumIntArchRegs; i++) {
                         if (thread->readIntReg(i) != shared_data->intregs[i]) {
-                            diffRegs = true;
+                            diffIntRegs = true;
                         }
                     }
-                    uint64_t oldTl = thread->readMiscReg(MISCREG_TL);
+                    for (int i = 0; i < TheISA::NumFloatRegs/2; i++) {
+                        if (thread->readFloatRegBits(i,FloatRegFile::DoubleWidth) != shared_data->fpregs[i]) {
+                            diffFpRegs = true;
+                        }
+                    }
+                            uint64_t oldTl = thread->readMiscReg(MISCREG_TL);
                     if (oldTl != shared_data->tl)
                         diffTl = true;
                     for (int i = 1; i <= MaxTL; i++) {
@@ -440,12 +446,12 @@
                                 diffTlb = true;
                     }
 
-                    if ((diffPC || diffCC || diffInst || diffRegs || diffTpc ||
-                            diffTnpc || diffTstate || diffTt || diffHpstate ||
-                            diffHtstate || diffHtba || diffPstate || diffY ||
-                            diffCcr || diffTl || diffGl || diffAsi || diffPil ||
-                            diffCwp || diffCansave || diffCanrestore ||
-                            diffOtherwin || diffCleanwin || diffTlb)
+                    if ((diffPC || diffCC || diffInst || diffIntRegs ||
+                         diffFpRegs || diffTpc || diffTnpc || diffTstate ||
+                         diffTt || diffHpstate || diffHtstate || diffHtba ||
+                         diffPstate || diffY || diffCcr || diffTl || diffGl ||
+                         diffAsi || diffPil || diffCwp || diffCansave ||
+                         diffCanrestore || diffOtherwin || diffCleanwin || diffTlb)
                         && !((staticInst->machInst & 0xC1F80000) == 0x81D00000)
                         && !(((staticInst->machInst & 0xC0000000) == 0xC0000000)
                             && shared_data->tl == thread->readMiscReg(MISCREG_TL) + 1)
@@ -458,8 +464,10 @@
                             outs << " [CC]";
                         if (diffInst)
                             outs << " [Instruction]";
-                        if (diffRegs)
+                        if (diffIntRegs)
                             outs << " [IntRegs]";
+                        if (diffFpRegs)
+                            outs << " [FpRegs]";
                         if (diffTpc)
                             outs << " [Tpc]";
                         if (diffTnpc)
@@ -608,26 +616,22 @@
 
                         printSectionHeader(outs, "General Purpose Registers");
                         static const char * regtypes[4] = {"%g", "%o", "%l", "%i"};
-                        for(int y = 0; y < 4; y++)
-                        {
-                            for(int x = 0; x < 8; x++)
-                            {
+                        for(int y = 0; y < 4; y++) {
+                            for(int x = 0; x < 8; x++) {
                                 char label[8];
                                 sprintf(label, "%s%d", regtypes[y], x);
                                 printRegPair(outs, label,
                                         thread->readIntReg(y*8+x),
                                         shared_data->intregs[y*8+x]);
-                                /*outs << regtypes[y] << x << "         " ;
-                                outs <<  "0x" << hex << setw(16)
-                                    << thread->readIntReg(y*8+x);
-                                if (thread->readIntReg(y*8 + x)
-                                        != shared_data->intregs[y*8+x])
-                                    outs << "     X     ";
-                                else
-                                    outs << "     |     ";
-                                outs << "0x" << setw(16) << hex
-                                    << shared_data->intregs[y*8+x]
-                                    << endl;*/
+                            }
+                        }
+                        if (diffFpRegs) {
+                            for (int x = 0; x < 32; x++) {
+                                char label[8];
+                                sprintf(label, "%%f%d", x);
+                                printRegPair(outs, label,
+                                 thread->readFloatRegBits(x,FloatRegFile::DoubleWidth),
+                                 shared_data->fpregs[x]);
                             }
                         }
                         if (diffTlb) {
diff --git a/src/cpu/exetrace.hh b/src/cpu/exetrace.hh
index 6562e52..a825f6a 100644
--- a/src/cpu/exetrace.hh
+++ b/src/cpu/exetrace.hh
@@ -32,6 +32,7 @@
 #ifndef __EXETRACE_HH__
 #define __EXETRACE_HH__
 
+#include <cstring>
 #include <fstream>
 #include <vector>
 
@@ -169,7 +170,7 @@
     if (!iregs)
       iregs = new iRegFile;
 
-    memcpy(&iregs->regs, &regs, sizeof(IntRegFile));
+    std::memcpy(&iregs->regs, &regs, sizeof(IntRegFile));
     regs_valid = true;
 }
 
diff --git a/src/cpu/m5legion_interface.h b/src/cpu/m5legion_interface.h
index 4cb270e..81714f7 100644
--- a/src/cpu/m5legion_interface.h
+++ b/src/cpu/m5legion_interface.h
@@ -30,7 +30,7 @@
 
 #include <unistd.h>
 
-#define VERSION         0xA1000007
+#define VERSION         0xA1000008
 #define OWN_M5          0x000000AA
 #define OWN_LEGION      0x00000055
 
@@ -47,6 +47,7 @@
     uint32_t instruction;
     uint32_t new_instruction;
     uint64_t intregs[32];
+    uint64_t fpregs[32];
 
     uint64_t tpc[8];
     uint64_t tnpc[8];
diff --git a/src/cpu/o3/alpha/cpu_impl.hh b/src/cpu/o3/alpha/cpu_impl.hh
index fb09620..41f1499 100644
--- a/src/cpu/o3/alpha/cpu_impl.hh
+++ b/src/cpu/o3/alpha/cpu_impl.hh
@@ -213,8 +213,6 @@
 
     this->thread[tid]->kernelStats->hwrei();
 
-    this->checkInterrupts = true;
-
     // FIXME: XXX check for interrupts? XXX
     return NoFault;
 }
@@ -266,7 +264,6 @@
     this->interrupts.updateIntrInfo(this->threadContexts[0]);
 
     DPRINTF(O3CPU, "Interrupt %s being handled\n", interrupt->name());
-    this->checkInterrupts = false;
     this->trap(interrupt, 0);
 }
 
diff --git a/src/cpu/o3/commit_impl.hh b/src/cpu/o3/commit_impl.hh
index 75fe1ed..f145792 100644
--- a/src/cpu/o3/commit_impl.hh
+++ b/src/cpu/o3/commit_impl.hh
@@ -672,8 +672,7 @@
         } else {
             DPRINTF(Commit, "Interrupt pending, waiting for ROB to empty.\n");
         }
-    } else if (cpu->checkInterrupts &&
-        cpu->check_interrupts(cpu->tcBase(0)) &&
+    } else if (cpu->check_interrupts(cpu->tcBase(0)) &&
         commitStatus[0] != TrapPending &&
         !trapSquash[0] &&
         !tcSquash[0]) {
diff --git a/src/cpu/o3/sparc/cpu_impl.hh b/src/cpu/o3/sparc/cpu_impl.hh
index 4a194cb..c039a8f 100644
--- a/src/cpu/o3/sparc/cpu_impl.hh
+++ b/src/cpu/o3/sparc/cpu_impl.hh
@@ -241,7 +241,6 @@
     this->interrupts.updateIntrInfo(this->threadContexts[0]);
 
     DPRINTF(O3CPU, "Interrupt %s being handled\n", interrupt->name());
-    this->checkInterrupts = false;
     this->trap(interrupt, 0);
 }
 
diff --git a/src/cpu/ozone/cpu_impl.hh b/src/cpu/ozone/cpu_impl.hh
index accc8d2..a854de8 100644
--- a/src/cpu/ozone/cpu_impl.hh
+++ b/src/cpu/ozone/cpu_impl.hh
@@ -182,10 +182,6 @@
 
     globalSeqNum = 1;
 
-#if FULL_SYSTEM
-    checkInterrupts = false;
-#endif
-
     lockFlag = 0;
 
     // Setup rename table, initializing all values to ready.
@@ -684,8 +680,6 @@
     lockAddrList.clear();
     thread.kernelStats->hwrei();
 
-    checkInterrupts = true;
-
     // FIXME: XXX check for interrupts? XXX
     return NoFault;
 }
@@ -704,7 +698,6 @@
 
     if (interrupt != NoFault) {
         this->interrupts.updateIntrInfo(thread.getTC());
-        this->checkInterrupts = false;
         interrupt->invoke(thread.getTC());
     }
 }
diff --git a/src/cpu/ozone/inorder_back_end_impl.hh b/src/cpu/ozone/inorder_back_end_impl.hh
index 87bf0a7..84f935a 100644
--- a/src/cpu/ozone/inorder_back_end_impl.hh
+++ b/src/cpu/ozone/inorder_back_end_impl.hh
@@ -88,7 +88,6 @@
     int ipl = 0;
     int summary = 0;
 
-    cpu->checkInterrupts = false;
 
     if (thread->readMiscReg(IPR_ASTRR))
         panic("asynchronous traps not implemented\n");
@@ -151,8 +150,7 @@
     // I'm waiting for it to drain.  (for now just squash)
 #if FULL_SYSTEM
     if (interruptBlocked ||
-        (cpu->checkInterrupts &&
-        cpu->check_interrupts(tc))) {
+        cpu->check_interrupts(tc)) {
         if (!robEmpty()) {
             interruptBlocked = true;
         //AlphaDep
diff --git a/src/cpu/simple/base.cc b/src/cpu/simple/base.cc
index ddccc5a..b8d1f3b 100644
--- a/src/cpu/simple/base.cc
+++ b/src/cpu/simple/base.cc
@@ -311,12 +311,11 @@
 BaseSimpleCPU::checkForInterrupts()
 {
 #if FULL_SYSTEM
-    if (checkInterrupts && check_interrupts(tc)) {
+    if (check_interrupts(tc)) {
         Fault interrupt = interrupts.getInterrupt(tc);
 
         if (interrupt != NoFault) {
             interrupts.updateIntrInfo(tc);
-            checkInterrupts = false;
             interrupt->invoke(tc);
         }
     }
@@ -439,6 +438,8 @@
     if (fault != NoFault) {
         curMacroStaticInst = StaticInst::nullStaticInstPtr;
         fault->invoke(tc);
+        thread->setMicroPC(0);
+        thread->setNextMicroPC(1);
     } else {
         //If we're at the last micro op for this instruction
         if (curStaticInst->isLastMicroOp()) {
diff --git a/src/cpu/simple/base.hh b/src/cpu/simple/base.hh
index 294ebd6..c4853b9 100644
--- a/src/cpu/simple/base.hh
+++ b/src/cpu/simple/base.hh
@@ -186,7 +186,8 @@
     // These functions are only used in CPU models that split
     // effective address computation from the actual memory access.
     void setEA(Addr EA) { panic("BaseSimpleCPU::setEA() not implemented\n"); }
-    Addr getEA() 	{ panic("BaseSimpleCPU::getEA() not implemented\n"); }
+    Addr getEA() 	{ panic("BaseSimpleCPU::getEA() not implemented\n");
+        M5_DUMMY_RETURN}
 
     void prefetch(Addr addr, unsigned flags)
     {
diff --git a/src/dev/alpha/tsunami_io.cc b/src/dev/alpha/tsunami_io.cc
index 38986b7..d701dc9 100644
--- a/src/dev/alpha/tsunami_io.cc
+++ b/src/dev/alpha/tsunami_io.cc
@@ -57,25 +57,77 @@
 //Should this be AlphaISA?
 using namespace TheISA;
 
-TsunamiIO::RTC::RTC(const string &n, Tsunami* tsunami, time_t t, Tick i)
-    : _name(n), event(tsunami, i), addr(0)
+TsunamiIO::RTC::RTC(const string &n, Tsunami* tsunami, const vector<int> &t,
+                    bool bcd, Tick i)
+    : _name(n), event(tsunami, i), addr(0), year_is_bcd(bcd)
 {
     memset(clock_data, 0, sizeof(clock_data));
     stat_regA = RTCA_32768HZ | RTCA_1024HZ;
     stat_regB = RTCB_PRDC_IE |RTCB_BIN | RTCB_24HR;
 
+    if (year_is_bcd) {
+        // The RTC uses BCD for the last two digits in the year.
+        // They python year is a full year.
+        int _year = t[0] % 100;
+        int tens = _year / 10;
+        int ones = _year % 10;
+
+        year = (tens << 4) + ones;
+    } else {
+        // Even though the datasheet says that the year field should be
+        // interpreted as BCD, we just enter the number of years since
+        // 1900 since linux seems to be happy with that (and I believe
+        // that Tru64 was as well)
+        year = t[0] - 1900;
+    }
+
+    mon = t[1];
+    mday = t[2];
+    hour = t[3];
+    min = t[4];
+    sec = t[5];
+
+    // wday is defined to be in the range from 1 - 7 with 1 being Sunday.
+    // the value coming from python is in the range from 0 - 6 with 0 being
+    // Monday.  Fix that here.
+    wday = t[6]  + 2;
+    if (wday > 7)
+        wday -= 7;
+
+    DPRINTFN("Real-time clock set to %s", getDateString());
+}
+
+std::string
+TsunamiIO::RTC::getDateString()
+{
     struct tm tm;
-    gmtime_r(&t, &tm);
 
-    sec = tm.tm_sec;
-    min = tm.tm_min;
-    hour = tm.tm_hour;
-    wday = tm.tm_wday + 1;
-    mday = tm.tm_mday;
-    mon = tm.tm_mon + 1;
-    year = tm.tm_year;
+    memset(&tm, 0, sizeof(tm));
 
-    DPRINTFN("Real-time clock set to %s", asctime(&tm));
+    if (year_is_bcd) {
+        // undo the BCD and conver to years since 1900 guessing that
+        // anything before 1970 is actually after 2000
+        int _year = (year >> 4) * 10 + (year & 0xf);
+        if (_year < 70)
+            _year += 100;
+
+        tm.tm_year = _year;
+    } else {
+        // number of years since 1900
+        tm.tm_year = year;
+    }
+
+    // unix is 0-11 for month
+    tm.tm_mon = mon - 1;
+    tm.tm_mday = mday;
+    tm.tm_hour = hour;
+    tm.tm_min = min;
+    tm.tm_sec = sec;
+
+    // to add more annoyance unix is 0 - 6 with 0 as sunday
+    tm.tm_wday = wday - 1;
+
+    return asctime(&tm);
 }
 
 void
@@ -424,7 +476,8 @@
 
 TsunamiIO::TsunamiIO(Params *p)
     : BasicPioDevice(p), tsunami(p->tsunami), pitimer(p->name + "pitimer"),
-      rtc(p->name + ".rtc", p->tsunami, p->init_time, p->frequency)
+      rtc(p->name + ".rtc", p->tsunami, p->init_time, p->year_is_bcd,
+          p->frequency)
 {
     pioSize = 0x100;
 
@@ -649,7 +702,8 @@
     Param<Tick> frequency;
     SimObjectParam<Platform *> platform;
     SimObjectParam<System *> system;
-    Param<time_t> time;
+    VectorParam<int> time;
+    Param<bool> year_is_bcd;
     SimObjectParam<Tsunami *> tsunami;
 
 END_DECLARE_SIM_OBJECT_PARAMS(TsunamiIO)
@@ -662,6 +716,7 @@
     INIT_PARAM(platform, "platform"),
     INIT_PARAM(system, "system object"),
     INIT_PARAM(time, "System time to use (0 for actual time"),
+    INIT_PARAM(year_is_bcd, ""),
     INIT_PARAM(tsunami, "Tsunami")
 
 END_INIT_SIM_OBJECT_PARAMS(TsunamiIO)
@@ -676,6 +731,7 @@
     p->platform = platform;
     p->system = system;
     p->init_time = time;
+    p->year_is_bcd = year_is_bcd;
     p->tsunami = tsunami;
     return new TsunamiIO(p);
 }
diff --git a/src/dev/alpha/tsunami_io.hh b/src/dev/alpha/tsunami_io.hh
index b0c368e..f42af41 100644
--- a/src/dev/alpha/tsunami_io.hh
+++ b/src/dev/alpha/tsunami_io.hh
@@ -85,6 +85,9 @@
         /** Current RTC register address/index */
         int addr;
 
+        /** should the year be interpreted as BCD? */
+        bool year_is_bcd;
+
         /** Data for real-time clock function */
         union {
             uint8_t clock_data[10];
@@ -110,7 +113,8 @@
         uint8_t stat_regB;
 
       public:
-        RTC(const std::string &name, Tsunami* tsunami, time_t t, Tick i);
+        RTC(const std::string &name, Tsunami* tsunami,
+            const std::vector<int> &t, bool bcd, Tick i);
 
         /** RTC address port: write address of RTC RAM data to access */
         void writeAddr(const uint8_t data);
@@ -121,6 +125,9 @@
         /** RTC read data */
         uint8_t readData();
 
+        /** RTC get the date */
+        std::string getDateString();
+
         /**
           * Serialize this object to the given output stream.
           * @param base The base name of the counter object.
@@ -313,8 +320,10 @@
     {
         Tick frequency;
         Tsunami *tsunami;
-        time_t init_time;
+        std::vector<int> init_time;
+        bool year_is_bcd;
     };
+
   protected:
     const Params *params() const { return (const Params*)_params; }
 
diff --git a/src/dev/baddev.cc b/src/dev/baddev.cc
index 6a70604..a2d2650 100644
--- a/src/dev/baddev.cc
+++ b/src/dev/baddev.cc
@@ -56,12 +56,14 @@
 BadDevice::read(PacketPtr pkt)
 {
     panic("Device %s not imlpmented\n", devname);
+    M5_DUMMY_RETURN
 }
 
 Tick
 BadDevice::write(PacketPtr pkt)
 {
     panic("Device %s not imlpmented\n", devname);
+    M5_DUMMY_RETURN
 }
 
 BEGIN_DECLARE_SIM_OBJECT_PARAMS(BadDevice)
diff --git a/src/dev/ide_atareg.h b/src/dev/ide_atareg.h
index df16d09..b9f1d9e 100644
--- a/src/dev/ide_atareg.h
+++ b/src/dev/ide_atareg.h
@@ -35,7 +35,7 @@
 
 #if defined(linux)
 #include <endian.h>
-#elif defined(__sun__)
+#elif defined(__sun)
 #include <sys/isa_defs.h>
 #else
 #include <machine/endian.h>
diff --git a/src/dev/io_device.hh b/src/dev/io_device.hh
index aa242d1..c56eba2 100644
--- a/src/dev/io_device.hh
+++ b/src/dev/io_device.hh
@@ -109,7 +109,7 @@
 
     virtual bool recvTiming(PacketPtr pkt);
     virtual Tick recvAtomic(PacketPtr pkt)
-    { panic("dma port shouldn't be used for pio access."); }
+    { panic("dma port shouldn't be used for pio access."); M5_DUMMY_RETURN }
     virtual void recvFunctional(PacketPtr pkt)
     { panic("dma port shouldn't be used for pio access."); }
 
diff --git a/src/dev/pciconfigall.cc b/src/dev/pciconfigall.cc
index 39c8f0f..bd18558 100644
--- a/src/dev/pciconfigall.cc
+++ b/src/dev/pciconfigall.cc
@@ -83,8 +83,10 @@
 {
     assert(pkt->result == Packet::Unknown);
     panic("Attempting to write to config space on non-existant device\n");
+    M5_DUMMY_RETURN
 }
 
+
 void
 PciConfigAll::addressRanges(AddrRangeList &range_list)
 {
diff --git a/src/dev/pcidev.hh b/src/dev/pcidev.hh
index fbfdbb6..56e3ffb 100644
--- a/src/dev/pcidev.hh
+++ b/src/dev/pcidev.hh
@@ -37,6 +37,8 @@
 #ifndef __DEV_PCIDEV_HH__
 #define __DEV_PCIDEV_HH__
 
+#include <cstring>
+
 #include "dev/io_device.hh"
 #include "dev/pcireg.h"
 #include "dev/platform.hh"
@@ -62,8 +64,8 @@
     PciConfigData(const std::string &name)
         : SimObject(name)
     {
-        memset(config.data, 0, sizeof(config.data));
-        memset(BARSize, 0, sizeof(BARSize));
+        std::memset(config.data, 0, sizeof(config.data));
+        std::memset(BARSize, 0, sizeof(BARSize));
     }
 
     /** The first 64 bytes */
diff --git a/src/dev/platform.cc b/src/dev/platform.cc
index 0728824..b2b8695 100644
--- a/src/dev/platform.cc
+++ b/src/dev/platform.cc
@@ -62,6 +62,7 @@
 Platform::pciToDma(Addr pciAddr) const
 {
    panic("No PCI dma support in platform.");
+   M5_DUMMY_RETURN
 }
 
 void
diff --git a/src/dev/sparc/mm_disk.cc b/src/dev/sparc/mm_disk.cc
index 9057c28..018415f 100644
--- a/src/dev/sparc/mm_disk.cc
+++ b/src/dev/sparc/mm_disk.cc
@@ -33,6 +33,8 @@
  * in legion. Any access is translated to an offset in the disk image.
  */
 
+#include <cstring>
+
 #include "base/trace.hh"
 #include "dev/sparc/mm_disk.hh"
 #include "dev/platform.hh"
@@ -45,7 +47,7 @@
 MmDisk::MmDisk(Params *p)
     : BasicPioDevice(p), image(p->image), curSector((uint64_t)-1), dirty(false)
 {
-    memset(&bytes, 0, SectorSize);
+    std::memset(&bytes, 0, SectorSize);
     pioSize = image->size() * SectorSize;
 }
 
@@ -99,6 +101,7 @@
 MmDisk::write(PacketPtr pkt)
 {
    panic("need to implement\n");
+   M5_DUMMY_RETURN
 }
 
 
diff --git a/src/dev/sparc/t1000.cc b/src/dev/sparc/t1000.cc
index 4a8de77..2338086 100644
--- a/src/dev/sparc/t1000.cc
+++ b/src/dev/sparc/t1000.cc
@@ -57,6 +57,7 @@
 T1000::intrFrequency()
 {
     panic("Need implementation\n");
+    M5_DUMMY_RETURN
 }
 
 void
@@ -89,6 +90,7 @@
 T1000::pciToDma(Addr pciAddr) const
 {
     panic("Need implementation\n");
+    M5_DUMMY_RETURN
 }
 
 
@@ -96,6 +98,7 @@
 T1000::calcConfigAddr(int bus, int dev, int func)
 {
     panic("Need implementation\n");
+    M5_DUMMY_RETURN
 }
 
 void
diff --git a/src/mem/cache/cache_impl.hh b/src/mem/cache/cache_impl.hh
index 9c41983..b8c8964 100644
--- a/src/mem/cache/cache_impl.hh
+++ b/src/mem/cache/cache_impl.hh
@@ -40,6 +40,7 @@
 
 #include <cassert>
 #include <iostream>
+#include <cstring>
 #include <string>
 
 #include "sim/host.hh"
@@ -125,7 +126,7 @@
                 assert(offset < blkSize);
                 assert(pkt->getSize() <= blkSize);
                 assert(offset+pkt->getSize() <= blkSize);
-                memcpy(blk->data + offset, pkt->getPtr<uint8_t>(),
+                std::memcpy(blk->data + offset, pkt->getPtr<uint8_t>(),
                        pkt->getSize());
             } else if (!(pkt->flags & SATISFIED)) {
                 pkt->flags |= SATISFIED;
@@ -133,7 +134,7 @@
                 assert(offset < blkSize);
                 assert(pkt->getSize() <= blkSize);
                 assert(offset + pkt->getSize() <=blkSize);
-                memcpy(pkt->getPtr<uint8_t>(), blk->data + offset,
+                std::memcpy(pkt->getPtr<uint8_t>(), blk->data + offset,
                        pkt->getSize());
             }
             return blk;
@@ -176,7 +177,7 @@
                 if (blk->checkWrite(pkt->req)) {
                     write_data = true;
                     blk->status |= BlkDirty;
-                    memcpy(blk->data + offset, pkt->getPtr<uint8_t>(),
+                    std::memcpy(blk->data + offset, pkt->getPtr<uint8_t>(),
                            pkt->getSize());
                 }
             } else {
@@ -184,7 +185,7 @@
                 if (pkt->req->isLocked()) {
                     blk->trackLoadLocked(pkt->req);
                 }
-                memcpy(pkt->getPtr<uint8_t>(), blk->data + offset,
+                std::memcpy(pkt->getPtr<uint8_t>(), blk->data + offset,
                        pkt->getSize());
             }
 
@@ -228,7 +229,7 @@
 
 
     if (pkt->isRead()) {
-        memcpy(blk->data, pkt->getPtr<uint8_t>(), blkSize);
+        std::memcpy(blk->data, pkt->getPtr<uint8_t>(), blkSize);
     }
 
         blk->whenReady = pkt->finishTime;
@@ -249,14 +250,14 @@
             if (target->isWrite()) {
                 if (blk->checkWrite(pkt->req)) {
                     blk->status |= BlkDirty;
-                    memcpy(blk->data + target->getOffset(blkSize),
+                    std::memcpy(blk->data + target->getOffset(blkSize),
                            target->getPtr<uint8_t>(), target->getSize());
                 }
             } else {
                 if (pkt->req->isLocked()) {
                     blk->trackLoadLocked(pkt->req);
                 }
-                memcpy(target->getPtr<uint8_t>(),
+                std::memcpy(target->getPtr<uint8_t>(),
                        blk->data + target->getOffset(blkSize),
                        target->getSize());
             }
@@ -285,7 +286,7 @@
     blk = doReplacement(blk, pkt, new_state, writebacks);
 
     if (pkt->isRead()) {
-        memcpy(blk->data, pkt->getPtr<uint8_t>(), blkSize);
+        std::memcpy(blk->data, pkt->getPtr<uint8_t>(), blkSize);
     }
 
     blk->whenReady = pkt->finishTime;
@@ -337,14 +338,14 @@
             if (target->isWrite()) {
                 if (blk->checkWrite(pkt->req)) {
                     blk->status |= BlkDirty;
-                    memcpy(blk->data + target->getOffset(blkSize),
+                    std::memcpy(blk->data + target->getOffset(blkSize),
                            target->getPtr<uint8_t>(), target->getSize());
                 }
             } else {
                 if (pkt->req->isLocked()) {
                     blk->trackLoadLocked(pkt->req);
                 }
-                memcpy(target->getPtr<uint8_t>(),
+                std::memcpy(target->getPtr<uint8_t>(),
                        blk->data + target->getOffset(blkSize),
                        target->getSize());
             }
@@ -384,7 +385,7 @@
     assert(offset < blkSize);
     assert(pkt->getSize() <= blkSize);
     assert(offset + pkt->getSize() <=blkSize);
-    memcpy(pkt->getPtr<uint8_t>(), blk->data + offset, pkt->getSize());
+    std::memcpy(pkt->getPtr<uint8_t>(), blk->data + offset, pkt->getSize());
 
     handleSnoop(blk, new_state);
 }
@@ -431,7 +432,7 @@
         new Request(tags->regenerateBlkAddr(blk->tag, blk->set), blkSize, 0);
     PacketPtr writeback = new Packet(writebackReq, Packet::Writeback, -1);
     writeback->allocate();
-    memcpy(writeback->getPtr<uint8_t>(),blk->data,blkSize);
+    std::memcpy(writeback->getPtr<uint8_t>(),blk->data,blkSize);
 
     blk->status &= ~BlkDirty;
     return writeback;
@@ -463,7 +464,7 @@
         assert(blkSize == blk->size);
     }
 
-    retval = memcmp(tmp_data, blk->data, blkSize) == 0;
+    retval = std::memcmp(tmp_data, blk->data, blkSize) == 0;
     delete [] tmp_data;
     return retval;
 }
@@ -664,7 +665,7 @@
                 DPRINTF(Cache, "Block for blk addr %x moving from state "
                         "%i to %i\n", pkt->getAddr(), old_state, new_state);
             //Set the state on the upgrade
-            memcpy(pkt->getPtr<uint8_t>(), blk->data, blkSize);
+            std::memcpy(pkt->getPtr<uint8_t>(), blk->data, blkSize);
             PacketList writebacks;
             handleFill(blk, mshr, new_state, writebacks, pkt);
             assert(writebacks.empty());
@@ -839,7 +840,7 @@
                         assert(offset < blkSize);
                         assert(pkt->getSize() <= blkSize);
                         assert(offset + pkt->getSize() <=blkSize);
-                        memcpy(pkt->getPtr<uint8_t>(), mshr->pkt->getPtr<uint8_t>() + offset, pkt->getSize());
+                        std::memcpy(pkt->getPtr<uint8_t>(), mshr->pkt->getPtr<uint8_t>() + offset, pkt->getSize());
 
                         respondToSnoop(pkt, curTick + hitLatency);
                     }
diff --git a/src/mem/cache/miss/blocking_buffer.cc b/src/mem/cache/miss/blocking_buffer.cc
index 4a431d8..a1af883 100644
--- a/src/mem/cache/miss/blocking_buffer.cc
+++ b/src/mem/cache/miss/blocking_buffer.cc
@@ -32,6 +32,7 @@
  * @file
  * Definitions of a simple buffer for a blocking cache.
  */
+#include <cstring>
 
 #include "mem/cache/base_cache.hh"
 #include "mem/cache/miss/blocking_buffer.hh"
@@ -60,7 +61,7 @@
             wb.allocate(pkt->cmd, blk_addr, blk_size, pkt);
         }
 
-        memcpy(wb.pkt->getPtr<uint8_t>(), pkt->getPtr<uint8_t>(), blk_size);
+        std::memcpy(wb.pkt->getPtr<uint8_t>(), pkt->getPtr<uint8_t>(), blk_size);
 
         cache->setBlocked(Blocked_NoWBBuffers);
         cache->setMasterRequest(Request_WB, time);
@@ -147,7 +148,7 @@
             PacketPtr target = ((MSHR*)(pkt->senderState))->getTarget();
             ((MSHR*)(pkt->senderState))->popTarget();
             if (pkt->isRead()) {
-                memcpy(target->getPtr<uint8_t>(), pkt->getPtr<uint8_t>(), target->getSize());
+                std::memcpy(target->getPtr<uint8_t>(), pkt->getPtr<uint8_t>(), target->getSize());
             }
             cache->respond(target, time);
             assert(!((MSHR*)(pkt->senderState))->hasTargets());
@@ -191,7 +192,7 @@
     PacketPtr pkt = new Packet(req, Packet::Writeback, -1);
     pkt->allocate();
     if (data) {
-        memcpy(pkt->getPtr<uint8_t>(), data, size);
+        std::memcpy(pkt->getPtr<uint8_t>(), data, size);
     }
 
     if (compressed) {
@@ -217,7 +218,7 @@
 
     // Since allocate as buffer copies the request,
     // need to copy data here.
-        memcpy(wb.pkt->getPtr<uint8_t>(), pkt->getPtr<uint8_t>(), pkt->getSize());
+    std::memcpy(wb.pkt->getPtr<uint8_t>(), pkt->getPtr<uint8_t>(), pkt->getSize());
 
     cache->setBlocked(Blocked_NoWBBuffers);
     cache->setMasterRequest(Request_WB, curTick);
diff --git a/src/mem/cache/miss/blocking_buffer.hh b/src/mem/cache/miss/blocking_buffer.hh
index 205068a..24386a2 100644
--- a/src/mem/cache/miss/blocking_buffer.hh
+++ b/src/mem/cache/miss/blocking_buffer.hh
@@ -90,6 +90,7 @@
                      PacketPtr &target)
     {
         fatal("Unimplemented");
+        M5_DUMMY_RETURN
     }
 
     /**
@@ -201,6 +202,7 @@
     MSHR* allocateTargetList(Addr addr)
     {
         fatal("Unimplemented");
+        M5_DUMMY_RETURN
     }
 };
 
diff --git a/src/mem/cache/tags/iic.cc b/src/mem/cache/tags/iic.cc
index 38f9662..e547e11 100644
--- a/src/mem/cache/tags/iic.cc
+++ b/src/mem/cache/tags/iic.cc
@@ -527,7 +527,7 @@
     tag = extractTag(addr);
     mask = hashSets-1; /* assumes iic_hash_size is a power of 2 */
     x = tag & mask;
-    y = (tag >> (int)(::log(hashSets)/::log(2))) & mask;
+    y = (tag >> (int)(::log((double)hashSets)/::log((double)2))) & mask;
     assert (x < hashSets && y < hashSets);
     return x ^ y;
 #endif
diff --git a/src/mem/cache/tags/lru.hh b/src/mem/cache/tags/lru.hh
index 4b94adc..7527254 100644
--- a/src/mem/cache/tags/lru.hh
+++ b/src/mem/cache/tags/lru.hh
@@ -36,6 +36,7 @@
 #ifndef __LRU_HH__
 #define __LRU_HH__
 
+#include <cstring>
 #include <list>
 
 #include "mem/cache/cache_blk.hh" // base class
@@ -273,7 +274,7 @@
      */
     void readData(LRUBlk *blk, uint8_t *data)
     {
-        memcpy(data, blk->data, blk->size);
+        std::memcpy(data, blk->data, blk->size);
     }
 
     /**
diff --git a/src/mem/cache/tags/split.hh b/src/mem/cache/tags/split.hh
index e6ace09..840b689 100644
--- a/src/mem/cache/tags/split.hh
+++ b/src/mem/cache/tags/split.hh
@@ -36,6 +36,7 @@
 #ifndef __SPLIT_HH__
 #define __SPLIT_HH__
 
+#include <cstring>
 #include <list>
 
 #include "mem/cache/cache_blk.hh" // base class
@@ -234,6 +235,7 @@
     int extractSet(Addr addr) const
     {
         panic("should never call this!\n");
+        M5_DUMMY_RETURN
     }
 
     /**
@@ -281,7 +283,7 @@
      */
     void readData(SplitBlk *blk, uint8_t *data)
     {
-        memcpy(data, blk->data, blk->size);
+        std::memcpy(data, blk->data, blk->size);
     }
 
     /**
diff --git a/src/mem/cache/tags/split_lifo.hh b/src/mem/cache/tags/split_lifo.hh
index 9001cdb..0f8adf1 100644
--- a/src/mem/cache/tags/split_lifo.hh
+++ b/src/mem/cache/tags/split_lifo.hh
@@ -36,6 +36,7 @@
 #ifndef __SPLIT_LIFO_HH__
 #define __SPLIT_LIFO_HH__
 
+#include <cstring>
 #include <list>
 
 #include "mem/cache/cache_blk.hh" // base class
@@ -296,7 +297,7 @@
      */
     void readData(SplitBlk *blk, uint8_t *data)
     {
-        memcpy(data, blk->data, blk->size);
+        std::memcpy(data, blk->data, blk->size);
     }
 
     /**
diff --git a/src/mem/cache/tags/split_lru.hh b/src/mem/cache/tags/split_lru.hh
index e17a478..eb65445 100644
--- a/src/mem/cache/tags/split_lru.hh
+++ b/src/mem/cache/tags/split_lru.hh
@@ -36,6 +36,7 @@
 #ifndef __SPLIT_LRU_HH__
 #define __SPLIT_LRU_HH__
 
+#include <cstring>
 #include <list>
 
 #include "mem/cache/cache_blk.hh" // base class
@@ -279,7 +280,7 @@
      */
     void readData(SplitBlk *blk, uint8_t *data)
     {
-        memcpy(data, blk->data, blk->size);
+        std::memcpy(data, blk->data, blk->size);
     }
 
     /**
diff --git a/src/mem/dram.cc b/src/mem/dram.cc
index 873ca5b..394c70d 100644
--- a/src/mem/dram.cc
+++ b/src/mem/dram.cc
@@ -102,7 +102,7 @@
 
 #include "mem/dram.hh"
 #include "sim/builder.hh"
-
+#include <stdlib.h>
 #include <string>
 
 extern int maxThreadsPerCPU;
@@ -203,7 +203,7 @@
         last_bank = num_banks+1;
         last_row  = num_rows;
         busy_until = new Tick[num_banks];
-        memset(busy_until,0,sizeof(Tick)*num_banks); /* initiliaze */
+        std::memset(busy_until,0,sizeof(Tick)*num_banks); /* initiliaze */
 
 }
 
diff --git a/src/mem/packet.cc b/src/mem/packet.cc
index e2faf45..4480523 100644
--- a/src/mem/packet.cc
+++ b/src/mem/packet.cc
@@ -36,7 +36,7 @@
  */
 
 #include <iostream>
-
+#include <cstring>
 #include "base/misc.hh"
 #include "base/trace.hh"
 #include "mem/packet.hh"
@@ -183,7 +183,7 @@
     if (func->isRead()) {
         if (funcStart >= timingStart && funcEnd <= timingEnd) {
             func->allocate();
-            memcpy(func->getPtr<uint8_t>(), timing->getPtr<uint8_t>() +
+            std::memcpy(func->getPtr<uint8_t>(), timing->getPtr<uint8_t>() +
                     funcStart - timingStart, func->getSize());
             func->result = Packet::Success;
             func->flags |= SATISFIED;
@@ -199,11 +199,11 @@
         }
     } else if (func->isWrite()) {
         if (funcStart >= timingStart) {
-            memcpy(timing->getPtr<uint8_t>() + (funcStart - timingStart),
+            std::memcpy(timing->getPtr<uint8_t>() + (funcStart - timingStart),
                    func->getPtr<uint8_t>(),
                    (std::min(funcEnd, timingEnd) - funcStart) + 1);
         } else { // timingStart > funcStart
-            memcpy(timing->getPtr<uint8_t>(),
+            std::memcpy(timing->getPtr<uint8_t>(),
                    func->getPtr<uint8_t>() + (timingStart - funcStart),
                    (std::min(funcEnd, timingEnd) - timingStart) + 1);
         }
diff --git a/src/mem/physical.cc b/src/mem/physical.cc
index 7d616a4..eccd42b 100644
--- a/src/mem/physical.cc
+++ b/src/mem/physical.cc
@@ -59,7 +59,7 @@
 
     int map_flags = MAP_ANON | MAP_PRIVATE;
     pmemAddr = (uint8_t *)mmap(NULL, params()->addrRange.size(), PROT_READ | PROT_WRITE,
-                                map_flags, -1, 0);
+            map_flags, -1, 0);
 
     if (pmemAddr == (void *)MAP_FAILED) {
         perror("mmap");
@@ -84,7 +84,7 @@
 PhysicalMemory::~PhysicalMemory()
 {
     if (pmemAddr)
-        munmap(pmemAddr, params()->addrRange.size());
+        munmap((char*)pmemAddr, params()->addrRange.size());
     //Remove memPorts?
 }
 
@@ -430,7 +430,7 @@
     // unmap file that was mmaped in the constructor
     // This is done here to make sure that gzip and open don't muck with our
     // nice large space of memory before we reallocate it
-    munmap(pmemAddr, params()->addrRange.size());
+    munmap((char*)pmemAddr, params()->addrRange.size());
 
     pmemAddr = (uint8_t *)mmap(NULL, params()->addrRange.size(), PROT_READ | PROT_WRITE,
                                 MAP_ANON | MAP_PRIVATE, -1, 0);
diff --git a/src/mem/port.cc b/src/mem/port.cc
index bbc98c1..da719bb 100644
--- a/src/mem/port.cc
+++ b/src/mem/port.cc
@@ -32,6 +32,7 @@
  * @file
  * Port object definitions.
  */
+#include <cstring>
 
 #include "base/chunk_generator.hh"
 #include "base/trace.hh"
@@ -78,7 +79,7 @@
     // quick and dirty...
     uint8_t *buf = new uint8_t[size];
 
-    memset(buf, val, size);
+    std::memset(buf, val, size);
     blobHelper(addr, buf, size, Packet::WriteReq);
 
     delete [] buf;
diff --git a/src/mem/port.hh b/src/mem/port.hh
index 75afc04..5e55225 100644
--- a/src/mem/port.hh
+++ b/src/mem/port.hh
@@ -159,7 +159,7 @@
         this function to be called, a DMA interface doesn't really have a
         block size, so it is defaulted to a panic.
     */
-    virtual int deviceBlockSize() { panic("??"); }
+    virtual int deviceBlockSize() { panic("??"); M5_DUMMY_RETURN }
 
     /** The peer port is requesting us to reply with a list of the ranges we
         are responsible for.
@@ -261,8 +261,10 @@
     {}
 
   protected:
-    virtual bool recvTiming(PacketPtr pkt) { panic("FuncPort is UniDir"); }
-    virtual Tick recvAtomic(PacketPtr pkt) { panic("FuncPort is UniDir"); }
+    virtual bool recvTiming(PacketPtr pkt) { panic("FuncPort is UniDir");
+        M5_DUMMY_RETURN }
+    virtual Tick recvAtomic(PacketPtr pkt) { panic("FuncPort is UniDir");
+        M5_DUMMY_RETURN }
     virtual void recvFunctional(PacketPtr pkt) { panic("FuncPort is UniDir"); }
     virtual void recvStatusChange(Status status) {}
 
diff --git a/src/python/m5/objects/Tsunami.py b/src/python/m5/objects/Tsunami.py
index 18a776a..85105ff 100644
--- a/src/python/m5/objects/Tsunami.py
+++ b/src/python/m5/objects/Tsunami.py
@@ -15,6 +15,8 @@
     type = 'TsunamiIO'
     time = Param.Time('01/01/2009',
         "System time to use ('Now' for actual time)")
+    year_is_bcd = Param.Bool(False,
+        "The RTC should interpret the year as a BCD value")
     tsunami = Param.Tsunami(Parent.any, "Tsunami")
     frequency = Param.Frequency('1024Hz', "frequency of interrupts")
 
diff --git a/src/python/m5/params.py b/src/python/m5/params.py
index d570804..f8a9f9d 100644
--- a/src/python/m5/params.py
+++ b/src/python/m5/params.py
@@ -518,49 +518,55 @@
         else:
             return self.value
 
-def parse_time(value):
-    strings = [ "%a %b %d %H:%M:%S %Z %Y",
-                "%a %b %d %H:%M:%S %Z %Y",
-                "%Y/%m/%d %H:%M:%S",
-                "%Y/%m/%d %H:%M",
-                "%Y/%m/%d",
-                "%m/%d/%Y %H:%M:%S",
-                "%m/%d/%Y %H:%M",
-                "%m/%d/%Y",
-                "%m/%d/%y %H:%M:%S",
-                "%m/%d/%y %H:%M",
-                "%m/%d/%y"]
+time_formats = [ "%a %b %d %H:%M:%S %Z %Y",
+                 "%a %b %d %H:%M:%S %Z %Y",
+                 "%Y/%m/%d %H:%M:%S",
+                 "%Y/%m/%d %H:%M",
+                 "%Y/%m/%d",
+                 "%m/%d/%Y %H:%M:%S",
+                 "%m/%d/%Y %H:%M",
+                 "%m/%d/%Y",
+                 "%m/%d/%y %H:%M:%S",
+                 "%m/%d/%y %H:%M",
+                 "%m/%d/%y"]
 
-    for string in strings:
-        try:
-            return time.strptime(value, string)
-        except ValueError:
-            pass
+
+def parse_time(value):
+    from time import gmtime, strptime, struct_time, time
+    from datetime import datetime, date
+
+    if isinstance(value, struct_time):
+        return value
+
+    if isinstance(value, (int, long)):
+        return gmtime(value)
+
+    if isinstance(value, (datetime, date)):
+        return value.timetuple()
+
+    if isinstance(value, str):
+        if value in ('Now', 'Today'):
+            return time.gmtime(time.time())
+
+        for format in time_formats:
+            try:
+                return strptime(value, format)
+            except ValueError:
+                pass
 
     raise ValueError, "Could not parse '%s' as a time" % value
 
 class Time(ParamValue):
     cxx_type = 'time_t'
     def __init__(self, value):
-        if isinstance(value, time.struct_time):
-            self.value = time.mktime(value)
-        elif isinstance(value, int):
-            self.value = value
-        elif isinstance(value, str):
-            if value in ('Now', 'Today'):
-                self.value = time.time()
-            else:
-                self.value = time.mktime(parse_time(value))
-        elif isinstance(value, (datetime.datetime, datetime.date)):
-            self.value = time.mktime(value.timetuple())
-        else:
-            raise ValueError, "Could not parse '%s' as a time" % value
+        self.value = parse_time(value)
 
     def __str__(self):
-        return str(int(self.value))
+        tm = self.value
+        return ' '.join([ str(tm[i]) for i in xrange(8)])
 
     def ini_str(self):
-        return str(int(self.value))
+        return str(self)
 
 # Enumerated types are a little more complex.  The user specifies the
 # type as Enum(foo) where foo is either a list or dictionary of
diff --git a/src/sim/byteswap.hh b/src/sim/byteswap.hh
index 9e73909..cbc0b50 100644
--- a/src/sim/byteswap.hh
+++ b/src/sim/byteswap.hh
@@ -47,7 +47,7 @@
 // If one doesn't exist, we pretty much get what is listed below, so it all
 // works out
 #include <byteswap.h>
-#elif defined (__sun__)
+#elif defined (__sun)
 #include <sys/isa_defs.h>
 #else
 #include <machine/endian.h>
diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/config.ini b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/config.ini
index 7180478..034ed9f 100644
--- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/config.ini
+++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/config.ini
@@ -7,9 +7,6 @@
 output_file=cout
 progress_interval=0
 
-[debug]
-break_cycles=
-
 [exetrace]
 intel_format=false
 legion_lockstep=false
@@ -89,6 +86,7 @@
 max_insts_any_thread=0
 max_loads_all_threads=0
 max_loads_any_thread=0
+phase=0
 profile=0
 progress_interval=0
 simulate_stalls=false
@@ -122,6 +120,7 @@
 max_insts_any_thread=0
 max_loads_all_threads=0
 max_loads_any_thread=0
+phase=0
 profile=0
 progress_interval=0
 simulate_stalls=false
@@ -206,8 +205,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=true
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.membus.default
 
 [system.physmem]
@@ -215,6 +219,7 @@
 file=
 latency=1
 range=0:134217727
+zero=false
 port=system.membus.port[1]
 
 [system.sim_console]
@@ -347,8 +352,13 @@
 pio_size=393216
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[9]
 
 [system.tsunami.fake_ata0]
@@ -358,8 +368,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[20]
 
 [system.tsunami.fake_ata1]
@@ -369,8 +384,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[21]
 
 [system.tsunami.fake_pnp_addr]
@@ -380,8 +400,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[10]
 
 [system.tsunami.fake_pnp_read0]
@@ -391,8 +416,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[12]
 
 [system.tsunami.fake_pnp_read1]
@@ -402,8 +432,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[13]
 
 [system.tsunami.fake_pnp_read2]
@@ -413,8 +448,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[14]
 
 [system.tsunami.fake_pnp_read3]
@@ -424,8 +464,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[15]
 
 [system.tsunami.fake_pnp_read4]
@@ -435,8 +480,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[16]
 
 [system.tsunami.fake_pnp_read5]
@@ -446,8 +496,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[17]
 
 [system.tsunami.fake_pnp_read6]
@@ -457,8 +512,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[18]
 
 [system.tsunami.fake_pnp_read7]
@@ -468,8 +528,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[19]
 
 [system.tsunami.fake_pnp_write]
@@ -479,19 +544,29 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[11]
 
 [system.tsunami.fake_ppc]
 type=IsaFake
-pio_addr=8804615848892
+pio_addr=8804615848891
 pio_latency=2
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[8]
 
 [system.tsunami.fake_sm_chip]
@@ -501,8 +576,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[3]
 
 [system.tsunami.fake_uart1]
@@ -512,8 +592,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[4]
 
 [system.tsunami.fake_uart2]
@@ -523,8 +608,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[5]
 
 [system.tsunami.fake_uart3]
@@ -534,8 +624,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[6]
 
 [system.tsunami.fake_uart4]
@@ -545,8 +640,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[7]
 
 [system.tsunami.fb]
@@ -616,8 +716,9 @@
 pio_latency=2
 platform=system.tsunami
 system=system
-time=1136073600
+time=2009 1 1 0 0 0 3 1
 tsunami=system.tsunami
+year_is_bcd=false
 pio=system.iobus.port[23]
 
 [system.tsunami.pchip]
diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/config.out b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/config.out
index ae75e1d..35abc9f 100644
--- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/config.out
+++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/config.out
@@ -10,6 +10,7 @@
 file=
 range=[0,134217727]
 latency=1
+zero=false
 
 [system]
 type=LinuxAlphaSystem
@@ -57,6 +58,7 @@
 do_checkpoint_insts=true
 do_statistics_insts=true
 clock=1
+phase=0
 defer_registration=false
 width=1
 function_trace=false
@@ -78,7 +80,12 @@
 pio_latency=0
 pio_size=8
 ret_bad_addr=true
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -149,6 +156,7 @@
 do_checkpoint_insts=true
 do_statistics_insts=true
 clock=1
+phase=0
 defer_registration=false
 width=1
 function_trace=false
@@ -171,7 +179,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -181,7 +194,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -191,7 +209,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -201,17 +224,27 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
 [system.tsunami.fake_ppc]
 type=IsaFake
-pio_addr=8804615848892
+pio_addr=8804615848891
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -230,7 +263,8 @@
 frequency=1953125
 platform=system.tsunami
 system=system
-time=1136073600
+time=2009 1 1 0 0 0 3 1
+year_is_bcd=false
 tsunami=system.tsunami
 
 []
@@ -269,7 +303,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -279,7 +318,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -297,7 +341,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -307,7 +356,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -317,7 +371,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -327,7 +386,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -337,7 +401,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -347,7 +416,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -357,7 +431,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -367,7 +446,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -377,7 +461,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -464,7 +553,12 @@
 pio_latency=2
 pio_size=393216
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -482,7 +576,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -492,7 +591,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -595,9 +699,6 @@
 legion_lockstep=false
 trace_system=client
 
-[debug]
-break_cycles=
-
 [statsreset]
 reset_cycle=0
 
diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/m5stats.txt b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/m5stats.txt
index 2fcb2a6..4dbe8c1 100644
--- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/m5stats.txt
+++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/m5stats.txt
@@ -1,13 +1,13 @@
 
 ---------- Begin Simulation Statistics ----------
-host_inst_rate                                1285205                       # Simulator instruction rate (inst/s)
-host_mem_usage                                 200148                       # Number of bytes of host memory used
-host_seconds                                    50.51                       # Real time elapsed on the host
-host_tick_rate                               73618621                       # Simulator tick rate (ticks/s)
+host_inst_rate                                1026206                       # Simulator instruction rate (inst/s)
+host_mem_usage                                 240860                       # Number of bytes of host memory used
+host_seconds                                    63.27                       # Real time elapsed on the host
+host_tick_rate                               58764450                       # Simulator tick rate (ticks/s)
 sim_freq                                   2000000000                       # Frequency of simulated ticks
-sim_insts                                    64909600                       # Number of instructions simulated
-sim_seconds                                  1.859078                       # Number of seconds simulated
-sim_ticks                                  3718155709                       # Number of ticks simulated
+sim_insts                                    64932819                       # Number of instructions simulated
+sim_seconds                                  1.859157                       # Number of seconds simulated
+sim_ticks                                  3718314928                       # Number of ticks simulated
 system.cpu0.dtb.accesses                       544556                       # DTB accesses
 system.cpu0.dtb.acv                               335                       # DTB access violations
 system.cpu0.dtb.hits                         14841931                       # DTB hits
@@ -20,7 +20,7 @@
 system.cpu0.dtb.write_acv                         125                       # DTB write access violations
 system.cpu0.dtb.write_hits                    5871355                       # DTB write hits
 system.cpu0.dtb.write_misses                      775                       # DTB write misses
-system.cpu0.idle_fraction                    0.984943                       # Percentage of idle cycles
+system.cpu0.idle_fraction                    0.984944                       # Percentage of idle cycles
 system.cpu0.itb.accesses                      3586919                       # ITB accesses
 system.cpu0.itb.acv                               184                       # ITB acv
 system.cpu0.itb.hits                          3583450                       # ITB hits
@@ -58,8 +58,8 @@
 system.cpu0.kern.ipl_good_22                     1896      1.35%     50.76% # number of times we switched to this ipl from a different ipl
 system.cpu0.kern.ipl_good_30                        8      0.01%     50.77% # number of times we switched to this ipl from a different ipl
 system.cpu0.kern.ipl_good_31                    69366     49.23%    100.00% # number of times we switched to this ipl from a different ipl
-system.cpu0.kern.ipl_ticks                 3718155294                       # number of cycles we spent at this ipl
-system.cpu0.kern.ipl_ticks_0               3683661066     99.07%     99.07% # number of cycles we spent at this ipl
+system.cpu0.kern.ipl_ticks                 3718314513                       # number of cycles we spent at this ipl
+system.cpu0.kern.ipl_ticks_0               3683820285     99.07%     99.07% # number of cycles we spent at this ipl
 system.cpu0.kern.ipl_ticks_21                   40474      0.00%     99.07% # number of cycles we spent at this ipl
 system.cpu0.kern.ipl_ticks_22                  163056      0.00%     99.08% # number of cycles we spent at this ipl
 system.cpu0.kern.ipl_ticks_30                    2026      0.00%     99.08% # number of cycles we spent at this ipl
@@ -80,7 +80,7 @@
 system.cpu0.kern.mode_switch_good_kernel     0.166877                       # fraction of useful protection mode switches
 system.cpu0.kern.mode_switch_good_user              1                       # fraction of useful protection mode switches
 system.cpu0.kern.mode_switch_good_idle   <err: div-0>                       # fraction of useful protection mode switches
-system.cpu0.kern.mode_ticks_kernel         3716512331     99.96%     99.96% # number of ticks spent at the given mode
+system.cpu0.kern.mode_ticks_kernel         3716671550     99.96%     99.96% # number of ticks spent at the given mode
 system.cpu0.kern.mode_ticks_user              1642961      0.04%    100.00% # number of ticks spent at the given mode
 system.cpu0.kern.mode_ticks_idle                    0      0.00%    100.00% # number of ticks spent at the given mode
 system.cpu0.kern.swap_context                    3792                       # number of times the context was actually changed
@@ -113,28 +113,28 @@
 system.cpu0.kern.syscall_132                        1      0.50%     97.99% # number of syscalls executed
 system.cpu0.kern.syscall_144                        2      1.01%     98.99% # number of syscalls executed
 system.cpu0.kern.syscall_147                        2      1.01%    100.00% # number of syscalls executed
-system.cpu0.not_idle_fraction                0.015057                       # Percentage of non-idle cycles
+system.cpu0.not_idle_fraction                0.015056                       # Percentage of non-idle cycles
 system.cpu0.numCycles                        55984201                       # number of cpu cycles simulated
 system.cpu0.num_insts                        55980548                       # Number of instructions executed
 system.cpu0.num_refs                         15081320                       # Number of memory references
 system.cpu1.dtb.accesses                       761000                       # DTB accesses
 system.cpu1.dtb.acv                                32                       # DTB access violations
-system.cpu1.dtb.hits                          2653187                       # DTB hits
+system.cpu1.dtb.hits                          2658022                       # DTB hits
 system.cpu1.dtb.misses                           4173                       # DTB misses
 system.cpu1.dtb.read_accesses                  523552                       # DTB read accesses
 system.cpu1.dtb.read_acv                            0                       # DTB read access violations
-system.cpu1.dtb.read_hits                     1675663                       # DTB read hits
+system.cpu1.dtb.read_hits                     1679180                       # DTB read hits
 system.cpu1.dtb.read_misses                      3798                       # DTB read misses
 system.cpu1.dtb.write_accesses                 237448                       # DTB write accesses
 system.cpu1.dtb.write_acv                          32                       # DTB write access violations
-system.cpu1.dtb.write_hits                     977524                       # DTB write hits
+system.cpu1.dtb.write_hits                     978842                       # DTB write hits
 system.cpu1.dtb.write_misses                      375                       # DTB write misses
-system.cpu1.idle_fraction                    0.997598                       # Percentage of idle cycles
-system.cpu1.itb.accesses                      2420372                       # ITB accesses
+system.cpu1.idle_fraction                    0.997592                       # Percentage of idle cycles
+system.cpu1.itb.accesses                      2420426                       # ITB accesses
 system.cpu1.itb.acv                                 0                       # ITB acv
-system.cpu1.itb.hits                          2418785                       # ITB hits
+system.cpu1.itb.hits                          2418839                       # ITB hits
 system.cpu1.itb.misses                           1587                       # ITB misses
-system.cpu1.kern.callpal                        34405                       # number of callpals executed
+system.cpu1.kern.callpal                        34411                       # number of callpals executed
 system.cpu1.kern.callpal_cserve                     1      0.00%      0.00% # number of callpals executed
 system.cpu1.kern.callpal_wripir                     8      0.02%      0.03% # number of callpals executed
 system.cpu1.kern.callpal_wrmces                     1      0.00%      0.03% # number of callpals executed
@@ -142,7 +142,7 @@
 system.cpu1.kern.callpal_swpctx                   468      1.36%      1.39% # number of callpals executed
 system.cpu1.kern.callpal_tbi                        5      0.01%      1.41% # number of callpals executed
 system.cpu1.kern.callpal_wrent                      7      0.02%      1.43% # number of callpals executed
-system.cpu1.kern.callpal_swpipl                 28030     81.47%     82.90% # number of callpals executed
+system.cpu1.kern.callpal_swpipl                 28036     81.47%     82.90% # number of callpals executed
 system.cpu1.kern.callpal_rdps                    3042      8.84%     91.74% # number of callpals executed
 system.cpu1.kern.callpal_wrkgp                      1      0.00%     91.74% # number of callpals executed
 system.cpu1.kern.callpal_wrusp                      5      0.01%     91.76% # number of callpals executed
@@ -152,28 +152,28 @@
 system.cpu1.kern.callpal_imb                       59      0.17%    100.00% # number of callpals executed
 system.cpu1.kern.callpal_rdunique                   1      0.00%    100.00% # number of callpals executed
 system.cpu1.kern.inst.arm                           0                       # number of arm instructions executed
-system.cpu1.kern.inst.hwrei                     42209                       # number of hwrei instructions executed
-system.cpu1.kern.inst.quiesce                    2146                       # number of quiesce instructions executed
-system.cpu1.kern.ipl_count                      32627                       # number of times we switched to this ipl
-system.cpu1.kern.ipl_count_0                    11165     34.22%     34.22% # number of times we switched to this ipl
+system.cpu1.kern.inst.hwrei                     42215                       # number of hwrei instructions executed
+system.cpu1.kern.inst.quiesce                    2214                       # number of quiesce instructions executed
+system.cpu1.kern.ipl_count                      32633                       # number of times we switched to this ipl
+system.cpu1.kern.ipl_count_0                    11168     34.22%     34.22% # number of times we switched to this ipl
 system.cpu1.kern.ipl_count_22                    1895      5.81%     40.03% # number of times we switched to this ipl
 system.cpu1.kern.ipl_count_30                     115      0.35%     40.38% # number of times we switched to this ipl
-system.cpu1.kern.ipl_count_31                   19452     59.62%    100.00% # number of times we switched to this ipl
-system.cpu1.kern.ipl_good                       24195                       # number of times we switched to this ipl from a different ipl
-system.cpu1.kern.ipl_good_0                     11150     46.08%     46.08% # number of times we switched to this ipl from a different ipl
+system.cpu1.kern.ipl_count_31                   19455     59.62%    100.00% # number of times we switched to this ipl
+system.cpu1.kern.ipl_good                       24201                       # number of times we switched to this ipl from a different ipl
+system.cpu1.kern.ipl_good_0                     11153     46.08%     46.08% # number of times we switched to this ipl from a different ipl
 system.cpu1.kern.ipl_good_22                     1895      7.83%     53.92% # number of times we switched to this ipl from a different ipl
 system.cpu1.kern.ipl_good_30                      115      0.48%     54.39% # number of times we switched to this ipl from a different ipl
-system.cpu1.kern.ipl_good_31                    11035     45.61%    100.00% # number of times we switched to this ipl from a different ipl
-system.cpu1.kern.ipl_ticks                 3717733449                       # number of cycles we spent at this ipl
-system.cpu1.kern.ipl_ticks_0               3695802393     99.41%     99.41% # number of cycles we spent at this ipl
+system.cpu1.kern.ipl_good_31                    11038     45.61%    100.00% # number of times we switched to this ipl from a different ipl
+system.cpu1.kern.ipl_ticks                 3717892668                       # number of cycles we spent at this ipl
+system.cpu1.kern.ipl_ticks_0               3695802544     99.41%     99.41% # number of cycles we spent at this ipl
 system.cpu1.kern.ipl_ticks_22                  162970      0.00%     99.41% # number of cycles we spent at this ipl
-system.cpu1.kern.ipl_ticks_30                   29122      0.00%     99.42% # number of cycles we spent at this ipl
-system.cpu1.kern.ipl_ticks_31                21738964      0.58%    100.00% # number of cycles we spent at this ipl
-system.cpu1.kern.ipl_used                    0.741564                       # fraction of swpipl calls that actually changed the ipl
+system.cpu1.kern.ipl_ticks_30                   29122      0.00%     99.41% # number of cycles we spent at this ipl
+system.cpu1.kern.ipl_ticks_31                21898032      0.59%    100.00% # number of cycles we spent at this ipl
+system.cpu1.kern.ipl_used                    0.741611                       # fraction of swpipl calls that actually changed the ipl
 system.cpu1.kern.ipl_used_0                  0.998657                       # fraction of swpipl calls that actually changed the ipl
 system.cpu1.kern.ipl_used_22                        1                       # fraction of swpipl calls that actually changed the ipl
 system.cpu1.kern.ipl_used_30                        1                       # fraction of swpipl calls that actually changed the ipl
-system.cpu1.kern.ipl_used_31                 0.567294                       # fraction of swpipl calls that actually changed the ipl
+system.cpu1.kern.ipl_used_31                 0.567361                       # fraction of swpipl calls that actually changed the ipl
 system.cpu1.kern.mode_good_kernel                 602                      
 system.cpu1.kern.mode_good_user                   563                      
 system.cpu1.kern.mode_good_idle                    39                      
@@ -184,7 +184,7 @@
 system.cpu1.kern.mode_switch_good_kernel     0.595450                       # fraction of useful protection mode switches
 system.cpu1.kern.mode_switch_good_user              1                       # fraction of useful protection mode switches
 system.cpu1.kern.mode_switch_good_idle       0.019071                       # fraction of useful protection mode switches
-system.cpu1.kern.mode_ticks_kernel            4713507      0.13%      0.13% # number of ticks spent at the given mode
+system.cpu1.kern.mode_ticks_kernel            4872726      0.13%      0.13% # number of ticks spent at the given mode
 system.cpu1.kern.mode_ticks_user              1950903      0.05%      0.18% # number of ticks spent at the given mode
 system.cpu1.kern.mode_ticks_idle           3710606044     99.82%    100.00% # number of ticks spent at the given mode
 system.cpu1.kern.swap_context                     469                       # number of times the context was actually changed
@@ -205,10 +205,10 @@
 system.cpu1.kern.syscall_74                        11      8.46%     96.15% # number of syscalls executed
 system.cpu1.kern.syscall_92                         2      1.54%     97.69% # number of syscalls executed
 system.cpu1.kern.syscall_132                        3      2.31%    100.00% # number of syscalls executed
-system.cpu1.not_idle_fraction                0.002402                       # Percentage of non-idle cycles
-system.cpu1.numCycles                         8930639                       # number of cpu cycles simulated
-system.cpu1.num_insts                         8929052                       # Number of instructions executed
-system.cpu1.num_refs                          2665347                       # Number of memory references
+system.cpu1.not_idle_fraction                0.002408                       # Percentage of non-idle cycles
+system.cpu1.numCycles                         8953858                       # number of cpu cycles simulated
+system.cpu1.num_insts                         8952271                       # Number of instructions executed
+system.cpu1.num_refs                          2670182                       # Number of memory references
 system.disk0.dma_read_bytes                      1024                       # Number of bytes transfered via DMA reads (not PRD).
 system.disk0.dma_read_full_pages                    0                       # Number of full page size DMA reads (not PRD).
 system.disk0.dma_read_txs                           1                       # Number of DMA read transactions (not PRD).
@@ -221,7 +221,7 @@
 system.disk2.dma_write_bytes                     8192                       # Number of bytes transfered via DMA writes.
 system.disk2.dma_write_full_pages                   1                       # Number of full page size DMA writes.
 system.disk2.dma_write_txs                          1                       # Number of DMA write transactions.
-system.tsunami.ethernet.coalescedRxDesc      no value                       # average number of RxDesc's coalesced into each post
+system.tsunami.ethernet.coalescedRxDesc  <err: div-0>                       # average number of RxDesc's coalesced into each post
 system.tsunami.ethernet.coalescedRxIdle  <err: div-0>                       # average number of RxIdle's coalesced into each post
 system.tsunami.ethernet.coalescedRxOk    <err: div-0>                       # average number of RxOk's coalesced into each post
 system.tsunami.ethernet.coalescedRxOrn   <err: div-0>                       # average number of RxOrn's coalesced into each post
diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/stderr b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/stderr
index 9bd19d2..9a63019 100644
--- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/stderr
+++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/stderr
@@ -1,8 +1,8 @@
 Warning: rounding error > tolerance
     0.002000 rounded to 0
-      0: system.tsunami.io.rtc: Real-time clock set to Sun Jan  1 00:00:00 2006
-Listening for console connection on port 3457
-0: system.remote_gdb.listener: listening for remote gdb #0 on port 7001
-0: system.remote_gdb.listener: listening for remote gdb #1 on port 7002
+      0: system.tsunami.io.rtc: Real-time clock set to Thu Jan  1 00:00:00 2009
+Listening for console connection on port 3456
+0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000
+0: system.remote_gdb.listener: listening for remote gdb #1 on port 7001
 warn: Entering event queue @ 0.  Starting simulation...
 warn: 195723: Trying to launch CPU number 1!
diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/stdout b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/stdout
index 8bfefbb..1cecd3a 100644
--- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/stdout
+++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/stdout
@@ -5,8 +5,8 @@
 All Rights Reserved
 
 
-M5 compiled Nov  5 2006 19:41:29
-M5 started Sun Nov  5 20:03:49 2006
-M5 executing on zizzer.eecs.umich.edu
-command line: build/ALPHA_FS/m5.opt -d build/ALPHA_FS/tests/opt/quick/10.linux-boot/alpha/linux/tsunami-simple-atomic-dual tests/run.py quick/10.linux-boot/alpha/linux/tsunami-simple-atomic-dual
-Exiting @ tick 3718155709 because m5_exit instruction encountered
+M5 compiled Jan 25 2007 15:05:30
+M5 started Thu Jan 25 15:06:16 2007
+M5 executing on zeep
+command line: /n/zeep/y/binkertn/build/rtc/build/ALPHA_FS/m5.opt -d /n/zeep/y/binkertn/build/rtc/build/ALPHA_FS/tests/opt/quick/10.linux-boot/alpha/linux/tsunami-simple-atomic-dual tests/run.py quick/10.linux-boot/alpha/linux/tsunami-simple-atomic-dual
+Exiting @ tick 3718314928 because m5_exit instruction encountered
diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/config.ini b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/config.ini
index f69482d..fbc68db 100644
--- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/config.ini
+++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/config.ini
@@ -7,9 +7,6 @@
 output_file=cout
 progress_interval=0
 
-[debug]
-break_cycles=
-
 [exetrace]
 intel_format=false
 legion_lockstep=false
@@ -89,6 +86,7 @@
 max_insts_any_thread=0
 max_loads_all_threads=0
 max_loads_any_thread=0
+phase=0
 profile=0
 progress_interval=0
 simulate_stalls=false
@@ -173,8 +171,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=true
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.membus.default
 
 [system.physmem]
@@ -182,6 +185,7 @@
 file=
 latency=1
 range=0:134217727
+zero=false
 port=system.membus.port[1]
 
 [system.sim_console]
@@ -314,8 +318,13 @@
 pio_size=393216
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[9]
 
 [system.tsunami.fake_ata0]
@@ -325,8 +334,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[20]
 
 [system.tsunami.fake_ata1]
@@ -336,8 +350,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[21]
 
 [system.tsunami.fake_pnp_addr]
@@ -347,8 +366,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[10]
 
 [system.tsunami.fake_pnp_read0]
@@ -358,8 +382,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[12]
 
 [system.tsunami.fake_pnp_read1]
@@ -369,8 +398,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[13]
 
 [system.tsunami.fake_pnp_read2]
@@ -380,8 +414,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[14]
 
 [system.tsunami.fake_pnp_read3]
@@ -391,8 +430,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[15]
 
 [system.tsunami.fake_pnp_read4]
@@ -402,8 +446,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[16]
 
 [system.tsunami.fake_pnp_read5]
@@ -413,8 +462,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[17]
 
 [system.tsunami.fake_pnp_read6]
@@ -424,8 +478,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[18]
 
 [system.tsunami.fake_pnp_read7]
@@ -435,8 +494,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[19]
 
 [system.tsunami.fake_pnp_write]
@@ -446,19 +510,29 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[11]
 
 [system.tsunami.fake_ppc]
 type=IsaFake
-pio_addr=8804615848892
+pio_addr=8804615848891
 pio_latency=2
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[8]
 
 [system.tsunami.fake_sm_chip]
@@ -468,8 +542,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[3]
 
 [system.tsunami.fake_uart1]
@@ -479,8 +558,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[4]
 
 [system.tsunami.fake_uart2]
@@ -490,8 +574,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[5]
 
 [system.tsunami.fake_uart3]
@@ -501,8 +590,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[6]
 
 [system.tsunami.fake_uart4]
@@ -512,8 +606,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[7]
 
 [system.tsunami.fb]
@@ -583,8 +682,9 @@
 pio_latency=2
 platform=system.tsunami
 system=system
-time=1136073600
+time=2009 1 1 0 0 0 3 1
 tsunami=system.tsunami
+year_is_bcd=false
 pio=system.iobus.port[23]
 
 [system.tsunami.pchip]
diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/config.out b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/config.out
index 1254e9f..673f2c8 100644
--- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/config.out
+++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/config.out
@@ -10,6 +10,7 @@
 file=
 range=[0,134217727]
 latency=1
+zero=false
 
 [system]
 type=LinuxAlphaSystem
@@ -57,6 +58,7 @@
 do_checkpoint_insts=true
 do_statistics_insts=true
 clock=1
+phase=0
 defer_registration=false
 width=1
 function_trace=false
@@ -78,7 +80,12 @@
 pio_latency=0
 pio_size=8
 ret_bad_addr=true
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -141,7 +148,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -151,7 +163,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -161,7 +178,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -171,17 +193,27 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
 [system.tsunami.fake_ppc]
 type=IsaFake
-pio_addr=8804615848892
+pio_addr=8804615848891
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -200,7 +232,8 @@
 frequency=1953125
 platform=system.tsunami
 system=system
-time=1136073600
+time=2009 1 1 0 0 0 3 1
+year_is_bcd=false
 tsunami=system.tsunami
 
 []
@@ -239,7 +272,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -249,7 +287,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -267,7 +310,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -277,7 +325,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -287,7 +340,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -297,7 +355,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -307,7 +370,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -317,7 +385,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -327,7 +400,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -337,7 +415,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -347,7 +430,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -434,7 +522,12 @@
 pio_latency=2
 pio_size=393216
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -452,7 +545,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -462,7 +560,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -565,9 +668,6 @@
 legion_lockstep=false
 trace_system=client
 
-[debug]
-break_cycles=
-
 [statsreset]
 reset_cycle=0
 
diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/m5stats.txt b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/m5stats.txt
index 0c0307c..a10779a 100644
--- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/m5stats.txt
+++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/m5stats.txt
@@ -1,31 +1,31 @@
 
 ---------- Begin Simulation Statistics ----------
-host_inst_rate                                1254169                       # Simulator instruction rate (inst/s)
-host_mem_usage                                 199988                       # Number of bytes of host memory used
-host_seconds                                    49.27                       # Real time elapsed on the host
-host_tick_rate                               73765213                       # Simulator tick rate (ticks/s)
+host_inst_rate                                1452138                       # Simulator instruction rate (inst/s)
+host_mem_usage                                 239532                       # Number of bytes of host memory used
+host_seconds                                    42.57                       # Real time elapsed on the host
+host_tick_rate                               85380734                       # Simulator tick rate (ticks/s)
 sim_freq                                   2000000000                       # Frequency of simulated ticks
-sim_insts                                    61788439                       # Number of instructions simulated
-sim_seconds                                  1.817090                       # Number of seconds simulated
-sim_ticks                                  3634179176                       # Number of ticks simulated
+sim_insts                                    61811715                       # Number of instructions simulated
+sim_seconds                                  1.817169                       # Number of seconds simulated
+sim_ticks                                  3634338452                       # Number of ticks simulated
 system.cpu.dtb.accesses                       1304494                       # DTB accesses
 system.cpu.dtb.acv                                367                       # DTB access violations
-system.cpu.dtb.hits                          16552094                       # DTB hits
+system.cpu.dtb.hits                          16556949                       # DTB hits
 system.cpu.dtb.misses                           11425                       # DTB misses
 system.cpu.dtb.read_accesses                   900425                       # DTB read accesses
 system.cpu.dtb.read_acv                           210                       # DTB read access violations
-system.cpu.dtb.read_hits                     10038384                       # DTB read hits
+system.cpu.dtb.read_hits                     10041919                       # DTB read hits
 system.cpu.dtb.read_misses                      10280                       # DTB read misses
 system.cpu.dtb.write_accesses                  404069                       # DTB write accesses
 system.cpu.dtb.write_acv                          157                       # DTB write access violations
-system.cpu.dtb.write_hits                     6513710                       # DTB write hits
+system.cpu.dtb.write_hits                     6515030                       # DTB write hits
 system.cpu.dtb.write_misses                      1145                       # DTB write misses
-system.cpu.idle_fraction                     0.982997                       # Percentage of idle cycles
-system.cpu.itb.accesses                       5655311                       # ITB accesses
+system.cpu.idle_fraction                     0.982991                       # Percentage of idle cycles
+system.cpu.itb.accesses                       5655354                       # ITB accesses
 system.cpu.itb.acv                                184                       # ITB acv
-system.cpu.itb.hits                           5650321                       # ITB hits
+system.cpu.itb.hits                           5650364                       # ITB hits
 system.cpu.itb.misses                            4990                       # ITB misses
-system.cpu.kern.callpal                        193842                       # number of callpals executed
+system.cpu.kern.callpal                        193847                       # number of callpals executed
 system.cpu.kern.callpal_cserve                      1      0.00%      0.00% # number of callpals executed
 system.cpu.kern.callpal_wrmces                      1      0.00%      0.00% # number of callpals executed
 system.cpu.kern.callpal_wrfen                       1      0.00%      0.00% # number of callpals executed
@@ -33,7 +33,7 @@
 system.cpu.kern.callpal_swpctx                   4203      2.17%      2.17% # number of callpals executed
 system.cpu.kern.callpal_tbi                        54      0.03%      2.20% # number of callpals executed
 system.cpu.kern.callpal_wrent                       7      0.00%      2.20% # number of callpals executed
-system.cpu.kern.callpal_swpipl                 176751     91.18%     93.38% # number of callpals executed
+system.cpu.kern.callpal_swpipl                 176756     91.18%     93.38% # number of callpals executed
 system.cpu.kern.callpal_rdps                     6881      3.55%     96.93% # number of callpals executed
 system.cpu.kern.callpal_wrkgp                       1      0.00%     96.94% # number of callpals executed
 system.cpu.kern.callpal_wrusp                       7      0.00%     96.94% # number of callpals executed
@@ -43,41 +43,41 @@
 system.cpu.kern.callpal_callsys                   531      0.27%     99.91% # number of callpals executed
 system.cpu.kern.callpal_imb                       181      0.09%    100.00% # number of callpals executed
 system.cpu.kern.inst.arm                            0                       # number of arm instructions executed
-system.cpu.kern.inst.hwrei                     212908                       # number of hwrei instructions executed
-system.cpu.kern.inst.quiesce                     6207                       # number of quiesce instructions executed
-system.cpu.kern.ipl_count                      184061                       # number of times we switched to this ipl
-system.cpu.kern.ipl_count_0                     75348     40.94%     40.94% # number of times we switched to this ipl
+system.cpu.kern.inst.hwrei                     212913                       # number of hwrei instructions executed
+system.cpu.kern.inst.quiesce                     6275                       # number of quiesce instructions executed
+system.cpu.kern.ipl_count                      184066                       # number of times we switched to this ipl
+system.cpu.kern.ipl_count_0                     75351     40.94%     40.94% # number of times we switched to this ipl
 system.cpu.kern.ipl_count_21                      245      0.13%     41.07% # number of times we switched to this ipl
 system.cpu.kern.ipl_count_22                     1853      1.01%     42.08% # number of times we switched to this ipl
-system.cpu.kern.ipl_count_31                   106615     57.92%    100.00% # number of times we switched to this ipl
-system.cpu.kern.ipl_good                       150060                       # number of times we switched to this ipl from a different ipl
-system.cpu.kern.ipl_good_0                      73981     49.30%     49.30% # number of times we switched to this ipl from a different ipl
+system.cpu.kern.ipl_count_31                   106617     57.92%    100.00% # number of times we switched to this ipl
+system.cpu.kern.ipl_good                       150066                       # number of times we switched to this ipl from a different ipl
+system.cpu.kern.ipl_good_0                      73984     49.30%     49.30% # number of times we switched to this ipl from a different ipl
 system.cpu.kern.ipl_good_21                       245      0.16%     49.46% # number of times we switched to this ipl from a different ipl
 system.cpu.kern.ipl_good_22                      1853      1.23%     50.70% # number of times we switched to this ipl from a different ipl
-system.cpu.kern.ipl_good_31                     73981     49.30%    100.00% # number of times we switched to this ipl from a different ipl
-system.cpu.kern.ipl_ticks                  3634178761                       # number of cycles we spent at this ipl
-system.cpu.kern.ipl_ticks_0                3599646819     99.05%     99.05% # number of cycles we spent at this ipl
+system.cpu.kern.ipl_good_31                     73984     49.30%    100.00% # number of times we switched to this ipl from a different ipl
+system.cpu.kern.ipl_ticks                  3634338037                       # number of cycles we spent at this ipl
+system.cpu.kern.ipl_ticks_0                3599646965     99.05%     99.05% # number of cycles we spent at this ipl
 system.cpu.kern.ipl_ticks_21                    40474      0.00%     99.05% # number of cycles we spent at this ipl
-system.cpu.kern.ipl_ticks_22                   159358      0.00%     99.06% # number of cycles we spent at this ipl
-system.cpu.kern.ipl_ticks_31                 34332110      0.94%    100.00% # number of cycles we spent at this ipl
-system.cpu.kern.ipl_used                     0.815273                       # fraction of swpipl calls that actually changed the ipl
+system.cpu.kern.ipl_ticks_22                   159358      0.00%     99.05% # number of cycles we spent at this ipl
+system.cpu.kern.ipl_ticks_31                 34491240      0.95%    100.00% # number of cycles we spent at this ipl
+system.cpu.kern.ipl_used                     0.815284                       # fraction of swpipl calls that actually changed the ipl
 system.cpu.kern.ipl_used_0                   0.981858                       # fraction of swpipl calls that actually changed the ipl
 system.cpu.kern.ipl_used_21                         1                       # fraction of swpipl calls that actually changed the ipl
 system.cpu.kern.ipl_used_22                         1                       # fraction of swpipl calls that actually changed the ipl
-system.cpu.kern.ipl_used_31                  0.693908                       # fraction of swpipl calls that actually changed the ipl
-system.cpu.kern.mode_good_kernel                 1938                      
-system.cpu.kern.mode_good_user                   1758                      
+system.cpu.kern.ipl_used_31                  0.693923                       # fraction of swpipl calls that actually changed the ipl
+system.cpu.kern.mode_good_kernel                 1937                      
+system.cpu.kern.mode_good_user                   1757                      
 system.cpu.kern.mode_good_idle                    180                      
 system.cpu.kern.mode_switch_kernel               5978                       # number of protection mode switches
-system.cpu.kern.mode_switch_user                 1758                       # number of protection mode switches
+system.cpu.kern.mode_switch_user                 1757                       # number of protection mode switches
 system.cpu.kern.mode_switch_idle                 2102                       # number of protection mode switches
-system.cpu.kern.mode_switch_good             0.393983                       # fraction of useful protection mode switches
-system.cpu.kern.mode_switch_good_kernel      0.324189                       # fraction of useful protection mode switches
+system.cpu.kern.mode_switch_good             0.393819                       # fraction of useful protection mode switches
+system.cpu.kern.mode_switch_good_kernel      0.324021                       # fraction of useful protection mode switches
 system.cpu.kern.mode_switch_good_user               1                       # fraction of useful protection mode switches
 system.cpu.kern.mode_switch_good_idle        0.085633                       # fraction of useful protection mode switches
-system.cpu.kern.mode_ticks_kernel            54682435      1.50%      1.50% # number of ticks spent at the given mode
-system.cpu.kern.mode_ticks_user               3591244      0.10%      1.60% # number of ticks spent at the given mode
-system.cpu.kern.mode_ticks_idle            3575905080     98.40%    100.00% # number of ticks spent at the given mode
+system.cpu.kern.mode_ticks_kernel            54841721      1.51%      1.51% # number of ticks spent at the given mode
+system.cpu.kern.mode_ticks_user               3591234      0.10%      1.61% # number of ticks spent at the given mode
+system.cpu.kern.mode_ticks_idle            3575905080     98.39%    100.00% # number of ticks spent at the given mode
 system.cpu.kern.swap_context                     4204                       # number of times the context was actually changed
 system.cpu.kern.syscall                           329                       # number of syscalls executed
 system.cpu.kern.syscall_2                           8      2.43%      2.43% # number of syscalls executed
@@ -110,10 +110,10 @@
 system.cpu.kern.syscall_132                         4      1.22%     98.78% # number of syscalls executed
 system.cpu.kern.syscall_144                         2      0.61%     99.39% # number of syscalls executed
 system.cpu.kern.syscall_147                         2      0.61%    100.00% # number of syscalls executed
-system.cpu.not_idle_fraction                 0.017003                       # Percentage of non-idle cycles
-system.cpu.numCycles                         61793613                       # number of cpu cycles simulated
-system.cpu.num_insts                         61788439                       # Number of instructions executed
-system.cpu.num_refs                          16800623                       # Number of memory references
+system.cpu.not_idle_fraction                 0.017009                       # Percentage of non-idle cycles
+system.cpu.numCycles                         61816889                       # number of cpu cycles simulated
+system.cpu.num_insts                         61811715                       # Number of instructions executed
+system.cpu.num_refs                          16805478                       # Number of memory references
 system.disk0.dma_read_bytes                      1024                       # Number of bytes transfered via DMA reads (not PRD).
 system.disk0.dma_read_full_pages                    0                       # Number of full page size DMA reads (not PRD).
 system.disk0.dma_read_txs                           1                       # Number of DMA read transactions (not PRD).
@@ -131,7 +131,7 @@
 system.tsunami.ethernet.coalescedRxOk    <err: div-0>                       # average number of RxOk's coalesced into each post
 system.tsunami.ethernet.coalescedRxOrn   <err: div-0>                       # average number of RxOrn's coalesced into each post
 system.tsunami.ethernet.coalescedSwi     <err: div-0>                       # average number of Swi's coalesced into each post
-system.tsunami.ethernet.coalescedTotal   <err: div-0>                       # average number of interrupts coalesced into each post
+system.tsunami.ethernet.coalescedTotal       no value                       # average number of interrupts coalesced into each post
 system.tsunami.ethernet.coalescedTxDesc  <err: div-0>                       # average number of TxDesc's coalesced into each post
 system.tsunami.ethernet.coalescedTxIdle  <err: div-0>                       # average number of TxIdle's coalesced into each post
 system.tsunami.ethernet.coalescedTxOk    <err: div-0>                       # average number of TxOk's coalesced into each post
diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/stderr b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/stderr
index a8bcb04..69304a6 100644
--- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/stderr
+++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/stderr
@@ -1,6 +1,6 @@
 Warning: rounding error > tolerance
     0.002000 rounded to 0
-      0: system.tsunami.io.rtc: Real-time clock set to Sun Jan  1 00:00:00 2006
+      0: system.tsunami.io.rtc: Real-time clock set to Thu Jan  1 00:00:00 2009
 Listening for console connection on port 3456
 0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000
 warn: Entering event queue @ 0.  Starting simulation...
diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/stdout b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/stdout
index 3929194..6314530 100644
--- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/stdout
+++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/stdout
@@ -5,8 +5,8 @@
 All Rights Reserved
 
 
-M5 compiled Nov  5 2006 19:41:29
-M5 started Sun Nov  5 20:03:49 2006
-M5 executing on zizzer.eecs.umich.edu
-command line: build/ALPHA_FS/m5.opt -d build/ALPHA_FS/tests/opt/quick/10.linux-boot/alpha/linux/tsunami-simple-atomic tests/run.py quick/10.linux-boot/alpha/linux/tsunami-simple-atomic
-Exiting @ tick 3634179176 because m5_exit instruction encountered
+M5 compiled Jan 25 2007 15:05:30
+M5 started Thu Jan 25 15:05:33 2007
+M5 executing on zeep
+command line: /n/zeep/y/binkertn/build/rtc/build/ALPHA_FS/m5.opt -d /n/zeep/y/binkertn/build/rtc/build/ALPHA_FS/tests/opt/quick/10.linux-boot/alpha/linux/tsunami-simple-atomic tests/run.py quick/10.linux-boot/alpha/linux/tsunami-simple-atomic
+Exiting @ tick 3634338452 because m5_exit instruction encountered
diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/config.ini b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/config.ini
index 5c151b2..5a82471 100644
--- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/config.ini
+++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/config.ini
@@ -7,9 +7,6 @@
 output_file=cout
 progress_interval=0
 
-[debug]
-break_cycles=
-
 [exetrace]
 intel_format=false
 legion_lockstep=false
@@ -89,6 +86,7 @@
 max_insts_any_thread=0
 max_loads_all_threads=0
 max_loads_any_thread=0
+phase=0
 profile=0
 progress_interval=0
 system=system
@@ -120,6 +118,7 @@
 max_insts_any_thread=0
 max_loads_all_threads=0
 max_loads_any_thread=0
+phase=0
 profile=0
 progress_interval=0
 system=system
@@ -202,8 +201,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=true
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.membus.default
 
 [system.physmem]
@@ -211,6 +215,7 @@
 file=
 latency=1
 range=0:134217727
+zero=false
 port=system.membus.port[1]
 
 [system.sim_console]
@@ -343,8 +348,13 @@
 pio_size=393216
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[9]
 
 [system.tsunami.fake_ata0]
@@ -354,8 +364,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[20]
 
 [system.tsunami.fake_ata1]
@@ -365,8 +380,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[21]
 
 [system.tsunami.fake_pnp_addr]
@@ -376,8 +396,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[10]
 
 [system.tsunami.fake_pnp_read0]
@@ -387,8 +412,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[12]
 
 [system.tsunami.fake_pnp_read1]
@@ -398,8 +428,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[13]
 
 [system.tsunami.fake_pnp_read2]
@@ -409,8 +444,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[14]
 
 [system.tsunami.fake_pnp_read3]
@@ -420,8 +460,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[15]
 
 [system.tsunami.fake_pnp_read4]
@@ -431,8 +476,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[16]
 
 [system.tsunami.fake_pnp_read5]
@@ -442,8 +492,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[17]
 
 [system.tsunami.fake_pnp_read6]
@@ -453,8 +508,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[18]
 
 [system.tsunami.fake_pnp_read7]
@@ -464,8 +524,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[19]
 
 [system.tsunami.fake_pnp_write]
@@ -475,19 +540,29 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[11]
 
 [system.tsunami.fake_ppc]
 type=IsaFake
-pio_addr=8804615848892
+pio_addr=8804615848891
 pio_latency=2
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[8]
 
 [system.tsunami.fake_sm_chip]
@@ -497,8 +572,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[3]
 
 [system.tsunami.fake_uart1]
@@ -508,8 +588,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[4]
 
 [system.tsunami.fake_uart2]
@@ -519,8 +604,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[5]
 
 [system.tsunami.fake_uart3]
@@ -530,8 +620,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[6]
 
 [system.tsunami.fake_uart4]
@@ -541,8 +636,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[7]
 
 [system.tsunami.fb]
@@ -612,8 +712,9 @@
 pio_latency=2
 platform=system.tsunami
 system=system
-time=1136073600
+time=2009 1 1 0 0 0 3 1
 tsunami=system.tsunami
+year_is_bcd=false
 pio=system.iobus.port[23]
 
 [system.tsunami.pchip]
diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/config.out b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/config.out
index 3e9c8d8..c1e5baa 100644
--- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/config.out
+++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/config.out
@@ -10,6 +10,7 @@
 file=
 range=[0,134217727]
 latency=1
+zero=false
 
 [system]
 type=LinuxAlphaSystem
@@ -57,6 +58,7 @@
 do_checkpoint_insts=true
 do_statistics_insts=true
 clock=1
+phase=0
 defer_registration=false
 // width not specified
 function_trace=false
@@ -78,7 +80,12 @@
 pio_latency=0
 pio_size=8
 ret_bad_addr=true
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -149,6 +156,7 @@
 do_checkpoint_insts=true
 do_statistics_insts=true
 clock=1
+phase=0
 defer_registration=false
 // width not specified
 function_trace=false
@@ -171,7 +179,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -181,7 +194,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -191,7 +209,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -201,17 +224,27 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
 [system.tsunami.fake_ppc]
 type=IsaFake
-pio_addr=8804615848892
+pio_addr=8804615848891
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -230,7 +263,8 @@
 frequency=1953125
 platform=system.tsunami
 system=system
-time=1136073600
+time=2009 1 1 0 0 0 3 1
+year_is_bcd=false
 tsunami=system.tsunami
 
 []
@@ -269,7 +303,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -279,7 +318,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -297,7 +341,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -307,7 +356,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -317,7 +371,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -327,7 +386,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -337,7 +401,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -347,7 +416,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -357,7 +431,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -367,7 +446,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -377,7 +461,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -464,7 +553,12 @@
 pio_latency=2
 pio_size=393216
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -482,7 +576,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -492,7 +591,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -595,9 +699,6 @@
 legion_lockstep=false
 trace_system=client
 
-[debug]
-break_cycles=
-
 [statsreset]
 reset_cycle=0
 
diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/m5stats.txt b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/m5stats.txt
index ce69639..d6bc028 100644
--- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/m5stats.txt
+++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/m5stats.txt
@@ -1,26 +1,26 @@
 
 ---------- Begin Simulation Statistics ----------
-host_inst_rate                                 321604                       # Simulator instruction rate (inst/s)
-host_mem_usage                                 199700                       # Number of bytes of host memory used
-host_seconds                                   208.16                       # Real time elapsed on the host
-host_tick_rate                               19071805                       # Simulator tick rate (ticks/s)
+host_inst_rate                                 359240                       # Simulator instruction rate (inst/s)
+host_mem_usage                                 240844                       # Number of bytes of host memory used
+host_seconds                                   186.42                       # Real time elapsed on the host
+host_tick_rate                               21297758                       # Simulator tick rate (ticks/s)
 sim_freq                                   2000000000                       # Frequency of simulated ticks
-sim_insts                                    66945470                       # Number of instructions simulated
-sim_seconds                                  1.985009                       # Number of seconds simulated
-sim_ticks                                  3970017178                       # Number of ticks simulated
+sim_insts                                    66968427                       # Number of instructions simulated
+sim_seconds                                  1.985132                       # Number of seconds simulated
+sim_ticks                                  3970264174                       # Number of ticks simulated
 system.cpu0.dtb.accesses                      1003481                       # DTB accesses
 system.cpu0.dtb.acv                               289                       # DTB access violations
-system.cpu0.dtb.hits                         13332675                       # DTB hits
+system.cpu0.dtb.hits                         13332650                       # DTB hits
 system.cpu0.dtb.misses                           8437                       # DTB misses
 system.cpu0.dtb.read_accesses                  695694                       # DTB read accesses
 system.cpu0.dtb.read_acv                          174                       # DTB read access violations
-system.cpu0.dtb.read_hits                     8285791                       # DTB read hits
+system.cpu0.dtb.read_hits                     8285777                       # DTB read hits
 system.cpu0.dtb.read_misses                      7640                       # DTB read misses
 system.cpu0.dtb.write_accesses                 307787                       # DTB write accesses
 system.cpu0.dtb.write_acv                         115                       # DTB write access violations
-system.cpu0.dtb.write_hits                    5046884                       # DTB write hits
+system.cpu0.dtb.write_hits                    5046873                       # DTB write hits
 system.cpu0.dtb.write_misses                      797                       # DTB write misses
-system.cpu0.idle_fraction                    0.928150                       # Percentage of idle cycles
+system.cpu0.idle_fraction                    0.928155                       # Percentage of idle cycles
 system.cpu0.itb.accesses                      4220935                       # ITB accesses
 system.cpu0.itb.acv                               143                       # ITB acv
 system.cpu0.itb.hits                          4217111                       # ITB hits
@@ -58,12 +58,12 @@
 system.cpu0.kern.ipl_good_22                     2005      1.82%     50.97% # number of times we switched to this ipl from a different ipl
 system.cpu0.kern.ipl_good_30                      483      0.44%     51.41% # number of times we switched to this ipl from a different ipl
 system.cpu0.kern.ipl_good_31                    53596     48.59%    100.00% # number of times we switched to this ipl from a different ipl
-system.cpu0.kern.ipl_ticks                 3970015394                       # number of cycles we spent at this ipl
-system.cpu0.kern.ipl_ticks_0               3836129328     96.63%     96.63% # number of cycles we spent at this ipl
+system.cpu0.kern.ipl_ticks                 3970262390                       # number of cycles we spent at this ipl
+system.cpu0.kern.ipl_ticks_0               3836377682     96.63%     96.63% # number of cycles we spent at this ipl
 system.cpu0.kern.ipl_ticks_21                  133000      0.00%     96.63% # number of cycles we spent at this ipl
 system.cpu0.kern.ipl_ticks_22                 1870128      0.05%     96.68% # number of cycles we spent at this ipl
 system.cpu0.kern.ipl_ticks_30                 1206048      0.03%     96.71% # number of cycles we spent at this ipl
-system.cpu0.kern.ipl_ticks_31               130676890      3.29%    100.00% # number of cycles we spent at this ipl
+system.cpu0.kern.ipl_ticks_31               130675532      3.29%    100.00% # number of cycles we spent at this ipl
 system.cpu0.kern.ipl_used                    0.807801                       # fraction of swpipl calls that actually changed the ipl
 system.cpu0.kern.ipl_used_0                  0.992330                       # fraction of swpipl calls that actually changed the ipl
 system.cpu0.kern.ipl_used_21                        1                       # fraction of swpipl calls that actually changed the ipl
@@ -80,8 +80,8 @@
 system.cpu0.kern.mode_switch_good_kernel     0.184292                       # fraction of useful protection mode switches
 system.cpu0.kern.mode_switch_good_user              1                       # fraction of useful protection mode switches
 system.cpu0.kern.mode_switch_good_idle   <err: div-0>                       # fraction of useful protection mode switches
-system.cpu0.kern.mode_ticks_kernel         3956260432     99.65%     99.65% # number of ticks spent at the given mode
-system.cpu0.kern.mode_ticks_user             13754954      0.35%    100.00% # number of ticks spent at the given mode
+system.cpu0.kern.mode_ticks_kernel         3956507378     99.65%     99.65% # number of ticks spent at the given mode
+system.cpu0.kern.mode_ticks_user             13755004      0.35%    100.00% # number of ticks spent at the given mode
 system.cpu0.kern.mode_ticks_idle                    0      0.00%    100.00% # number of ticks spent at the given mode
 system.cpu0.kern.swap_context                    2908                       # number of times the context was actually changed
 system.cpu0.kern.syscall                          227                       # number of syscalls executed
@@ -115,28 +115,28 @@
 system.cpu0.kern.syscall_132                        2      0.88%     98.68% # number of syscalls executed
 system.cpu0.kern.syscall_144                        1      0.44%     99.12% # number of syscalls executed
 system.cpu0.kern.syscall_147                        2      0.88%    100.00% # number of syscalls executed
-system.cpu0.not_idle_fraction                0.071850                       # Percentage of non-idle cycles
-system.cpu0.numCycles                      3970017178                       # number of cpu cycles simulated
-system.cpu0.num_insts                        52312134                       # Number of instructions executed
-system.cpu0.num_refs                         13564902                       # Number of memory references
+system.cpu0.not_idle_fraction                0.071845                       # Percentage of non-idle cycles
+system.cpu0.numCycles                      3970264174                       # number of cpu cycles simulated
+system.cpu0.num_insts                        52311968                       # Number of instructions executed
+system.cpu0.num_refs                         13564877                       # Number of memory references
 system.cpu1.dtb.accesses                       302962                       # DTB accesses
 system.cpu1.dtb.acv                                84                       # DTB access violations
-system.cpu1.dtb.hits                          4635665                       # DTB hits
+system.cpu1.dtb.hits                          4640482                       # DTB hits
 system.cpu1.dtb.misses                           3107                       # DTB misses
 system.cpu1.dtb.read_accesses                  205912                       # DTB read accesses
 system.cpu1.dtb.read_acv                           36                       # DTB read access violations
-system.cpu1.dtb.read_hits                     2664909                       # DTB read hits
+system.cpu1.dtb.read_hits                     2668410                       # DTB read hits
 system.cpu1.dtb.read_misses                      2747                       # DTB read misses
 system.cpu1.dtb.write_accesses                  97050                       # DTB write accesses
 system.cpu1.dtb.write_acv                          48                       # DTB write access violations
-system.cpu1.dtb.write_hits                    1970756                       # DTB write hits
+system.cpu1.dtb.write_hits                    1972072                       # DTB write hits
 system.cpu1.dtb.write_misses                      360                       # DTB write misses
-system.cpu1.idle_fraction                    0.974941                       # Percentage of idle cycles
-system.cpu1.itb.accesses                      1965693                       # ITB accesses
+system.cpu1.idle_fraction                    0.974914                       # Percentage of idle cycles
+system.cpu1.itb.accesses                      1965758                       # ITB accesses
 system.cpu1.itb.acv                                41                       # ITB acv
-system.cpu1.itb.hits                          1964446                       # ITB hits
+system.cpu1.itb.hits                          1964511                       # ITB hits
 system.cpu1.itb.misses                           1247                       # ITB misses
-system.cpu1.kern.callpal                        80664                       # number of callpals executed
+system.cpu1.kern.callpal                        80671                       # number of callpals executed
 system.cpu1.kern.callpal_cserve                     1      0.00%      0.00% # number of callpals executed
 system.cpu1.kern.callpal_wripir                   483      0.60%      0.60% # number of callpals executed
 system.cpu1.kern.callpal_wrmces                     1      0.00%      0.60% # number of callpals executed
@@ -144,7 +144,7 @@
 system.cpu1.kern.callpal_swpctx                  2277      2.82%      3.43% # number of callpals executed
 system.cpu1.kern.callpal_tbi                       10      0.01%      3.44% # number of callpals executed
 system.cpu1.kern.callpal_wrent                      7      0.01%      3.45% # number of callpals executed
-system.cpu1.kern.callpal_swpipl                 71260     88.34%     91.79% # number of callpals executed
+system.cpu1.kern.callpal_swpipl                 71267     88.34%     91.79% # number of callpals executed
 system.cpu1.kern.callpal_rdps                    2378      2.95%     94.74% # number of callpals executed
 system.cpu1.kern.callpal_wrkgp                      1      0.00%     94.74% # number of callpals executed
 system.cpu1.kern.callpal_wrusp                      3      0.00%     94.74% # number of callpals executed
@@ -155,41 +155,41 @@
 system.cpu1.kern.callpal_imb                       31      0.04%    100.00% # number of callpals executed
 system.cpu1.kern.callpal_rdunique                   1      0.00%    100.00% # number of callpals executed
 system.cpu1.kern.inst.arm                           0                       # number of arm instructions executed
-system.cpu1.kern.inst.hwrei                     87713                       # number of hwrei instructions executed
-system.cpu1.kern.inst.quiesce                    2740                       # number of quiesce instructions executed
-system.cpu1.kern.ipl_count                      77873                       # number of times we switched to this ipl
-system.cpu1.kern.ipl_count_0                    30259     38.86%     38.86% # number of times we switched to this ipl
+system.cpu1.kern.inst.hwrei                     87720                       # number of hwrei instructions executed
+system.cpu1.kern.inst.quiesce                    2808                       # number of quiesce instructions executed
+system.cpu1.kern.ipl_count                      77880                       # number of times we switched to this ipl
+system.cpu1.kern.ipl_count_0                    30262     38.86%     38.86% # number of times we switched to this ipl
 system.cpu1.kern.ipl_count_22                    1997      2.56%     41.42% # number of times we switched to this ipl
 system.cpu1.kern.ipl_count_30                     571      0.73%     42.15% # number of times we switched to this ipl
-system.cpu1.kern.ipl_count_31                   45046     57.85%    100.00% # number of times we switched to this ipl
-system.cpu1.kern.ipl_good                       60597                       # number of times we switched to this ipl from a different ipl
-system.cpu1.kern.ipl_good_0                     29300     48.35%     48.35% # number of times we switched to this ipl from a different ipl
+system.cpu1.kern.ipl_count_31                   45050     57.85%    100.00% # number of times we switched to this ipl
+system.cpu1.kern.ipl_good                       60603                       # number of times we switched to this ipl from a different ipl
+system.cpu1.kern.ipl_good_0                     29303     48.35%     48.35% # number of times we switched to this ipl from a different ipl
 system.cpu1.kern.ipl_good_22                     1997      3.30%     51.65% # number of times we switched to this ipl from a different ipl
 system.cpu1.kern.ipl_good_30                      571      0.94%     52.59% # number of times we switched to this ipl from a different ipl
-system.cpu1.kern.ipl_good_31                    28729     47.41%    100.00% # number of times we switched to this ipl from a different ipl
-system.cpu1.kern.ipl_ticks                 3968771896                       # number of cycles we spent at this ipl
-system.cpu1.kern.ipl_ticks_0               3847181696     96.94%     96.94% # number of cycles we spent at this ipl
-system.cpu1.kern.ipl_ticks_22                 1867354      0.05%     96.98% # number of cycles we spent at this ipl
-system.cpu1.kern.ipl_ticks_30                 1457952      0.04%     97.02% # number of cycles we spent at this ipl
-system.cpu1.kern.ipl_ticks_31               118264894      2.98%    100.00% # number of cycles we spent at this ipl
-system.cpu1.kern.ipl_used                    0.778152                       # fraction of swpipl calls that actually changed the ipl
-system.cpu1.kern.ipl_used_0                  0.968307                       # fraction of swpipl calls that actually changed the ipl
+system.cpu1.kern.ipl_good_31                    28732     47.41%    100.00% # number of times we switched to this ipl from a different ipl
+system.cpu1.kern.ipl_ticks                 3968772136                       # number of cycles we spent at this ipl
+system.cpu1.kern.ipl_ticks_0               3846937158     96.93%     96.93% # number of cycles we spent at this ipl
+system.cpu1.kern.ipl_ticks_22                 1867822      0.05%     96.98% # number of cycles we spent at this ipl
+system.cpu1.kern.ipl_ticks_30                 1457952      0.04%     97.01% # number of cycles we spent at this ipl
+system.cpu1.kern.ipl_ticks_31               118509204      2.99%    100.00% # number of cycles we spent at this ipl
+system.cpu1.kern.ipl_used                    0.778159                       # fraction of swpipl calls that actually changed the ipl
+system.cpu1.kern.ipl_used_0                  0.968310                       # fraction of swpipl calls that actually changed the ipl
 system.cpu1.kern.ipl_used_22                        1                       # fraction of swpipl calls that actually changed the ipl
 system.cpu1.kern.ipl_used_30                        1                       # fraction of swpipl calls that actually changed the ipl
-system.cpu1.kern.ipl_used_31                 0.637770                       # fraction of swpipl calls that actually changed the ipl
-system.cpu1.kern.mode_good_kernel                1013                      
-system.cpu1.kern.mode_good_user                   518                      
+system.cpu1.kern.ipl_used_31                 0.637780                       # fraction of swpipl calls that actually changed the ipl
+system.cpu1.kern.mode_good_kernel                1014                      
+system.cpu1.kern.mode_good_user                   519                      
 system.cpu1.kern.mode_good_idle                   495                      
 system.cpu1.kern.mode_switch_kernel              2345                       # number of protection mode switches
-system.cpu1.kern.mode_switch_user                 518                       # number of protection mode switches
+system.cpu1.kern.mode_switch_user                 519                       # number of protection mode switches
 system.cpu1.kern.mode_switch_idle                3028                       # number of protection mode switches
-system.cpu1.kern.mode_switch_good            0.343914                       # fraction of useful protection mode switches
-system.cpu1.kern.mode_switch_good_kernel     0.431983                       # fraction of useful protection mode switches
+system.cpu1.kern.mode_switch_good            0.344196                       # fraction of useful protection mode switches
+system.cpu1.kern.mode_switch_good_kernel     0.432409                       # fraction of useful protection mode switches
 system.cpu1.kern.mode_switch_good_user              1                       # fraction of useful protection mode switches
 system.cpu1.kern.mode_switch_good_idle       0.163474                       # fraction of useful protection mode switches
-system.cpu1.kern.mode_ticks_kernel           63013938      1.59%      1.59% # number of ticks spent at the given mode
-system.cpu1.kern.mode_ticks_user              5102326      0.13%      1.72% # number of ticks spent at the given mode
-system.cpu1.kern.mode_ticks_idle           3899442912     98.28%    100.00% # number of ticks spent at the given mode
+system.cpu1.kern.mode_ticks_kernel           63257834      1.59%      1.59% # number of ticks spent at the given mode
+system.cpu1.kern.mode_ticks_user              5106070      0.13%      1.72% # number of ticks spent at the given mode
+system.cpu1.kern.mode_ticks_idle           3899443084     98.28%    100.00% # number of ticks spent at the given mode
 system.cpu1.kern.swap_context                    2278                       # number of times the context was actually changed
 system.cpu1.kern.syscall                          102                       # number of syscalls executed
 system.cpu1.kern.syscall_2                          2      1.96%      1.96% # number of syscalls executed
@@ -213,10 +213,10 @@
 system.cpu1.kern.syscall_92                         2      1.96%     97.06% # number of syscalls executed
 system.cpu1.kern.syscall_132                        2      1.96%     99.02% # number of syscalls executed
 system.cpu1.kern.syscall_144                        1      0.98%    100.00% # number of syscalls executed
-system.cpu1.not_idle_fraction                0.025059                       # Percentage of non-idle cycles
-system.cpu1.numCycles                      3968772136                       # number of cpu cycles simulated
-system.cpu1.num_insts                        14633336                       # Number of instructions executed
-system.cpu1.num_refs                          4665250                       # Number of memory references
+system.cpu1.not_idle_fraction                0.025086                       # Percentage of non-idle cycles
+system.cpu1.numCycles                      3968772376                       # number of cpu cycles simulated
+system.cpu1.num_insts                        14656459                       # Number of instructions executed
+system.cpu1.num_refs                          4670067                       # Number of memory references
 system.disk0.dma_read_bytes                      1024                       # Number of bytes transfered via DMA reads (not PRD).
 system.disk0.dma_read_full_pages                    0                       # Number of full page size DMA reads (not PRD).
 system.disk0.dma_read_txs                           1                       # Number of DMA read transactions (not PRD).
@@ -234,7 +234,7 @@
 system.tsunami.ethernet.coalescedRxOk    <err: div-0>                       # average number of RxOk's coalesced into each post
 system.tsunami.ethernet.coalescedRxOrn   <err: div-0>                       # average number of RxOrn's coalesced into each post
 system.tsunami.ethernet.coalescedSwi     <err: div-0>                       # average number of Swi's coalesced into each post
-system.tsunami.ethernet.coalescedTotal   <err: div-0>                       # average number of interrupts coalesced into each post
+system.tsunami.ethernet.coalescedTotal       no value                       # average number of interrupts coalesced into each post
 system.tsunami.ethernet.coalescedTxDesc  <err: div-0>                       # average number of TxDesc's coalesced into each post
 system.tsunami.ethernet.coalescedTxIdle  <err: div-0>                       # average number of TxIdle's coalesced into each post
 system.tsunami.ethernet.coalescedTxOk    <err: div-0>                       # average number of TxOk's coalesced into each post
diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/stderr b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/stderr
index c211114..5b02d9b 100644
--- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/stderr
+++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/stderr
@@ -1,8 +1,8 @@
 Warning: rounding error > tolerance
     0.002000 rounded to 0
-      0: system.tsunami.io.rtc: Real-time clock set to Sun Jan  1 00:00:00 2006
-Listening for console connection on port 3457
-0: system.remote_gdb.listener: listening for remote gdb #0 on port 7001
-0: system.remote_gdb.listener: listening for remote gdb #1 on port 7002
+      0: system.tsunami.io.rtc: Real-time clock set to Thu Jan  1 00:00:00 2009
+Listening for console connection on port 3456
+0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000
+0: system.remote_gdb.listener: listening for remote gdb #1 on port 7001
 warn: Entering event queue @ 0.  Starting simulation...
 warn: 1082476: Trying to launch CPU number 1!
diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/stdout b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/stdout
index c97d4fc..9c25032 100644
--- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/stdout
+++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/stdout
@@ -5,8 +5,8 @@
 All Rights Reserved
 
 
-M5 compiled Nov  5 2006 19:41:29
-M5 started Sun Nov  5 20:04:42 2006
-M5 executing on zizzer.eecs.umich.edu
-command line: build/ALPHA_FS/m5.opt -d build/ALPHA_FS/tests/opt/quick/10.linux-boot/alpha/linux/tsunami-simple-timing-dual tests/run.py quick/10.linux-boot/alpha/linux/tsunami-simple-timing-dual
-Exiting @ tick 3970017178 because m5_exit instruction encountered
+M5 compiled Jan 25 2007 15:05:30
+M5 started Thu Jan 25 15:09:33 2007
+M5 executing on zeep
+command line: /n/zeep/y/binkertn/build/rtc/build/ALPHA_FS/m5.opt -d /n/zeep/y/binkertn/build/rtc/build/ALPHA_FS/tests/opt/quick/10.linux-boot/alpha/linux/tsunami-simple-timing-dual tests/run.py quick/10.linux-boot/alpha/linux/tsunami-simple-timing-dual
+Exiting @ tick 3970264174 because m5_exit instruction encountered
diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/config.ini b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/config.ini
index b7bd833..104bbce 100644
--- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/config.ini
+++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/config.ini
@@ -7,9 +7,6 @@
 output_file=cout
 progress_interval=0
 
-[debug]
-break_cycles=
-
 [exetrace]
 intel_format=false
 legion_lockstep=false
@@ -89,6 +86,7 @@
 max_insts_any_thread=0
 max_loads_all_threads=0
 max_loads_any_thread=0
+phase=0
 profile=0
 progress_interval=0
 system=system
@@ -171,8 +169,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=true
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.membus.default
 
 [system.physmem]
@@ -180,6 +183,7 @@
 file=
 latency=1
 range=0:134217727
+zero=false
 port=system.membus.port[1]
 
 [system.sim_console]
@@ -312,8 +316,13 @@
 pio_size=393216
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[9]
 
 [system.tsunami.fake_ata0]
@@ -323,8 +332,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[20]
 
 [system.tsunami.fake_ata1]
@@ -334,8 +348,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[21]
 
 [system.tsunami.fake_pnp_addr]
@@ -345,8 +364,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[10]
 
 [system.tsunami.fake_pnp_read0]
@@ -356,8 +380,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[12]
 
 [system.tsunami.fake_pnp_read1]
@@ -367,8 +396,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[13]
 
 [system.tsunami.fake_pnp_read2]
@@ -378,8 +412,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[14]
 
 [system.tsunami.fake_pnp_read3]
@@ -389,8 +428,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[15]
 
 [system.tsunami.fake_pnp_read4]
@@ -400,8 +444,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[16]
 
 [system.tsunami.fake_pnp_read5]
@@ -411,8 +460,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[17]
 
 [system.tsunami.fake_pnp_read6]
@@ -422,8 +476,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[18]
 
 [system.tsunami.fake_pnp_read7]
@@ -433,8 +492,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[19]
 
 [system.tsunami.fake_pnp_write]
@@ -444,19 +508,29 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[11]
 
 [system.tsunami.fake_ppc]
 type=IsaFake
-pio_addr=8804615848892
+pio_addr=8804615848891
 pio_latency=2
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[8]
 
 [system.tsunami.fake_sm_chip]
@@ -466,8 +540,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[3]
 
 [system.tsunami.fake_uart1]
@@ -477,8 +556,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[4]
 
 [system.tsunami.fake_uart2]
@@ -488,8 +572,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[5]
 
 [system.tsunami.fake_uart3]
@@ -499,8 +588,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[6]
 
 [system.tsunami.fake_uart4]
@@ -510,8 +604,13 @@
 pio_size=8
 platform=system.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=system
+update_data=false
+warn_access=
 pio=system.iobus.port[7]
 
 [system.tsunami.fb]
@@ -581,8 +680,9 @@
 pio_latency=2
 platform=system.tsunami
 system=system
-time=1136073600
+time=2009 1 1 0 0 0 3 1
 tsunami=system.tsunami
+year_is_bcd=false
 pio=system.iobus.port[23]
 
 [system.tsunami.pchip]
diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/config.out b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/config.out
index 13bf1de..8791359 100644
--- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/config.out
+++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/config.out
@@ -10,6 +10,7 @@
 file=
 range=[0,134217727]
 latency=1
+zero=false
 
 [system]
 type=LinuxAlphaSystem
@@ -57,6 +58,7 @@
 do_checkpoint_insts=true
 do_statistics_insts=true
 clock=1
+phase=0
 defer_registration=false
 // width not specified
 function_trace=false
@@ -78,7 +80,12 @@
 pio_latency=0
 pio_size=8
 ret_bad_addr=true
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -141,7 +148,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -151,7 +163,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -161,7 +178,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -171,17 +193,27 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
 [system.tsunami.fake_ppc]
 type=IsaFake
-pio_addr=8804615848892
+pio_addr=8804615848891
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -200,7 +232,8 @@
 frequency=1953125
 platform=system.tsunami
 system=system
-time=1136073600
+time=2009 1 1 0 0 0 3 1
+year_is_bcd=false
 tsunami=system.tsunami
 
 []
@@ -239,7 +272,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -249,7 +287,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -267,7 +310,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -277,7 +325,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -287,7 +340,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -297,7 +355,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -307,7 +370,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -317,7 +385,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -327,7 +400,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -337,7 +415,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -347,7 +430,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -434,7 +522,12 @@
 pio_latency=2
 pio_size=393216
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -452,7 +545,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -462,7 +560,12 @@
 pio_latency=2
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=system.tsunami
 system=system
 
@@ -565,9 +668,6 @@
 legion_lockstep=false
 trace_system=client
 
-[debug]
-break_cycles=
-
 [statsreset]
 reset_cycle=0
 
diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/m5stats.txt b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/m5stats.txt
index 9e46f55..75746ea 100644
--- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/m5stats.txt
+++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/m5stats.txt
@@ -1,31 +1,31 @@
 
 ---------- Begin Simulation Statistics ----------
-host_inst_rate                                 328353                       # Simulator instruction rate (inst/s)
-host_mem_usage                                 199236                       # Number of bytes of host memory used
-host_seconds                                   188.42                       # Real time elapsed on the host
-host_tick_rate                               20564913                       # Simulator tick rate (ticks/s)
+host_inst_rate                                 469266                       # Simulator instruction rate (inst/s)
+host_mem_usage                                 238376                       # Number of bytes of host memory used
+host_seconds                                   131.89                       # Real time elapsed on the host
+host_tick_rate                               29380471                       # Simulator tick rate (ticks/s)
 sim_freq                                   2000000000                       # Frequency of simulated ticks
-sim_insts                                    61868161                       # Number of instructions simulated
-sim_seconds                                  1.937422                       # Number of seconds simulated
-sim_ticks                                  3874844018                       # Number of ticks simulated
+sim_insts                                    61893104                       # Number of instructions simulated
+sim_seconds                                  1.937550                       # Number of seconds simulated
+sim_ticks                                  3875100962                       # Number of ticks simulated
 system.cpu.dtb.accesses                       1304554                       # DTB accesses
 system.cpu.dtb.acv                                367                       # DTB access violations
-system.cpu.dtb.hits                          16566194                       # DTB hits
+system.cpu.dtb.hits                          16571487                       # DTB hits
 system.cpu.dtb.misses                           11447                       # DTB misses
 system.cpu.dtb.read_accesses                   900486                       # DTB read accesses
 system.cpu.dtb.read_acv                           210                       # DTB read access violations
-system.cpu.dtb.read_hits                     10048141                       # DTB read hits
+system.cpu.dtb.read_hits                     10051940                       # DTB read hits
 system.cpu.dtb.read_misses                      10303                       # DTB read misses
 system.cpu.dtb.write_accesses                  404068                       # DTB write accesses
 system.cpu.dtb.write_acv                          157                       # DTB write access violations
-system.cpu.dtb.write_hits                     6518053                       # DTB write hits
+system.cpu.dtb.write_hits                     6519547                       # DTB write hits
 system.cpu.dtb.write_misses                      1144                       # DTB write misses
-system.cpu.idle_fraction                     0.918945                       # Percentage of idle cycles
-system.cpu.itb.accesses                       5663974                       # ITB accesses
+system.cpu.idle_fraction                     0.918919                       # Percentage of idle cycles
+system.cpu.itb.accesses                       5664253                       # ITB accesses
 system.cpu.itb.acv                                184                       # ITB acv
-system.cpu.itb.hits                           5658971                       # ITB hits
+system.cpu.itb.hits                           5659250                       # ITB hits
 system.cpu.itb.misses                            5003                       # ITB misses
-system.cpu.kern.callpal                        195242                       # number of callpals executed
+system.cpu.kern.callpal                        195265                       # number of callpals executed
 system.cpu.kern.callpal_cserve                      1      0.00%      0.00% # number of callpals executed
 system.cpu.kern.callpal_wrmces                      1      0.00%      0.00% # number of callpals executed
 system.cpu.kern.callpal_wrfen                       1      0.00%      0.00% # number of callpals executed
@@ -33,51 +33,51 @@
 system.cpu.kern.callpal_swpctx                   4161      2.13%      2.13% # number of callpals executed
 system.cpu.kern.callpal_tbi                        54      0.03%      2.16% # number of callpals executed
 system.cpu.kern.callpal_wrent                       7      0.00%      2.16% # number of callpals executed
-system.cpu.kern.callpal_swpipl                 178096     91.22%     93.38% # number of callpals executed
-system.cpu.kern.callpal_rdps                     6977      3.57%     96.96% # number of callpals executed
+system.cpu.kern.callpal_swpipl                 178117     91.22%     93.38% # number of callpals executed
+system.cpu.kern.callpal_rdps                     6978      3.57%     96.96% # number of callpals executed
 system.cpu.kern.callpal_wrkgp                       1      0.00%     96.96% # number of callpals executed
 system.cpu.kern.callpal_wrusp                       7      0.00%     96.96% # number of callpals executed
 system.cpu.kern.callpal_rdusp                       9      0.00%     96.96% # number of callpals executed
 system.cpu.kern.callpal_whami                       2      0.00%     96.97% # number of callpals executed
-system.cpu.kern.callpal_rti                      5212      2.67%     99.64% # number of callpals executed
+system.cpu.kern.callpal_rti                      5213      2.67%     99.64% # number of callpals executed
 system.cpu.kern.callpal_callsys                   531      0.27%     99.91% # number of callpals executed
 system.cpu.kern.callpal_imb                       181      0.09%    100.00% # number of callpals executed
 system.cpu.kern.inst.arm                            0                       # number of arm instructions executed
-system.cpu.kern.inst.hwrei                     214344                       # number of hwrei instructions executed
-system.cpu.kern.inst.quiesce                     6112                       # number of quiesce instructions executed
-system.cpu.kern.ipl_count                      185408                       # number of times we switched to this ipl
-system.cpu.kern.ipl_count_0                     75624     40.79%     40.79% # number of times we switched to this ipl
-system.cpu.kern.ipl_count_21                      143      0.08%     40.87% # number of times we switched to this ipl
-system.cpu.kern.ipl_count_22                     1956      1.05%     41.92% # number of times we switched to this ipl
-system.cpu.kern.ipl_count_31                   107685     58.08%    100.00% # number of times we switched to this ipl
-system.cpu.kern.ipl_good                       150613                       # number of times we switched to this ipl from a different ipl
-system.cpu.kern.ipl_good_0                      74257     49.30%     49.30% # number of times we switched to this ipl from a different ipl
+system.cpu.kern.inst.hwrei                     214368                       # number of hwrei instructions executed
+system.cpu.kern.inst.quiesce                     6180                       # number of quiesce instructions executed
+system.cpu.kern.ipl_count                      185431                       # number of times we switched to this ipl
+system.cpu.kern.ipl_count_0                     75630     40.79%     40.79% # number of times we switched to this ipl
+system.cpu.kern.ipl_count_21                      143      0.08%     40.86% # number of times we switched to this ipl
+system.cpu.kern.ipl_count_22                     1957      1.06%     41.92% # number of times we switched to this ipl
+system.cpu.kern.ipl_count_31                   107701     58.08%    100.00% # number of times we switched to this ipl
+system.cpu.kern.ipl_good                       150626                       # number of times we switched to this ipl from a different ipl
+system.cpu.kern.ipl_good_0                      74263     49.30%     49.30% # number of times we switched to this ipl from a different ipl
 system.cpu.kern.ipl_good_21                       143      0.09%     49.40% # number of times we switched to this ipl from a different ipl
-system.cpu.kern.ipl_good_22                      1956      1.30%     50.70% # number of times we switched to this ipl from a different ipl
-system.cpu.kern.ipl_good_31                     74257     49.30%    100.00% # number of times we switched to this ipl from a different ipl
-system.cpu.kern.ipl_ticks                  3874842234                       # number of cycles we spent at this ipl
-system.cpu.kern.ipl_ticks_0                3747190106     96.71%     96.71% # number of cycles we spent at this ipl
-system.cpu.kern.ipl_ticks_21                   122728      0.00%     96.71% # number of cycles we spent at this ipl
-system.cpu.kern.ipl_ticks_22                   915408      0.02%     96.73% # number of cycles we spent at this ipl
-system.cpu.kern.ipl_ticks_31                126613992      3.27%    100.00% # number of cycles we spent at this ipl
-system.cpu.kern.ipl_used                     0.812333                       # fraction of swpipl calls that actually changed the ipl
-system.cpu.kern.ipl_used_0                   0.981924                       # fraction of swpipl calls that actually changed the ipl
+system.cpu.kern.ipl_good_22                      1957      1.30%     50.70% # number of times we switched to this ipl from a different ipl
+system.cpu.kern.ipl_good_31                     74263     49.30%    100.00% # number of times we switched to this ipl from a different ipl
+system.cpu.kern.ipl_ticks                  3875099178                       # number of cycles we spent at this ipl
+system.cpu.kern.ipl_ticks_0                3747191842     96.70%     96.70% # number of cycles we spent at this ipl
+system.cpu.kern.ipl_ticks_21                   122728      0.00%     96.70% # number of cycles we spent at this ipl
+system.cpu.kern.ipl_ticks_22                   915876      0.02%     96.73% # number of cycles we spent at this ipl
+system.cpu.kern.ipl_ticks_31                126868732      3.27%    100.00% # number of cycles we spent at this ipl
+system.cpu.kern.ipl_used                     0.812302                       # fraction of swpipl calls that actually changed the ipl
+system.cpu.kern.ipl_used_0                   0.981925                       # fraction of swpipl calls that actually changed the ipl
 system.cpu.kern.ipl_used_21                         1                       # fraction of swpipl calls that actually changed the ipl
 system.cpu.kern.ipl_used_22                         1                       # fraction of swpipl calls that actually changed the ipl
-system.cpu.kern.ipl_used_31                  0.689576                       # fraction of swpipl calls that actually changed the ipl
-system.cpu.kern.mode_good_kernel                 1923                      
-system.cpu.kern.mode_good_user                   1762                      
+system.cpu.kern.ipl_used_31                  0.689529                       # fraction of swpipl calls that actually changed the ipl
+system.cpu.kern.mode_good_kernel                 1926                      
+system.cpu.kern.mode_good_user                   1765                      
 system.cpu.kern.mode_good_idle                    161                      
-system.cpu.kern.mode_switch_kernel               5967                       # number of protection mode switches
-system.cpu.kern.mode_switch_user                 1762                       # number of protection mode switches
+system.cpu.kern.mode_switch_kernel               5968                       # number of protection mode switches
+system.cpu.kern.mode_switch_user                 1765                       # number of protection mode switches
 system.cpu.kern.mode_switch_idle                 2072                       # number of protection mode switches
-system.cpu.kern.mode_switch_good             0.392409                       # fraction of useful protection mode switches
-system.cpu.kern.mode_switch_good_kernel      0.322272                       # fraction of useful protection mode switches
+system.cpu.kern.mode_switch_good             0.392861                       # fraction of useful protection mode switches
+system.cpu.kern.mode_switch_good_kernel      0.322721                       # fraction of useful protection mode switches
 system.cpu.kern.mode_switch_good_user               1                       # fraction of useful protection mode switches
 system.cpu.kern.mode_switch_good_idle        0.077703                       # fraction of useful protection mode switches
-system.cpu.kern.mode_ticks_kernel           118227580      3.05%      3.05% # number of ticks spent at the given mode
-system.cpu.kern.mode_ticks_user              18744852      0.48%      3.53% # number of ticks spent at the given mode
-system.cpu.kern.mode_ticks_idle            3737869794     96.47%    100.00% # number of ticks spent at the given mode
+system.cpu.kern.mode_ticks_kernel           118484404      3.06%      3.06% # number of ticks spent at the given mode
+system.cpu.kern.mode_ticks_user              18744972      0.48%      3.54% # number of ticks spent at the given mode
+system.cpu.kern.mode_ticks_idle            3737869794     96.46%    100.00% # number of ticks spent at the given mode
 system.cpu.kern.swap_context                     4162                       # number of times the context was actually changed
 system.cpu.kern.syscall                           329                       # number of syscalls executed
 system.cpu.kern.syscall_2                           8      2.43%      2.43% # number of syscalls executed
@@ -110,10 +110,10 @@
 system.cpu.kern.syscall_132                         4      1.22%     98.78% # number of syscalls executed
 system.cpu.kern.syscall_144                         2      0.61%     99.39% # number of syscalls executed
 system.cpu.kern.syscall_147                         2      0.61%    100.00% # number of syscalls executed
-system.cpu.not_idle_fraction                 0.081055                       # Percentage of non-idle cycles
-system.cpu.numCycles                       3874844018                       # number of cpu cycles simulated
-system.cpu.num_insts                         61868161                       # Number of instructions executed
-system.cpu.num_refs                          16814275                       # Number of memory references
+system.cpu.not_idle_fraction                 0.081081                       # Percentage of non-idle cycles
+system.cpu.numCycles                       3875100962                       # number of cpu cycles simulated
+system.cpu.num_insts                         61893104                       # Number of instructions executed
+system.cpu.num_refs                          16819569                       # Number of memory references
 system.disk0.dma_read_bytes                      1024                       # Number of bytes transfered via DMA reads (not PRD).
 system.disk0.dma_read_full_pages                    0                       # Number of full page size DMA reads (not PRD).
 system.disk0.dma_read_txs                           1                       # Number of DMA read transactions (not PRD).
@@ -129,9 +129,9 @@
 system.tsunami.ethernet.coalescedRxDesc  <err: div-0>                       # average number of RxDesc's coalesced into each post
 system.tsunami.ethernet.coalescedRxIdle  <err: div-0>                       # average number of RxIdle's coalesced into each post
 system.tsunami.ethernet.coalescedRxOk    <err: div-0>                       # average number of RxOk's coalesced into each post
-system.tsunami.ethernet.coalescedRxOrn       no value                       # average number of RxOrn's coalesced into each post
+system.tsunami.ethernet.coalescedRxOrn   <err: div-0>                       # average number of RxOrn's coalesced into each post
 system.tsunami.ethernet.coalescedSwi     <err: div-0>                       # average number of Swi's coalesced into each post
-system.tsunami.ethernet.coalescedTotal   <err: div-0>                       # average number of interrupts coalesced into each post
+system.tsunami.ethernet.coalescedTotal       no value                       # average number of interrupts coalesced into each post
 system.tsunami.ethernet.coalescedTxDesc  <err: div-0>                       # average number of TxDesc's coalesced into each post
 system.tsunami.ethernet.coalescedTxIdle  <err: div-0>                       # average number of TxIdle's coalesced into each post
 system.tsunami.ethernet.coalescedTxOk    <err: div-0>                       # average number of TxOk's coalesced into each post
diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/stderr b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/stderr
index a8bcb04..69304a6 100644
--- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/stderr
+++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/stderr
@@ -1,6 +1,6 @@
 Warning: rounding error > tolerance
     0.002000 rounded to 0
-      0: system.tsunami.io.rtc: Real-time clock set to Sun Jan  1 00:00:00 2006
+      0: system.tsunami.io.rtc: Real-time clock set to Thu Jan  1 00:00:00 2009
 Listening for console connection on port 3456
 0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000
 warn: Entering event queue @ 0.  Starting simulation...
diff --git a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/stdout b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/stdout
index 9ae43c2..206c366 100644
--- a/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/stdout
+++ b/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/stdout
@@ -5,8 +5,8 @@
 All Rights Reserved
 
 
-M5 compiled Nov  5 2006 19:41:29
-M5 started Sun Nov  5 20:04:39 2006
-M5 executing on zizzer.eecs.umich.edu
-command line: build/ALPHA_FS/m5.opt -d build/ALPHA_FS/tests/opt/quick/10.linux-boot/alpha/linux/tsunami-simple-timing tests/run.py quick/10.linux-boot/alpha/linux/tsunami-simple-timing
-Exiting @ tick 3874844018 because m5_exit instruction encountered
+M5 compiled Jan 25 2007 15:05:30
+M5 started Thu Jan 25 15:07:20 2007
+M5 executing on zeep
+command line: /n/zeep/y/binkertn/build/rtc/build/ALPHA_FS/m5.opt -d /n/zeep/y/binkertn/build/rtc/build/ALPHA_FS/tests/opt/quick/10.linux-boot/alpha/linux/tsunami-simple-timing tests/run.py quick/10.linux-boot/alpha/linux/tsunami-simple-timing
+Exiting @ tick 3875100962 because m5_exit instruction encountered
diff --git a/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/config.ini b/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/config.ini
index 7913959..67632ca 100644
--- a/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/config.ini
+++ b/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/config.ini
@@ -18,7 +18,7 @@
 mem_mode=atomic
 pal=/dist/m5/system/binaries/ts_osfpal
 physmem=drivesys.physmem
-readfile=/z/hsul/work/m5/newmem/configs/boot/netperf-server.rcS
+readfile=/y/binkertn/research/m5/rtc/configs/boot/netperf-server.rcS
 symbolfile=
 system_rev=1024
 system_type=34
@@ -134,8 +134,13 @@
 pio_size=8
 platform=drivesys.tsunami
 ret_bad_addr=true
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=drivesys
+update_data=false
+warn_access=
 pio=drivesys.membus.default
 
 [drivesys.physmem]
@@ -143,6 +148,7 @@
 file=
 latency=1
 range=0:134217727
+zero=false
 port=drivesys.membus.port[1]
 
 [drivesys.sim_console]
@@ -275,8 +281,13 @@
 pio_size=393216
 platform=drivesys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=drivesys
+update_data=false
+warn_access=
 pio=drivesys.iobus.port[9]
 
 [drivesys.tsunami.fake_ata0]
@@ -286,8 +297,13 @@
 pio_size=8
 platform=drivesys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=drivesys
+update_data=false
+warn_access=
 pio=drivesys.iobus.port[20]
 
 [drivesys.tsunami.fake_ata1]
@@ -297,8 +313,13 @@
 pio_size=8
 platform=drivesys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=drivesys
+update_data=false
+warn_access=
 pio=drivesys.iobus.port[21]
 
 [drivesys.tsunami.fake_pnp_addr]
@@ -308,8 +329,13 @@
 pio_size=8
 platform=drivesys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=drivesys
+update_data=false
+warn_access=
 pio=drivesys.iobus.port[10]
 
 [drivesys.tsunami.fake_pnp_read0]
@@ -319,8 +345,13 @@
 pio_size=8
 platform=drivesys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=drivesys
+update_data=false
+warn_access=
 pio=drivesys.iobus.port[12]
 
 [drivesys.tsunami.fake_pnp_read1]
@@ -330,8 +361,13 @@
 pio_size=8
 platform=drivesys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=drivesys
+update_data=false
+warn_access=
 pio=drivesys.iobus.port[13]
 
 [drivesys.tsunami.fake_pnp_read2]
@@ -341,8 +377,13 @@
 pio_size=8
 platform=drivesys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=drivesys
+update_data=false
+warn_access=
 pio=drivesys.iobus.port[14]
 
 [drivesys.tsunami.fake_pnp_read3]
@@ -352,8 +393,13 @@
 pio_size=8
 platform=drivesys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=drivesys
+update_data=false
+warn_access=
 pio=drivesys.iobus.port[15]
 
 [drivesys.tsunami.fake_pnp_read4]
@@ -363,8 +409,13 @@
 pio_size=8
 platform=drivesys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=drivesys
+update_data=false
+warn_access=
 pio=drivesys.iobus.port[16]
 
 [drivesys.tsunami.fake_pnp_read5]
@@ -374,8 +425,13 @@
 pio_size=8
 platform=drivesys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=drivesys
+update_data=false
+warn_access=
 pio=drivesys.iobus.port[17]
 
 [drivesys.tsunami.fake_pnp_read6]
@@ -385,8 +441,13 @@
 pio_size=8
 platform=drivesys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=drivesys
+update_data=false
+warn_access=
 pio=drivesys.iobus.port[18]
 
 [drivesys.tsunami.fake_pnp_read7]
@@ -396,8 +457,13 @@
 pio_size=8
 platform=drivesys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=drivesys
+update_data=false
+warn_access=
 pio=drivesys.iobus.port[19]
 
 [drivesys.tsunami.fake_pnp_write]
@@ -407,19 +473,29 @@
 pio_size=8
 platform=drivesys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=drivesys
+update_data=false
+warn_access=
 pio=drivesys.iobus.port[11]
 
 [drivesys.tsunami.fake_ppc]
 type=IsaFake
-pio_addr=8804615848892
+pio_addr=8804615848891
 pio_latency=1000
 pio_size=8
 platform=drivesys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=drivesys
+update_data=false
+warn_access=
 pio=drivesys.iobus.port[8]
 
 [drivesys.tsunami.fake_sm_chip]
@@ -429,8 +505,13 @@
 pio_size=8
 platform=drivesys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=drivesys
+update_data=false
+warn_access=
 pio=drivesys.iobus.port[3]
 
 [drivesys.tsunami.fake_uart1]
@@ -440,8 +521,13 @@
 pio_size=8
 platform=drivesys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=drivesys
+update_data=false
+warn_access=
 pio=drivesys.iobus.port[4]
 
 [drivesys.tsunami.fake_uart2]
@@ -451,8 +537,13 @@
 pio_size=8
 platform=drivesys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=drivesys
+update_data=false
+warn_access=
 pio=drivesys.iobus.port[5]
 
 [drivesys.tsunami.fake_uart3]
@@ -462,8 +553,13 @@
 pio_size=8
 platform=drivesys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=drivesys
+update_data=false
+warn_access=
 pio=drivesys.iobus.port[6]
 
 [drivesys.tsunami.fake_uart4]
@@ -473,8 +569,13 @@
 pio_size=8
 platform=drivesys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=drivesys
+update_data=false
+warn_access=
 pio=drivesys.iobus.port[7]
 
 [drivesys.tsunami.fb]
@@ -544,8 +645,9 @@
 pio_latency=1000
 platform=drivesys.tsunami
 system=drivesys
-time=1136073600
+time=2009 1 1 0 0 0 3 1
 tsunami=drivesys.tsunami
+year_is_bcd=false
 pio=drivesys.iobus.port[23]
 
 [drivesys.tsunami.pchip]
@@ -637,7 +739,7 @@
 mem_mode=atomic
 pal=/dist/m5/system/binaries/ts_osfpal
 physmem=testsys.physmem
-readfile=/z/hsul/work/m5/newmem/configs/boot/netperf-stream-client.rcS
+readfile=/y/binkertn/research/m5/rtc/configs/boot/netperf-stream-client.rcS
 symbolfile=
 system_rev=1024
 system_type=34
@@ -753,8 +855,13 @@
 pio_size=8
 platform=testsys.tsunami
 ret_bad_addr=true
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=testsys
+update_data=false
+warn_access=
 pio=testsys.membus.default
 
 [testsys.physmem]
@@ -762,6 +869,7 @@
 file=
 latency=1
 range=0:134217727
+zero=false
 port=testsys.membus.port[1]
 
 [testsys.sim_console]
@@ -894,8 +1002,13 @@
 pio_size=393216
 platform=testsys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=testsys
+update_data=false
+warn_access=
 pio=testsys.iobus.port[9]
 
 [testsys.tsunami.fake_ata0]
@@ -905,8 +1018,13 @@
 pio_size=8
 platform=testsys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=testsys
+update_data=false
+warn_access=
 pio=testsys.iobus.port[20]
 
 [testsys.tsunami.fake_ata1]
@@ -916,8 +1034,13 @@
 pio_size=8
 platform=testsys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=testsys
+update_data=false
+warn_access=
 pio=testsys.iobus.port[21]
 
 [testsys.tsunami.fake_pnp_addr]
@@ -927,8 +1050,13 @@
 pio_size=8
 platform=testsys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=testsys
+update_data=false
+warn_access=
 pio=testsys.iobus.port[10]
 
 [testsys.tsunami.fake_pnp_read0]
@@ -938,8 +1066,13 @@
 pio_size=8
 platform=testsys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=testsys
+update_data=false
+warn_access=
 pio=testsys.iobus.port[12]
 
 [testsys.tsunami.fake_pnp_read1]
@@ -949,8 +1082,13 @@
 pio_size=8
 platform=testsys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=testsys
+update_data=false
+warn_access=
 pio=testsys.iobus.port[13]
 
 [testsys.tsunami.fake_pnp_read2]
@@ -960,8 +1098,13 @@
 pio_size=8
 platform=testsys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=testsys
+update_data=false
+warn_access=
 pio=testsys.iobus.port[14]
 
 [testsys.tsunami.fake_pnp_read3]
@@ -971,8 +1114,13 @@
 pio_size=8
 platform=testsys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=testsys
+update_data=false
+warn_access=
 pio=testsys.iobus.port[15]
 
 [testsys.tsunami.fake_pnp_read4]
@@ -982,8 +1130,13 @@
 pio_size=8
 platform=testsys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=testsys
+update_data=false
+warn_access=
 pio=testsys.iobus.port[16]
 
 [testsys.tsunami.fake_pnp_read5]
@@ -993,8 +1146,13 @@
 pio_size=8
 platform=testsys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=testsys
+update_data=false
+warn_access=
 pio=testsys.iobus.port[17]
 
 [testsys.tsunami.fake_pnp_read6]
@@ -1004,8 +1162,13 @@
 pio_size=8
 platform=testsys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=testsys
+update_data=false
+warn_access=
 pio=testsys.iobus.port[18]
 
 [testsys.tsunami.fake_pnp_read7]
@@ -1015,8 +1178,13 @@
 pio_size=8
 platform=testsys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=testsys
+update_data=false
+warn_access=
 pio=testsys.iobus.port[19]
 
 [testsys.tsunami.fake_pnp_write]
@@ -1026,19 +1194,29 @@
 pio_size=8
 platform=testsys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=testsys
+update_data=false
+warn_access=
 pio=testsys.iobus.port[11]
 
 [testsys.tsunami.fake_ppc]
 type=IsaFake
-pio_addr=8804615848892
+pio_addr=8804615848891
 pio_latency=1000
 pio_size=8
 platform=testsys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=testsys
+update_data=false
+warn_access=
 pio=testsys.iobus.port[8]
 
 [testsys.tsunami.fake_sm_chip]
@@ -1048,8 +1226,13 @@
 pio_size=8
 platform=testsys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=testsys
+update_data=false
+warn_access=
 pio=testsys.iobus.port[3]
 
 [testsys.tsunami.fake_uart1]
@@ -1059,8 +1242,13 @@
 pio_size=8
 platform=testsys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=testsys
+update_data=false
+warn_access=
 pio=testsys.iobus.port[4]
 
 [testsys.tsunami.fake_uart2]
@@ -1070,8 +1258,13 @@
 pio_size=8
 platform=testsys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=testsys
+update_data=false
+warn_access=
 pio=testsys.iobus.port[5]
 
 [testsys.tsunami.fake_uart3]
@@ -1081,8 +1274,13 @@
 pio_size=8
 platform=testsys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=testsys
+update_data=false
+warn_access=
 pio=testsys.iobus.port[6]
 
 [testsys.tsunami.fake_uart4]
@@ -1092,8 +1290,13 @@
 pio_size=8
 platform=testsys.tsunami
 ret_bad_addr=false
-ret_data=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
+ret_data8=255
 system=testsys
+update_data=false
+warn_access=
 pio=testsys.iobus.port[7]
 
 [testsys.tsunami.fb]
@@ -1163,8 +1366,9 @@
 pio_latency=1000
 platform=testsys.tsunami
 system=testsys
-time=1136073600
+time=2009 1 1 0 0 0 3 1
 tsunami=testsys.tsunami
+year_is_bcd=false
 pio=testsys.iobus.port[23]
 
 [testsys.tsunami.pchip]
diff --git a/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/config.out b/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/config.out
index 21b542b..7ef28f5 100644
--- a/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/config.out
+++ b/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/config.out
@@ -10,6 +10,7 @@
 file=
 range=[0,134217727]
 latency=1
+zero=false
 
 [testsys]
 type=LinuxAlphaSystem
@@ -20,7 +21,7 @@
 console=/dist/m5/system/binaries/console
 pal=/dist/m5/system/binaries/ts_osfpal
 boot_osflags=root=/dev/hda1 console=ttyS0
-readfile=/z/hsul/work/m5/newmem/configs/boot/netperf-stream-client.rcS
+readfile=/y/binkertn/research/m5/rtc/configs/boot/netperf-stream-client.rcS
 symbolfile=
 init_param=0
 system_type=34
@@ -140,6 +141,7 @@
 file=
 range=[0,134217727]
 latency=1
+zero=false
 
 [drivesys]
 type=LinuxAlphaSystem
@@ -150,7 +152,7 @@
 console=/dist/m5/system/binaries/console
 pal=/dist/m5/system/binaries/ts_osfpal
 boot_osflags=root=/dev/hda1 console=ttyS0
-readfile=/z/hsul/work/m5/newmem/configs/boot/netperf-server.rcS
+readfile=/y/binkertn/research/m5/rtc/configs/boot/netperf-server.rcS
 symbolfile=
 init_param=0
 system_type=34
@@ -292,7 +294,12 @@
 pio_latency=1
 pio_size=8
 ret_bad_addr=true
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=testsys.tsunami
 system=testsys
 
@@ -355,7 +362,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=testsys.tsunami
 system=testsys
 
@@ -365,7 +377,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=testsys.tsunami
 system=testsys
 
@@ -375,7 +392,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=testsys.tsunami
 system=testsys
 
@@ -385,17 +407,27 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=testsys.tsunami
 system=testsys
 
 [testsys.tsunami.fake_ppc]
 type=IsaFake
-pio_addr=8804615848892
+pio_addr=8804615848891
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=testsys.tsunami
 system=testsys
 
@@ -414,7 +446,8 @@
 frequency=976562500
 platform=testsys.tsunami
 system=testsys
-time=1136073600
+time=2009 1 1 0 0 0 3 1
+year_is_bcd=false
 tsunami=testsys.tsunami
 
 []
@@ -453,7 +486,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=testsys.tsunami
 system=testsys
 
@@ -463,7 +501,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=testsys.tsunami
 system=testsys
 
@@ -481,7 +524,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=testsys.tsunami
 system=testsys
 
@@ -491,7 +539,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=testsys.tsunami
 system=testsys
 
@@ -501,7 +554,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=testsys.tsunami
 system=testsys
 
@@ -511,7 +569,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=testsys.tsunami
 system=testsys
 
@@ -521,7 +584,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=testsys.tsunami
 system=testsys
 
@@ -531,7 +599,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=testsys.tsunami
 system=testsys
 
@@ -541,7 +614,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=testsys.tsunami
 system=testsys
 
@@ -551,7 +629,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=testsys.tsunami
 system=testsys
 
@@ -561,7 +644,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=testsys.tsunami
 system=testsys
 
@@ -579,7 +667,12 @@
 pio_latency=1000
 pio_size=393216
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=testsys.tsunami
 system=testsys
 
@@ -597,7 +690,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=testsys.tsunami
 system=testsys
 
@@ -607,7 +705,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=testsys.tsunami
 system=testsys
 
@@ -678,7 +781,12 @@
 pio_latency=1
 pio_size=8
 ret_bad_addr=true
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=drivesys.tsunami
 system=drivesys
 
@@ -741,7 +849,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=drivesys.tsunami
 system=drivesys
 
@@ -751,7 +864,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=drivesys.tsunami
 system=drivesys
 
@@ -761,7 +879,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=drivesys.tsunami
 system=drivesys
 
@@ -771,17 +894,27 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=drivesys.tsunami
 system=drivesys
 
 [drivesys.tsunami.fake_ppc]
 type=IsaFake
-pio_addr=8804615848892
+pio_addr=8804615848891
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=drivesys.tsunami
 system=drivesys
 
@@ -800,7 +933,8 @@
 frequency=976562500
 platform=drivesys.tsunami
 system=drivesys
-time=1136073600
+time=2009 1 1 0 0 0 3 1
+year_is_bcd=false
 tsunami=drivesys.tsunami
 
 []
@@ -839,7 +973,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=drivesys.tsunami
 system=drivesys
 
@@ -849,7 +988,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=drivesys.tsunami
 system=drivesys
 
@@ -867,7 +1011,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=drivesys.tsunami
 system=drivesys
 
@@ -877,7 +1026,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=drivesys.tsunami
 system=drivesys
 
@@ -887,7 +1041,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=drivesys.tsunami
 system=drivesys
 
@@ -897,7 +1056,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=drivesys.tsunami
 system=drivesys
 
@@ -907,7 +1071,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=drivesys.tsunami
 system=drivesys
 
@@ -917,7 +1086,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=drivesys.tsunami
 system=drivesys
 
@@ -927,7 +1101,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=drivesys.tsunami
 system=drivesys
 
@@ -937,7 +1116,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=drivesys.tsunami
 system=drivesys
 
@@ -947,7 +1131,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=drivesys.tsunami
 system=drivesys
 
@@ -965,7 +1154,12 @@
 pio_latency=1000
 pio_size=393216
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=drivesys.tsunami
 system=drivesys
 
@@ -983,7 +1177,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=drivesys.tsunami
 system=drivesys
 
@@ -993,7 +1192,12 @@
 pio_latency=1000
 pio_size=8
 ret_bad_addr=false
-ret_data=255
+update_data=false
+warn_access=
+ret_data8=255
+ret_data16=65535
+ret_data32=4294967295
+ret_data64=18446744073709551615
 platform=drivesys.tsunami
 system=drivesys
 
diff --git a/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/m5stats.txt b/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/m5stats.txt
index dc4ea4a..585dfef 100644
--- a/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/m5stats.txt
+++ b/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/m5stats.txt
@@ -39,8 +39,8 @@
 drivesys.cpu.kern.ipl_good_21                      10      0.39%     46.24% # number of times we switched to this ipl from a different ipl
 drivesys.cpu.kern.ipl_good_22                     205      7.91%     54.15% # number of times we switched to this ipl from a different ipl
 drivesys.cpu.kern.ipl_good_31                    1189     45.85%    100.00% # number of times we switched to this ipl from a different ipl
-drivesys.cpu.kern.ipl_ticks              199572064367                       # number of cycles we spent at this ipl
-drivesys.cpu.kern.ipl_ticks_0            199571744404    100.00%    100.00% # number of cycles we spent at this ipl
+drivesys.cpu.kern.ipl_ticks              199572064521                       # number of cycles we spent at this ipl
+drivesys.cpu.kern.ipl_ticks_0            199571744558    100.00%    100.00% # number of cycles we spent at this ipl
 drivesys.cpu.kern.ipl_ticks_21                   1620      0.00%    100.00% # number of cycles we spent at this ipl
 drivesys.cpu.kern.ipl_ticks_22                  17630      0.00%    100.00% # number of cycles we spent at this ipl
 drivesys.cpu.kern.ipl_ticks_31                 300713      0.00%    100.00% # number of cycles we spent at this ipl
@@ -61,7 +61,7 @@
 drivesys.cpu.kern.mode_switch_good_idle      0.013761                       # fraction of useful protection mode switches
 drivesys.cpu.kern.mode_ticks_kernel            263475      0.24%      0.24% # number of ticks spent at the given mode
 drivesys.cpu.kern.mode_ticks_user             1278343      1.18%      1.43% # number of ticks spent at the given mode
-drivesys.cpu.kern.mode_ticks_idle           106485234     98.57%    100.00% # number of ticks spent at the given mode
+drivesys.cpu.kern.mode_ticks_idle           106485080     98.57%    100.00% # number of ticks spent at the given mode
 drivesys.cpu.kern.swap_context                     70                       # number of times the context was actually changed
 drivesys.cpu.kern.syscall                          22                       # number of syscalls executed
 drivesys.cpu.kern.syscall_2                         1      4.55%      4.55% # number of syscalls executed
@@ -77,8 +77,8 @@
 drivesys.cpu.kern.syscall_118                       2      9.09%     95.45% # number of syscalls executed
 drivesys.cpu.kern.syscall_150                       1      4.55%    100.00% # number of syscalls executed
 drivesys.cpu.not_idle_fraction               0.000000                       # Percentage of non-idle cycles
-drivesys.cpu.numCycles                        1959293                       # number of cpu cycles simulated
-drivesys.cpu.num_insts                        1959077                       # Number of instructions executed
+drivesys.cpu.numCycles                        1959205                       # number of cpu cycles simulated
+drivesys.cpu.num_insts                        1958989                       # Number of instructions executed
 drivesys.cpu.num_refs                          626286                       # Number of memory references
 drivesys.disk0.dma_read_bytes                       0                       # Number of bytes transfered via DMA reads (not PRD).
 drivesys.disk0.dma_read_full_pages                  0                       # Number of full page size DMA reads (not PRD).
@@ -140,12 +140,12 @@
 drivesys.tsunami.ethernet.txPackets                 5                       # Number of Packets Transmitted
 drivesys.tsunami.ethernet.txTcpChecksums            2                       # Number of tx TCP Checksums done by device
 drivesys.tsunami.ethernet.txUdpChecksums            0                       # Number of tx UDP Checksums done by device
-host_inst_rate                               38710250                       # Simulator instruction rate (inst/s)
-host_mem_usage                                 411152                       # Number of bytes of host memory used
-host_seconds                                     7.14                       # Real time elapsed on the host
-host_tick_rate                            28030590990                       # Simulator tick rate (ticks/s)
+host_inst_rate                               65873683                       # Simulator instruction rate (inst/s)
+host_mem_usage                                 463096                       # Number of bytes of host memory used
+host_seconds                                     4.19                       # Real time elapsed on the host
+host_tick_rate                            47718011872                       # Simulator tick rate (ticks/s)
 sim_freq                                 1000000000000                       # Frequency of simulated ticks
-sim_insts                                   276189231                       # Number of instructions simulated
+sim_insts                                   276082930                       # Number of instructions simulated
 sim_seconds                                  0.200001                       # Number of seconds simulated
 sim_ticks                                200000789468                       # Number of ticks simulated
 testsys.cpu.dtb.accesses                       335402                       # DTB accesses
@@ -188,8 +188,8 @@
 testsys.cpu.kern.ipl_good_21                      183      1.74%     49.90% # number of times we switched to this ipl from a different ipl
 testsys.cpu.kern.ipl_good_22                      205      1.95%     51.85% # number of times we switched to this ipl from a different ipl
 testsys.cpu.kern.ipl_good_31                     5055     48.15%    100.00% # number of times we switched to this ipl from a different ipl
-testsys.cpu.kern.ipl_ticks               199569923603                       # number of cycles we spent at this ipl
-testsys.cpu.kern.ipl_ticks_0             199569308033    100.00%    100.00% # number of cycles we spent at this ipl
+testsys.cpu.kern.ipl_ticks               199569923816                       # number of cycles we spent at this ipl
+testsys.cpu.kern.ipl_ticks_0             199569308246    100.00%    100.00% # number of cycles we spent at this ipl
 testsys.cpu.kern.ipl_ticks_21                   30857      0.00%    100.00% # number of cycles we spent at this ipl
 testsys.cpu.kern.ipl_ticks_22                   17630      0.00%    100.00% # number of cycles we spent at this ipl
 testsys.cpu.kern.ipl_ticks_31                  567083      0.00%    100.00% # number of cycles we spent at this ipl
@@ -208,9 +208,9 @@
 testsys.cpu.kern.mode_switch_good_kernel     0.594545                       # fraction of useful protection mode switches
 testsys.cpu.kern.mode_switch_good_user              1                       # fraction of useful protection mode switches
 testsys.cpu.kern.mode_switch_good_idle       0.013123                       # fraction of useful protection mode switches
-testsys.cpu.kern.mode_ticks_kernel            1821232      2.16%      2.16% # number of ticks spent at the given mode
+testsys.cpu.kern.mode_ticks_kernel            1821166      2.16%      2.16% # number of ticks spent at the given mode
 testsys.cpu.kern.mode_ticks_user              1065606      1.26%      3.42% # number of ticks spent at the given mode
-testsys.cpu.kern.mode_ticks_idle             81403567     96.58%    100.00% # number of ticks spent at the given mode
+testsys.cpu.kern.mode_ticks_idle             81403516     96.58%    100.00% # number of ticks spent at the given mode
 testsys.cpu.kern.swap_context                     440                       # number of times the context was actually changed
 testsys.cpu.kern.syscall                           83                       # number of syscalls executed
 testsys.cpu.kern.syscall_2                          3      3.61%      3.61% # number of syscalls executed
@@ -235,8 +235,8 @@
 testsys.cpu.kern.syscall_105                        3      3.61%     97.59% # number of syscalls executed
 testsys.cpu.kern.syscall_118                        2      2.41%    100.00% # number of syscalls executed
 testsys.cpu.not_idle_fraction                0.000001                       # Percentage of non-idle cycles
-testsys.cpu.numCycles                         3566237                       # number of cpu cycles simulated
-testsys.cpu.num_insts                         3564671                       # Number of instructions executed
+testsys.cpu.numCycles                         3566149                       # number of cpu cycles simulated
+testsys.cpu.num_insts                         3564583                       # Number of instructions executed
 testsys.cpu.num_refs                          1173698                       # Number of memory references
 testsys.disk0.dma_read_bytes                        0                       # Number of bytes transfered via DMA reads (not PRD).
 testsys.disk0.dma_read_full_pages                   0                       # Number of full page size DMA reads (not PRD).
@@ -357,10 +357,10 @@
 drivesys.tsunami.ethernet.coalescedRxOk  <err: div-0>                       # average number of RxOk's coalesced into each post
 drivesys.tsunami.ethernet.coalescedRxOrn <err: div-0>                       # average number of RxOrn's coalesced into each post
 drivesys.tsunami.ethernet.coalescedSwi   <err: div-0>                       # average number of Swi's coalesced into each post
-drivesys.tsunami.ethernet.coalescedTotal <err: div-0>                       # average number of interrupts coalesced into each post
-drivesys.tsunami.ethernet.coalescedTxDesc <err: div-0>                       # average number of TxDesc's coalesced into each post
-drivesys.tsunami.ethernet.coalescedTxIdle <err: div-0>                       # average number of TxIdle's coalesced into each post
-drivesys.tsunami.ethernet.coalescedTxOk  <err: div-0>                       # average number of TxOk's coalesced into each post
+drivesys.tsunami.ethernet.coalescedTotal     no value                       # average number of interrupts coalesced into each post
+drivesys.tsunami.ethernet.coalescedTxDesc     no value                       # average number of TxDesc's coalesced into each post
+drivesys.tsunami.ethernet.coalescedTxIdle     no value                       # average number of TxIdle's coalesced into each post
+drivesys.tsunami.ethernet.coalescedTxOk      no value                       # average number of TxOk's coalesced into each post
 drivesys.tsunami.ethernet.descDMAReads              0                       # Number of descriptors the device read w/ DMA
 drivesys.tsunami.ethernet.descDMAWrites             0                       # Number of descriptors the device wrote w/ DMA
 drivesys.tsunami.ethernet.descDmaReadBytes            0                       # number of descriptor bytes read w/ DMA
@@ -383,12 +383,12 @@
 drivesys.tsunami.ethernet.totalTxDesc               0                       # total number of TxDesc written to ISR
 drivesys.tsunami.ethernet.totalTxIdle               0                       # total number of TxIdle written to ISR
 drivesys.tsunami.ethernet.totalTxOk                 0                       # total number of TxOk written to ISR
-host_inst_rate                            75502796884                       # Simulator instruction rate (inst/s)
-host_mem_usage                                 411152                       # Number of bytes of host memory used
+host_inst_rate                           145844125726                       # Simulator instruction rate (inst/s)
+host_mem_usage                                 463096                       # Number of bytes of host memory used
 host_seconds                                     0.00                       # Real time elapsed on the host
-host_tick_rate                              201377914                       # Simulator tick rate (ticks/s)
+host_tick_rate                              385283333                       # Simulator tick rate (ticks/s)
 sim_freq                                 1000000000000                       # Frequency of simulated ticks
-sim_insts                                   276189231                       # Number of instructions simulated
+sim_insts                                   276082930                       # Number of instructions simulated
 sim_seconds                                  0.000001                       # Number of seconds simulated
 sim_ticks                                      785978                       # Number of ticks simulated
 testsys.cpu.dtb.accesses                            0                       # DTB accesses
@@ -417,10 +417,10 @@
 testsys.cpu.kern.mode_switch_kernel                 0                       # number of protection mode switches
 testsys.cpu.kern.mode_switch_user                   0                       # number of protection mode switches
 testsys.cpu.kern.mode_switch_idle                   0                       # number of protection mode switches
-testsys.cpu.kern.mode_switch_good            no value                       # fraction of useful protection mode switches
-testsys.cpu.kern.mode_switch_good_kernel     no value                       # fraction of useful protection mode switches
-testsys.cpu.kern.mode_switch_good_user       no value                       # fraction of useful protection mode switches
-testsys.cpu.kern.mode_switch_good_idle       no value                       # fraction of useful protection mode switches
+testsys.cpu.kern.mode_switch_good        <err: div-0>                       # fraction of useful protection mode switches
+testsys.cpu.kern.mode_switch_good_kernel <err: div-0>                       # fraction of useful protection mode switches
+testsys.cpu.kern.mode_switch_good_user   <err: div-0>                       # fraction of useful protection mode switches
+testsys.cpu.kern.mode_switch_good_idle   <err: div-0>                       # fraction of useful protection mode switches
 testsys.cpu.kern.mode_ticks_kernel                  0                       # number of ticks spent at the given mode
 testsys.cpu.kern.mode_ticks_user                    0                       # number of ticks spent at the given mode
 testsys.cpu.kern.mode_ticks_idle                    0                       # number of ticks spent at the given mode
@@ -446,10 +446,10 @@
 testsys.tsunami.ethernet.coalescedRxOk   <err: div-0>                       # average number of RxOk's coalesced into each post
 testsys.tsunami.ethernet.coalescedRxOrn  <err: div-0>                       # average number of RxOrn's coalesced into each post
 testsys.tsunami.ethernet.coalescedSwi    <err: div-0>                       # average number of Swi's coalesced into each post
-testsys.tsunami.ethernet.coalescedTotal  <err: div-0>                       # average number of interrupts coalesced into each post
-testsys.tsunami.ethernet.coalescedTxDesc <err: div-0>                       # average number of TxDesc's coalesced into each post
-testsys.tsunami.ethernet.coalescedTxIdle <err: div-0>                       # average number of TxIdle's coalesced into each post
-testsys.tsunami.ethernet.coalescedTxOk   <err: div-0>                       # average number of TxOk's coalesced into each post
+testsys.tsunami.ethernet.coalescedTotal      no value                       # average number of interrupts coalesced into each post
+testsys.tsunami.ethernet.coalescedTxDesc     no value                       # average number of TxDesc's coalesced into each post
+testsys.tsunami.ethernet.coalescedTxIdle     no value                       # average number of TxIdle's coalesced into each post
+testsys.tsunami.ethernet.coalescedTxOk       no value                       # average number of TxOk's coalesced into each post
 testsys.tsunami.ethernet.descDMAReads               0                       # Number of descriptors the device read w/ DMA
 testsys.tsunami.ethernet.descDMAWrites              0                       # Number of descriptors the device wrote w/ DMA
 testsys.tsunami.ethernet.descDmaReadBytes            0                       # number of descriptor bytes read w/ DMA
diff --git a/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/stderr b/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/stderr
index 3aa8423..0be2412 100644
--- a/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/stderr
+++ b/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/stderr
@@ -1,6 +1,6 @@
-      0: testsys.tsunami.io.rtc: Real-time clock set to Sun Jan  1 00:00:00 2006
+      0: testsys.tsunami.io.rtc: Real-time clock set to Thu Jan  1 00:00:00 2009
 Listening for console connection on port 3456
-      0: drivesys.tsunami.io.rtc: Real-time clock set to Sun Jan  1 00:00:00 2006
+      0: drivesys.tsunami.io.rtc: Real-time clock set to Thu Jan  1 00:00:00 2009
 Listening for console connection on port 3457
 0: testsys.remote_gdb.listener: listening for remote gdb #0 on port 7000
 0: drivesys.remote_gdb.listener: listening for remote gdb #1 on port 7001
diff --git a/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/stdout b/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/stdout
index 183b4bb..e529ca1 100644
--- a/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/stdout
+++ b/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/stdout
@@ -5,10 +5,10 @@
 All Rights Reserved
 
 
-M5 compiled Nov 29 2006 16:48:25
-M5 started Sat Dec  2 11:01:31 2006
-M5 executing on zed.eecs.umich.edu
-command line: build/ALPHA_FS/m5.opt -d build/ALPHA_FS/tests/opt/quick/80.netperf-stream/alpha/linux/twosys-tsunami-simple-atomic tests/run.py quick/80.netperf-stream/alpha/linux/twosys-tsunami-simple-atomic
-Resetting stats at cycle 4093398828306!
-Resetting stats at cycle 4293399617774!
-Exiting @ tick 4293400403752 because checkpoint
+M5 compiled Jan 25 2007 15:05:30
+M5 started Thu Jan 25 15:12:40 2007
+M5 executing on zeep
+command line: /n/zeep/y/binkertn/build/rtc/build/ALPHA_FS/m5.opt -d /n/zeep/y/binkertn/build/rtc/build/ALPHA_FS/tests/opt/quick/80.netperf-stream/alpha/linux/twosys-tsunami-simple-atomic tests/run.py quick/80.netperf-stream/alpha/linux/twosys-tsunami-simple-atomic
+Resetting stats at cycle 4093398828093!
+Resetting stats at cycle 4293399617561!
+Exiting @ tick 4293400403539 because checkpoint