Updates for registers and stuff.
authorKevin Lim <ktlim@umich.edu>
Wed, 2 Aug 2006 16:04:18 +0000 (12:04 -0400)
committerKevin Lim <ktlim@umich.edu>
Wed, 2 Aug 2006 16:04:18 +0000 (12:04 -0400)
arch/alpha/ev5.cc:
    Update for copying IPRs.
arch/alpha/isa_traits.hh:
    Allow for misc register file to serialize.  Also add some register copying code.
cpu/cpu_exec_context.cc:
    Use ISA's function to copy registers.

--HG--
extra : convert_revision : 09fa3b2b1b229cbf3a34f69354953da2607c2a8f

arch/alpha/ev5.cc
arch/alpha/isa_traits.hh
cpu/cpu_exec_context.cc

index f113a276749ad13b7b43b980df3e8bd5cfd1d59b..907bea92cedf9c95e39d612943e64366930176f9 100644 (file)
@@ -547,14 +547,16 @@ AlphaISA::MiscRegFile::setIpr(int idx, uint64_t val, ExecContext *xc)
     return NoFault;
 }
 
+
 void
-AlphaISA::MiscRegFile::copyIprs(ExecContext *xc)
+AlphaISA::copyIprs(ExecContext *src, ExecContext *dest)
 {
     for (int i = IPR_Base_DepTag; i < NumInternalProcRegs; ++i) {
-        ipr[i] = xc->readMiscReg(i);
+        dest->setMiscReg(i, src->readMiscReg(i));
     }
 }
 
+
 /**
  * Check for special simulator handling of specific PAL calls.
  * If return value is false, actual PAL call will be suppressed.
index 8781938814d06d070b5a30444222610b1b2478ec..515ec933b12bf6c79e3cd1b9c432b51a378ecf21 100644 (file)
@@ -212,7 +212,16 @@ extern const int reg_redir[NumIntRegs];
         Fault setRegWithEffect(int misc_reg, const MiscReg &val,
                                ExecContext *xc);
 
-        void copyMiscRegs(ExecContext *xc);
+        void serialize(std::ostream &os);
+
+        void unserialize(Checkpoint *cp, const std::string &section);
+
+        void clear()
+        {
+            fpcr = uniq = 0;
+            lock_flag = 0;
+            lock_addr = 0;
+        }
 
 #if FULL_SYSTEM
       protected:
@@ -361,6 +370,14 @@ extern const int reg_redir[NumIntRegs];
         }
     }
 #endif
+
+    void copyRegs(ExecContext *src, ExecContext *dest);
+
+    void copyMiscRegs(ExecContext *src, ExecContext *dest);
+
+#if FULL_SYSTEM
+    void copyIprs(ExecContext *src, ExecContext *dest);
+#endif
 };
 
 static inline AlphaISA::ExtMachInst
index e30295ef80c58648874d99f7d33fd1472c3d7ed6..e28c34f88fa735adb88b6feb2bad8cf134738345 100644 (file)
@@ -306,7 +306,7 @@ CPUExecContext::copyArchRegs(ExecContext *xc)
     }
 
     // Copy misc. registers
-    regs.miscRegs.copyMiscRegs(xc);
+    TheISA::copyMiscRegs(xc, proxy);
 
     // Lastly copy PC/NPC
     setPC(xc->readPC());