Registers: Eliminate the ISA defined integer register file.
authorGabe Black <gblack@eecs.umich.edu>
Thu, 9 Jul 2009 06:02:20 +0000 (23:02 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Thu, 9 Jul 2009 06:02:20 +0000 (23:02 -0700)
28 files changed:
src/arch/alpha/intregfile.cc
src/arch/alpha/intregfile.hh
src/arch/alpha/regfile.cc
src/arch/alpha/regfile.hh
src/arch/arm/regfile/int_regfile.hh
src/arch/arm/regfile/regfile.cc
src/arch/arm/regfile/regfile.hh
src/arch/mips/SConscript
src/arch/mips/regfile.cc
src/arch/mips/regfile/int_regfile.cc [deleted file]
src/arch/mips/regfile/int_regfile.hh
src/arch/mips/regfile/regfile.cc
src/arch/mips/regfile/regfile.hh
src/arch/sparc/SConscript
src/arch/sparc/intregfile.cc [deleted file]
src/arch/sparc/intregfile.hh
src/arch/sparc/predecoder.hh
src/arch/sparc/regfile.cc
src/arch/sparc/regfile.hh
src/arch/x86/SConscript
src/arch/x86/intregfile.cc [deleted file]
src/arch/x86/intregfile.hh
src/arch/x86/regfile.cc
src/arch/x86/regfile.hh
src/cpu/inorder/cpu.cc
src/cpu/inorder/cpu.hh
src/cpu/simple_thread.cc
src/cpu/simple_thread.hh

index 8f692f856ef9fe6bcdb86590dc17502a1f1945e3..de1c2a5d90754aea60891307205112219c39553e 100644 (file)
  *          Kevin Lim
  */
 
-#include <cstring>
-
-#include "arch/alpha/isa_traits.hh"
 #include "arch/alpha/intregfile.hh"
-#include "sim/serialize.hh"
 
 namespace AlphaISA {
 
@@ -52,23 +48,5 @@ const int reg_redir[NumIntRegs] = {
     /* 24 */ 24, 25, 26, 27, 28, 29, 30, 31 };
 #endif
 
-void
-IntRegFile::clear()
-{
-    std::memset(regs, 0, sizeof(regs));
-}
-
-void
-IntRegFile::serialize(std::ostream &os)
-{
-    SERIALIZE_ARRAY(regs, NumIntRegs);
-}
-
-void
-IntRegFile::unserialize(Checkpoint *cp, const std::string &section)
-{
-    UNSERIALIZE_ARRAY(regs, NumIntRegs);
-}
-
 } // namespace AlphaISA
 
index 3aa7d92c456fc5710793f4e6d10b42a19ec58a8a..2844b55d9983180cf96600fd9dc2d642a7903c63 100644 (file)
 #ifndef __ARCH_ALPHA_INTREGFILE_HH__
 #define __ARCH_ALPHA_INTREGFILE_HH__
 
-#include <iosfwd>
-#include <string>
-
-#include "arch/alpha/types.hh"
-
-class Checkpoint;
+#include "arch/alpha/isa_traits.hh"
 
 namespace AlphaISA {
 
 // redirected register map, really only used for the full system case.
 extern const int reg_redir[NumIntRegs];
 
-class IntRegFile
-{
-  protected:
-    IntReg regs[NumIntRegs];
-
-  public:
-    IntReg
-    readReg(int intReg)
-    {
-        return regs[intReg];
-    }
-
-    void
-    setReg(int intReg, const IntReg &val)
-    {
-        regs[intReg] = val;
-    }
-
-    void clear();
-
-    void serialize(std::ostream &os);
-    void unserialize(Checkpoint *cp, const std::string &section);
-};
-
 } // namespace AlphaISA
 
 #endif // __ARCH_ALPHA_INTREGFILE_HH__
index df345278a3b78f2808850aed5e3502863ee55796..993c91387a04fa5bd2d2d3e41adacda0a34a6889 100644 (file)
@@ -41,7 +41,6 @@ namespace AlphaISA {
 void
 RegFile::serialize(EventManager *em, ostream &os)
 {
-    intRegFile.serialize(os);
     SERIALIZE_SCALAR(pc);
     SERIALIZE_SCALAR(npc);
 #if FULL_SYSTEM
@@ -52,7 +51,6 @@ RegFile::serialize(EventManager *em, ostream &os)
 void
 RegFile::unserialize(EventManager *em, Checkpoint *cp, const string &section)
 {
-    intRegFile.unserialize(cp, section);
     UNSERIALIZE_SCALAR(pc);
     UNSERIALIZE_SCALAR(npc);
 #if FULL_SYSTEM
index 000bea2592f7f16942e5915662a68bfc763f9628..113cf225c08f36bb08064b49fe0d51a07c7c784f 100644 (file)
@@ -89,9 +89,6 @@ class RegFile {
     setNextNPC(Addr val)
     { }
 
-  protected:
-    IntRegFile intRegFile;          // (signed) integer register file
-
   public:
 #if FULL_SYSTEM
     int intrflag;                   // interrupt flag
@@ -100,19 +97,6 @@ class RegFile {
     void
     clear()
     {
-        intRegFile.clear();
-    }
-
-    IntReg
-    readIntReg(int intReg)
-    {
-        return intRegFile.readReg(intReg);
-    }
-
-    void
-    setIntReg(int intReg, const IntReg &val)
-    {
-        intRegFile.setReg(intReg, val);
     }
 
     void serialize(EventManager *em, std::ostream &os);
index b22129f33b33159866320a10cb0be95500938cf0..1f2715a6bf247bb96165783e2cb28059eca41753 100644 (file)
@@ -43,11 +43,6 @@ class ThreadContext;
 
 namespace ArmISA
 {
-    static inline std::string getIntRegName(RegIndex)
-    {
-        return "";
-    }
-
     enum MiscIntRegNums {
         zero_reg = NumIntArchRegs,
         addr_reg,
@@ -77,42 +72,6 @@ namespace ArmISA
         r14_abt
     };
 
-    class IntRegFile
-    {
-      protected:
-        IntReg regs[NumIntRegs];
-
-      public:
-        IntReg readReg(int intReg)
-        {
-            DPRINTF(IntRegs, "Reading int reg %d as %#x.\n",
-                    intReg, regs[intReg]);
-            return regs[intReg];
-        }
-
-        void clear()
-        {
-            bzero(regs, sizeof(regs));
-        }
-
-        Fault setReg(int intReg, const IntReg &val)
-        {
-            DPRINTF(IntRegs, "Setting int reg %d to %#x.\n", intReg, val);
-            regs[intReg] = val;
-            return NoFault;
-        }
-
-        void serialize(std::ostream &os)
-        {
-            SERIALIZE_ARRAY(regs, NumIntRegs);
-        }
-
-        void unserialize(Checkpoint *cp, const std::string &section)
-        {
-            UNSERIALIZE_ARRAY(regs, NumIntRegs);
-        }
-    };
-
 } // namespace ArmISA
 
 #endif
index 4ab3c771f8f8371f15e4641ae02baf42292723b6..49ffb4f28cbfdcd4e169de05fd6e944112d7c718 100644 (file)
@@ -57,7 +57,6 @@ MiscRegFile::copyMiscRegs(ThreadContext *tc)
 void
 RegFile::serialize(EventManager *em, ostream &os)
 {
-    intRegFile.serialize(os);
     SERIALIZE_SCALAR(npc);
     SERIALIZE_SCALAR(nnpc);
 }
@@ -65,7 +64,6 @@ RegFile::serialize(EventManager *em, ostream &os)
 void
 RegFile::unserialize(EventManager *em, Checkpoint *cp, const string &section)
 {
-    intRegFile.unserialize(cp, section);
     UNSERIALIZE_SCALAR(npc);
     UNSERIALIZE_SCALAR(nnpc);
 }
index 35830eabf17897575f7045b531fa0f258ac09880..05f9197c318820b7f15135bad64600e86ad75007 100644 (file)
@@ -67,25 +67,10 @@ namespace ArmISA
 
     class RegFile
     {
-      protected:
-        IntRegFile intRegFile;         // (signed) integer register file
-
       public:
 
         void clear()
-        {
-            intRegFile.clear();
-        }
-
-        IntReg readIntReg(int intReg)
-        {
-            return intRegFile.readReg(intReg);
-        }
-
-        void setIntReg(int intReg, const IntReg &val)
-        {
-            intRegFile.setReg(intReg, val);
-        }
+        {}
       protected:
 
         Addr pc;                       // program counter
@@ -95,14 +80,12 @@ namespace ArmISA
       public:
         Addr readPC()
         {
-            return intRegFile.readReg(PCReg);
-            //return pc;
+            return pc;
         }
 
         void setPC(Addr val)
         {
-            intRegFile.setReg(PCReg, val);
-            //pc = val;
+            pc = val;
         }
 
         Addr readNextPC()
index dbbdf72b387d1d5bfac660e2c7b87ea8c97d7826..0b5f10611ca5e04c2e4dbda4c05e55d4c0e7ee14 100644 (file)
@@ -35,7 +35,6 @@ Import('*')
 if env['TARGET_ISA'] == 'mips':
     Source('faults.cc')
     Source('isa.cc')
-    Source('regfile/int_regfile.cc')
     Source('regfile/misc_regfile.cc')
     Source('regfile/regfile.cc')
     Source('tlb.cc')
index 2fb53cd4c66ace3a2d40f2725291fe8bc4c95075..760f7e0287e4f1ce8d1f2bdd0d1a3731df2d9c28 100644 (file)
@@ -48,7 +48,6 @@ using namespace MipsISA;
 
 void RegFile::clear()
 {
-    intRegFile.clear();
     miscRegFile.clear();
 }
 
@@ -56,20 +55,9 @@ void
 RegFile::reset(std::string core_name, ThreadID num_threads,
                unsigned num_vpes)
 {
-    bzero(&intRegFile, sizeof(intRegFile));
     miscRegFile.reset(core_name, num_threads, num_vpes);
 }
 
-IntReg RegFile::readIntReg(int intReg)
-{
-    return intRegFile.readReg(intReg);
-}
-
-Fault RegFile::setIntReg(int intReg, const IntReg &val)
-{
-    return intRegFile.setReg(intReg, val);
-}
-
 MiscReg
 RegFile::readMiscRegNoEffect(int miscReg, ThreadID tid = 0)
 {
@@ -128,7 +116,6 @@ void RegFile::setNextNPC(Addr val)
 void
 RegFile::serialize(std::ostream &os)
 {
-    intRegFile.serialize(os);
     miscRegFile.serialize(os);
 
     SERIALIZE_SCALAR(pc);
@@ -140,7 +127,6 @@ RegFile::serialize(std::ostream &os)
 void
 RegFile::unserialize(Checkpoint *cp, const std::string &section)
 {
-    intRegFile.unserialize(cp, section);
     miscRegFile.unserialize(cp, section);
     UNSERIALIZE_SCALAR(pc);
     UNSERIALIZE_SCALAR(npc);
diff --git a/src/arch/mips/regfile/int_regfile.cc b/src/arch/mips/regfile/int_regfile.cc
deleted file mode 100644 (file)
index 88de4be..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (c) 2003-2005 The Regents of The University of Michigan
- * Copyright (c) 2007 MIPS Technologies, Inc.
- * 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: Gabe Black
- *          Korey Sewell
- *          Jaidev Patwardhan
- */
-
-#include "arch/mips/regfile/int_regfile.hh"
-#include "sim/serialize.hh"
-
-using namespace MipsISA;
-using namespace std;
-
-void
-IntRegFile::clear()
-{
-    bzero(&regs, sizeof(regs));
-    currShadowSet=0;
-}
-
-int
-IntRegFile::readShadowSet()
-{
-  return currShadowSet;
-}
-
-void
-IntRegFile::setShadowSet(int css)
-{
-    DPRINTF(MipsPRA, "Setting Shadow Set to :%d (%s)\n", css, currShadowSet);
-    currShadowSet = css;
-}
-
-IntReg
-IntRegFile::readReg(int intReg)
-{
-    if (intReg < NumIntArchRegs) {
-        // Regular GPR Read
-        DPRINTF(MipsPRA, "Reading Reg: %d, CurrShadowSet: %d\n", intReg,
-              currShadowSet);
-
-        return regs[intReg + NumIntArchRegs * currShadowSet];
-    } else {
-        unsigned special_reg_num = intReg - NumIntArchRegs;
-
-        // Read A Special Reg
-        return regs[TotalArchRegs + special_reg_num];
-    }
-}
-
-Fault
-IntRegFile::setReg(int intReg, const IntReg &val)
-{
-    if (intReg != ZeroReg) {
-        if (intReg < NumIntArchRegs) {
-          regs[intReg + NumIntArchRegs * currShadowSet] = val;
-        } else {
-          unsigned special_reg_num = intReg - NumIntArchRegs;
-
-          regs[TotalArchRegs + special_reg_num] = val;
-        }
-    }
-
-    return NoFault;
-}
-
-void
-IntRegFile::serialize(std::ostream &os)
-{
-    SERIALIZE_ARRAY(regs, NumIntRegs);
-}
-
-void
-IntRegFile::unserialize(Checkpoint *cp, const std::string &section)
-{
-    UNSERIALIZE_ARRAY(regs, NumIntRegs);
-}
index 3c7c8c64cb8f351a13b4f39e42e2c740cbc01338..a2c5169aaacca568f85729b43475af6bad61d440 100644 (file)
@@ -65,23 +65,6 @@ namespace MipsISA
     //TotalArchRegs = NumIntArchRegs * ShadowSets
     const int TotalArchRegs = NumIntArchRegs;
 
-    class IntRegFile
-    {
-      protected:
-        IntReg regs[NumIntRegs];
-        int currShadowSet;
-      public:
-        void clear();
-        int readShadowSet();
-        void setShadowSet(int css);
-        IntReg readReg(int intReg);
-        Fault setReg(int intReg, const IntReg &val);
-
-        void serialize(std::ostream &os);
-        void unserialize(Checkpoint *cp, const std::string &section);
-
-    };
-
 } // namespace MipsISA
 
 #endif
index eeec02ee4cf25cc6e7fea08a310ecc1ac0b75df0..a19962ff373fab1ed4b0e80eee33bd569cfe9d48 100644 (file)
@@ -40,31 +40,16 @@ namespace MipsISA
 void
 RegFile::clear()
 {
-    intRegFile.clear();
 }
 
 void
 RegFile::reset(std::string core_name, ThreadID num_threads, unsigned num_vpes,
                BaseCPU *_cpu)
 {
-    bzero(&intRegFile, sizeof(intRegFile));
-}
-
-IntReg
-RegFile::readIntReg(int intReg)
-{
-    return intRegFile.readReg(intReg);
-}
-
-Fault
-RegFile::setIntReg(int intReg, const IntReg &val)
-{
-    return intRegFile.setReg(intReg, val);
 }
 
 void
 RegFile::setShadowSet(int css){
-    intRegFile.setShadowSet(css);
 }
 
 
@@ -107,7 +92,6 @@ RegFile::setNextNPC(Addr val)
 void
 RegFile::serialize(EventManager *em, std::ostream &os)
 {
-    intRegFile.serialize(os);
     SERIALIZE_SCALAR(pc);
     SERIALIZE_SCALAR(npc);
     SERIALIZE_SCALAR(nnpc);
@@ -117,7 +101,6 @@ void
 RegFile::unserialize(EventManager *em, Checkpoint *cp,
     const std::string &section)
 {
-    intRegFile.unserialize(cp, section);
     UNSERIALIZE_SCALAR(pc);
     UNSERIALIZE_SCALAR(npc);
     UNSERIALIZE_SCALAR(nnpc);
index 105891bb92dd1e7041ac2eb99523699d6951bc52..061b4a07db76adf4278768550ab6cdfe78c6ee64 100644 (file)
@@ -79,16 +79,11 @@ namespace MipsISA
                                         // used to implement branch delay slot
                                         // not real register
 
-        IntRegFile intRegFile;          // (signed) integer register file
-
       public:
         void clear();
         void reset(std::string core_name, ThreadID num_threads,
                    unsigned num_vpes, BaseCPU *_cpu);
 
-        IntReg readIntReg(int intReg);
-        Fault setIntReg(int intReg, const IntReg &val);
-
         void setShadowSet(int css);
 
       public:
index 2b10951d9c872f0c216a43ed8dfb7dd12ef8fbaa..cfc03b7181ee8db7874f4846cc58392bb819c7b5 100644 (file)
@@ -34,7 +34,6 @@ Import('*')
 if env['TARGET_ISA'] == 'sparc':
     Source('asi.cc')
     Source('faults.cc')
-    Source('intregfile.cc')
     Source('isa.cc')
     Source('miscregfile.cc')
     Source('pagetable.cc')
diff --git a/src/arch/sparc/intregfile.cc b/src/arch/sparc/intregfile.cc
deleted file mode 100644 (file)
index 54c30d1..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2003-2005 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: Gabe Black
- *          Ali Saidi
- */
-
-#include "arch/sparc/intregfile.hh"
-#include "base/trace.hh"
-#include "base/misc.hh"
-#include "sim/serialize.hh"
-
-#include <string.h>
-
-using namespace SparcISA;
-using namespace std;
-
-class Checkpoint;
-
-void IntRegFile::clear()
-{
-    memset(regs, 0, sizeof(IntReg) * NumIntRegs);
-}
-
-IntRegFile::IntRegFile()
-{
-    clear();
-}
-
-IntReg IntRegFile::readReg(int intReg)
-{
-    DPRINTF(IntRegs, "Read register %d = 0x%x\n", intReg, regs[intReg]);
-    return regs[intReg];
-}
-
-void IntRegFile::setReg(int intReg, const IntReg &val)
-{
-    if(intReg)
-    {
-        DPRINTF(IntRegs, "Wrote register %d = 0x%x\n", intReg, val);
-        regs[intReg] = val;
-    }
-    return;
-}
-
-void IntRegFile::serialize(std::ostream &os)
-{
-    SERIALIZE_ARRAY(regs, NumIntRegs);
-    SERIALIZE_ARRAY(microRegs, NumMicroIntRegs);
-}
-
-void IntRegFile::unserialize(Checkpoint *cp, const std::string &section)
-{
-    UNSERIALIZE_ARRAY(regs, NumIntRegs);
-    UNSERIALIZE_ARRAY(microRegs, NumMicroIntRegs);
-}
index f669f6b0d85324cd746a97a3b30d6fce21f02fed..0165fca10a52de05874339ce73a0dcadf4bca71a 100644 (file)
 #ifndef __ARCH_SPARC_INTREGFILE_HH__
 #define __ARCH_SPARC_INTREGFILE_HH__
 
-#include "arch/sparc/isa_traits.hh"
-#include "arch/sparc/types.hh"
-#include "base/bitfield.hh"
-
-#include <string>
-
-class Checkpoint;
+#include "arch/sparc/sparc_traits.hh"
 
 namespace SparcISA
 {
     const int NumIntArchRegs = 32;
     const int NumIntRegs = (MaxGL + 1) * 8 + NWindows * 16 + NumMicroIntRegs;
-
-    class IntRegFile
-    {
-      protected:
-        IntReg microRegs[NumMicroIntRegs];
-        IntReg regs[NumIntRegs];
-
-      public:
-
-        void clear();
-
-        IntRegFile();
-
-        IntReg readReg(int intReg);
-
-        void setReg(int intReg, const IntReg &val);
-
-        void serialize(std::ostream &os);
-
-        void unserialize(Checkpoint *cp, const std::string &section);
-    };
 }
 
 #endif
index 7775e858e369209643ed2a692b08a835b38777a2..137e91fbde1b6a87def6527ce440cec2b49bb8fc 100644 (file)
@@ -32,6 +32,7 @@
 #define __ARCH_SPARC_PREDECODER_HH__
 
 #include "arch/sparc/types.hh"
+#include "base/bitfield.hh"
 #include "base/misc.hh"
 #include "base/types.hh"
 #include "cpu/thread_context.hh"
index 83a3dbcc280b01c56bd87e94b582097dbfe3bfaa..e48bb07feb9e8a7562008f26e212e8e230d7c9a0 100644 (file)
@@ -68,25 +68,9 @@ void RegFile::setNextNPC(Addr val)
     nnpc = val;
 }
 
-void RegFile::clear()
-{
-    intRegFile.clear();
-}
-
-IntReg RegFile::readIntReg(int intReg)
-{
-    return intRegFile.readReg(intReg);
-}
-
-void RegFile::setIntReg(int intReg, const IntReg &val)
-{
-    intRegFile.setReg(intReg, val);
-}
-
 void
 RegFile::serialize(EventManager *em, ostream &os)
 {
-    intRegFile.serialize(os);
     SERIALIZE_SCALAR(pc);
     SERIALIZE_SCALAR(npc);
     SERIALIZE_SCALAR(nnpc);
@@ -95,7 +79,6 @@ RegFile::serialize(EventManager *em, ostream &os)
 void
 RegFile::unserialize(EventManager *em, Checkpoint *cp, const string &section)
 {
-    intRegFile.unserialize(cp, section);
     UNSERIALIZE_SCALAR(pc);
     UNSERIALIZE_SCALAR(npc);
     UNSERIALIZE_SCALAR(nnpc);
index c28a5274fd1912f41916ba7c2a3515bc1fab4f9f..c3c53a414901e2d684b6c8e707dc3ec579392698 100644 (file)
@@ -61,16 +61,10 @@ namespace SparcISA
         Addr readNextNPC();
         void setNextNPC(Addr val);
 
-      protected:
-        IntRegFile intRegFile;          // integer register file
-
       public:
 
-        void clear();
-
-        IntReg readIntReg(int intReg);
-
-        void setIntReg(int intReg, const IntReg &val);
+        void clear()
+        {}
 
         void serialize(EventManager *em, std::ostream &os);
         void unserialize(EventManager *em, Checkpoint *cp,
index 157a703e29bccf1312518493c8517a8fb45e7276..f500089f390ab2f90c1cdb777f22f98a8c54c5bb 100644 (file)
@@ -94,7 +94,6 @@ if env['TARGET_ISA'] == 'x86':
     Source('insts/microop.cc')
     Source('insts/microregop.cc')
     Source('insts/static_inst.cc')
-    Source('intregfile.cc')
     Source('isa.cc')
     Source('miscregfile.cc')
     Source('pagetable.cc')
diff --git a/src/arch/x86/intregfile.cc b/src/arch/x86/intregfile.cc
deleted file mode 100644 (file)
index 58a37cb..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (c) 2003-2007 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: Gabe Black
- */
-
-/*
- * Copyright (c) 2007 The Hewlett-Packard Development Company
- * All rights reserved.
- *
- * Redistribution and use of this software in source and binary forms,
- * with or without modification, are permitted provided that the
- * following conditions are met:
- *
- * The software must be used only for Non-Commercial Use which means any
- * use which is NOT directed to receiving any direct monetary
- * compensation for, or commercial advantage from such use.  Illustrative
- * examples of non-commercial use are academic research, personal study,
- * teaching, education and corporate research & development.
- * Illustrative examples of commercial use are distributing products for
- * commercial advantage and providing services using the software for
- * commercial advantage.
- *
- * If you wish to use this software or functionality therein that may be
- * covered by patents for commercial use, please contact:
- *     Director of Intellectual Property Licensing
- *     Office of Strategy and Technology
- *     Hewlett-Packard Company
- *     1501 Page Mill Road
- *     Palo Alto, California  94304
- *
- * 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 HOLDER(s), HEWLETT-PACKARD COMPANY, nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.  No right of
- * sublicense is granted herewith.  Derivatives of the software and
- * output created using the software may be prepared, but only for
- * Non-Commercial Uses.  Derivatives of the software may be shared with
- * others provided: (i) the others agree to abide by the list of
- * conditions herein which includes the Non-Commercial Use restrictions;
- * and (ii) such Derivatives of the software include the above copyright
- * notice to acknowledge the contribution from this software where
- * applicable, this list of conditions and the disclaimer below.
- *
- * 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: Gabe Black
- */
-
-#include "arch/x86/intregfile.hh"
-#include "base/misc.hh"
-#include "base/trace.hh"
-#include "sim/serialize.hh"
-
-#include <string.h>
-
-using namespace X86ISA;
-using namespace std;
-
-class Checkpoint;
-
-int IntRegFile::flattenIndex(int reg)
-{
-    return reg;
-}
-
-void IntRegFile::clear()
-{
-    memset(regs, 0, sizeof(IntReg) * NumIntRegs);
-}
-
-IntReg IntRegFile::readReg(int intReg)
-{
-    DPRINTF(IntRegs, "Read int reg %d and got value %#x\n",
-            intReg, regs[intReg]);
-    return regs[intReg];
-}
-
-void IntRegFile::setReg(int intReg, const IntReg &val)
-{
-    DPRINTF(IntRegs, "Setting int reg %d to value %#x\n",
-            intReg, val);
-    regs[intReg] = val;
-}
-
-void IntRegFile::serialize(std::ostream &os)
-{
-    SERIALIZE_ARRAY(regs, NumIntRegs);
-}
-
-void IntRegFile::unserialize(Checkpoint *cp, const std::string &section)
-{
-    UNSERIALIZE_ARRAY(regs, NumIntRegs);
-}
index 131245352a5fe37aed88a1b0d919cb515b34dc0b..a0adcc7e690cd0fff90ecb4cbd5bf0c59faf071b 100644 (file)
 #define __ARCH_X86_INTREGFILE_HH__
 
 #include "arch/x86/intregs.hh"
-#include "arch/x86/types.hh"
 #include "arch/x86/x86_traits.hh"
 
-#include <string>
-
-class Checkpoint;
-
 namespace X86ISA
 {
-    class Regfile;
-
     const int NumIntArchRegs = NUM_INTREGS;
     const int NumIntRegs =
         NumIntArchRegs + NumMicroIntRegs +
         NumPseudoIntRegs + NumImplicitIntRegs;
-
-    class IntRegFile
-    {
-      protected:
-        IntReg regs[NumIntRegs];
-
-      public:
-
-        int flattenIndex(int reg);
-
-        void clear();
-
-        IntReg readReg(int intReg);
-
-        void setReg(int intReg, const IntReg &val);
-
-        void serialize(std::ostream &os);
-
-        void unserialize(Checkpoint *cp, const std::string &section);
-    };
 }
 
 #endif //__ARCH_X86_INTREGFILE__
index 70680703cd15091819c3b8e58cbe70b555b62167..54bc0999dc1f8e2603b57479169e5202a6f5ed85 100644 (file)
@@ -127,21 +127,6 @@ Addr RegFile::readNextNPC()
 void RegFile::setNextNPC(Addr val)
 { }
 
-void RegFile::clear()
-{
-    intRegFile.clear();
-}
-
-IntReg RegFile::readIntReg(int intReg)
-{
-    return intRegFile.readReg(intReg);
-}
-
-void RegFile::setIntReg(int intReg, const IntReg &val)
-{
-    intRegFile.setReg(intReg, val);
-}
-
 void
 X86ISA::copyMiscRegs(ThreadContext *src, ThreadContext *dest)
 {
@@ -167,15 +152,3 @@ X86ISA::copyRegs(ThreadContext *src, ThreadContext *dest)
     dest->setPC(src->readPC());
     dest->setNextPC(src->readNextPC());
 }
-
-void
-RegFile::serialize(EventManager *em, std::ostream &os)
-{
-    intRegFile.serialize(os);
-}
-
-void
-RegFile::unserialize(EventManager *em, Checkpoint *cp, const string &section)
-{
-    intRegFile.unserialize(cp, section);
-}
index d1dbe3823e5cc8e8f552097b97193e49e8927ce7..6f7e9120cccfb06ffe84426ee31d9b1f77bf50d4 100644 (file)
@@ -97,20 +97,17 @@ namespace X86ISA
         Addr readNextNPC();
         void setNextNPC(Addr val);
 
-      protected:
-        IntRegFile intRegFile; // integer register file
-
       public:
 
-        void clear();
-
-        IntReg readIntReg(int intReg);
+        void clear()
+        {}
 
-        void setIntReg(int intReg, const IntReg &val);
+        void serialize(EventManager *em, std::ostream &os)
+        {}
 
-        void serialize(EventManager *em, std::ostream &os);
         void unserialize(EventManager *em, Checkpoint *cp,
-            const std::string &section);
+                const std::string &section)
+        {}
     };
 
     void copyRegs(ThreadContext *src, ThreadContext *dest);
index 248e78314828ec3fabed643866fa699cb741a621..36de86986f03fa04a7a29e4b7a2fd8bde1d37e0d 100644 (file)
@@ -264,7 +264,7 @@ InOrderCPU::InOrderCPU(Params *params)
         squashSeqNum[tid] = MaxAddr;
         lastSquashCycle[tid] = 0;
 
-        intRegFile[tid].clear();
+        memset(intRegs[tid], 0, sizeof(intRegs[tid]));
         memset(floatRegs.i[tid], 0, sizeof(floatRegs.i[tid]));
         isa[tid].clear();
 
@@ -886,7 +886,7 @@ InOrderCPU::setNextNPC(uint64_t new_NNPC, ThreadID tid)
 uint64_t
 InOrderCPU::readIntReg(int reg_idx, ThreadID tid)
 {
-    return intRegFile[tid].readReg(reg_idx);
+    return intRegs[tid][reg_idx];
 }
 
 FloatReg
@@ -904,7 +904,7 @@ InOrderCPU::readFloatRegBits(int reg_idx, ThreadID tid)
 void
 InOrderCPU::setIntReg(int reg_idx, uint64_t val, ThreadID tid)
 {
-    intRegFile[tid].setReg(reg_idx, val);
+    intRegs[tid][reg_idx] = val;
 }
 
 
index f4cc72e9c63c37306302d1eed255ff226933de4e..31010a01fc66a9eaf63870ff927e16ba85a4dff3 100644 (file)
@@ -258,11 +258,11 @@ class InOrderCPU : public BaseCPU
     TheISA::IntReg nextNPC[ThePipeline::MaxThreads];
 
     /** The Register File for the CPU */
-    TheISA::IntRegFile intRegFile[ThePipeline::MaxThreads];;
     union {
         FloatReg f[ThePipeline::MaxThreads][TheISA::NumFloatRegs];
         FloatRegBits i[ThePipeline::MaxThreads][TheISA::NumFloatRegs];
     } floatRegs;
+    TheISA::IntReg intRegs[ThePipeline::MaxThreads][TheISA::NumIntRegs];
 
     /** ISA state */
     TheISA::ISA isa[ThePipeline::MaxThreads];
index 505222b379362c72f6fe6ebf24b33e9f75471429..d88e02ff1ca4ce6c7e468f438711b5cd80712af1 100644 (file)
@@ -71,7 +71,7 @@ SimpleThread::SimpleThread(BaseCPU *_cpu, int _thread_num, System *_sys,
 
     quiesceEvent = new EndQuiesceEvent(tc);
 
-    regs.clear();
+    clearArchRegs();
 
     if (cpu->params()->profile) {
         profile = new FunctionProfile(system->kernelSymtab);
@@ -96,7 +96,7 @@ SimpleThread::SimpleThread(BaseCPU *_cpu, int _thread_num, Process *_process,
     : ThreadState(_cpu, _thread_num, _process, _asid),
       cpu(_cpu), itb(_itb), dtb(_dtb)
 {
-    regs.clear();
+    clearArchRegs();
     tc = new ProxyThreadContext<SimpleThread>(this);
 }
 
@@ -193,6 +193,7 @@ SimpleThread::serialize(ostream &os)
     ThreadState::serialize(os);
     regs.serialize(cpu, os);
     SERIALIZE_ARRAY(floatRegs.i, TheISA::NumFloatRegs);
+    SERIALIZE_ARRAY(intRegs, TheISA::NumIntRegs);
     // thread_num and cpu_id are deterministic from the config
 }
 
@@ -203,6 +204,7 @@ SimpleThread::unserialize(Checkpoint *cp, const std::string &section)
     ThreadState::unserialize(cp, section);
     regs.unserialize(cpu, cp, section);
     UNSERIALIZE_ARRAY(floatRegs.i, TheISA::NumFloatRegs);
+    UNSERIALIZE_ARRAY(intRegs, TheISA::NumIntRegs);
     // thread_num and cpu_id are deterministic from the config
 }
 
index 5e29fbb6dfcaad404927b83340fb578231e7c66c..97c02d7b8b8d43b76b6d9152515bb2693886a0a0 100644 (file)
@@ -36,6 +36,7 @@
 #include "arch/isa_traits.hh"
 #include "arch/regfile.hh"
 #include "arch/tlb.hh"
+#include "arch/types.hh"
 #include "base/types.hh"
 #include "config/full_system.hh"
 #include "cpu/thread_context.hh"
@@ -103,6 +104,7 @@ class SimpleThread : public ThreadState
         FloatReg f[TheISA::NumFloatRegs];
         FloatRegBits i[TheISA::NumFloatRegs];
     } floatRegs;
+    TheISA::IntReg intRegs[TheISA::NumIntRegs];
     TheISA::ISA isa;    // one "instance" of the current ISA.
 
   public:
@@ -230,6 +232,7 @@ class SimpleThread : public ThreadState
     void clearArchRegs()
     {
         regs.clear();
+        memset(intRegs, 0, sizeof(intRegs));
         memset(floatRegs.i, 0, sizeof(floatRegs.i));
     }
 
@@ -239,7 +242,7 @@ class SimpleThread : public ThreadState
     uint64_t readIntReg(int reg_idx)
     {
         int flatIndex = isa.flattenIntIndex(reg_idx);
-        return regs.readIntReg(flatIndex);
+        return intRegs[flatIndex];
     }
 
     FloatReg readFloatReg(int reg_idx)
@@ -257,7 +260,7 @@ class SimpleThread : public ThreadState
     void setIntReg(int reg_idx, uint64_t val)
     {
         int flatIndex = isa.flattenIntIndex(reg_idx);
-        regs.setIntReg(flatIndex, val);
+        intRegs[flatIndex] = val;
     }
 
     void setFloatReg(int reg_idx, FloatReg val)