cpu: Remove hwrei from the generic interfaces.
authorGabe Black <gabeblack@google.com>
Sun, 28 Apr 2019 03:51:22 +0000 (20:51 -0700)
committerGabe Black <gabeblack@google.com>
Tue, 30 Apr 2019 07:37:51 +0000 (07:37 +0000)
This mechanism is specific to Alpha and doesn't belong sprinkled around
the CPU's generic mechanisms.

Change-Id: I87904d1a08df2b03eb770205e2c4b94db25201a1
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18432
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/arch/alpha/ev5.cc
src/cpu/checker/cpu.hh
src/cpu/exec_context.hh
src/cpu/minor/exec_context.hh
src/cpu/o3/cpu.cc
src/cpu/o3/cpu.hh
src/cpu/o3/dyn_inst.hh
src/cpu/o3/dyn_inst_impl.hh
src/cpu/simple/exec_context.hh
src/cpu/simple_thread.cc
src/cpu/simple_thread.hh

index e3e025e2f89a7ba289fe32e92c8c58b747e7a066..e64523d9c7c6a832ed6b682289575d00226e35f9 100644 (file)
@@ -485,28 +485,6 @@ copyIprs(ThreadContext *src, ThreadContext *dest)
 
 using namespace AlphaISA;
 
-Fault
-SimpleThread::hwrei()
-{
-    auto *stats = dynamic_cast<AlphaISA::Kernel::Statistics *>(kernelStats);
-    assert(stats || !kernelStats);
-
-    PCState pc = pcState();
-    if (!(pc.pc() & 0x3))
-        return std::make_shared<UnimplementedOpcodeFault>();
-
-    pc.npc(readMiscRegNoEffect(IPR_EXC_ADDR));
-    pcState(pc);
-
-    CPA::cpa()->swAutoBegin(this, pc.npc());
-
-    if (stats)
-        stats->hwrei();
-
-    // FIXME: XXX check for interrupts? XXX
-    return NoFault;
-}
-
 /**
  * Check for special simulator handling of specific PAL calls.
  * If return value is false, actual PAL call will be suppressed.
index 96f6cc7d4c6f2506b6e44108b34915f789604ca1..acbe94f5d4932c46057c67dcc7186a658d18f903 100644 (file)
@@ -539,7 +539,6 @@ class CheckerCPU : public BaseCPU, public ExecContext
     void setStCondFailures(unsigned int sc_failures) override {}
     /////////////////////////////////////////////////////
 
-    Fault hwrei() override { return thread->hwrei(); }
     bool simPalCheck(int palFunc) override
     { return thread->simPalCheck(palFunc); }
     void wakeup(ThreadID tid) override { }
index 58d756c6d5b97c8f22e93828c0d0136b5504e2d2..0477f3f65aa63e6812dec2f5995a98f0c5ccfa96 100644 (file)
@@ -314,12 +314,6 @@ class ExecContext {
      * @name Alpha-Specific Interfaces
      */
 
-    /**
-     * Somewhat Alpha-specific function that handles returning from an
-     * error or interrupt.
-     */
-    virtual Fault hwrei() = 0;
-
     /**
      * Check for special simulator handling of specific PAL calls.  If
      * return value is false, actual PAL call will be suppressed.
index 4ac621aea17fe711f90b37d3220af32761711f63..03f8e09c9b2de6adceb5e2d73a5c034b98972e6f 100644 (file)
@@ -365,16 +365,6 @@ class ExecContext : public ::ExecContext
         return thread.setMiscReg(reg.index(), val);
     }
 
-    Fault
-    hwrei() override
-    {
-#if THE_ISA == ALPHA_ISA
-        return thread.hwrei();
-#else
-        return NoFault;
-#endif
-    }
-
     bool
     simPalCheck(int palFunc) override
     {
index 70417d51f821d6319947cdfab2d99bd5c38c8bd8..ba6e80ff24a981adde2fa2b0e5a229fec6be6afe 100644 (file)
@@ -917,24 +917,6 @@ FullO3CPU<Impl>::removeThread(ThreadID tid)
 */
 }
 
-template <class Impl>
-Fault
-FullO3CPU<Impl>::hwrei(ThreadID tid)
-{
-#if THE_ISA == ALPHA_ISA
-    // Need to clear the lock flag upon returning from an interrupt.
-    this->setMiscRegNoEffect(AlphaISA::MISCREG_LOCKFLAG, false, tid);
-
-    auto *stats = dynamic_cast<AlphaISA::Kernel::Statistics *>(
-            this->thread[tid]->kernelStats);
-    assert(stats);
-    stats->hwrei();
-
-    // FIXME: XXX check for interrupts? XXX
-#endif
-    return NoFault;
-}
-
 template <class Impl>
 bool
 FullO3CPU<Impl>::simPalCheck(int palFunc, ThreadID tid)
index c2c48535f92867df85d4c1333b2f2a3f2d1fc102..bd1479accc4bb69f452d6fb69c4a7f38bcdde0b4 100644 (file)
@@ -385,9 +385,6 @@ class FullO3CPU : public BaseO3CPU
     /** Traps to handle given fault. */
     void trap(const Fault &fault, ThreadID tid, const StaticInstPtr &inst);
 
-    /** HW return from error interrupt. */
-    Fault hwrei(ThreadID tid);
-
     bool simPalCheck(int palFunc, ThreadID tid);
 
     /** Check if a change in renaming is needed for vector registers.
index 01886606eb5f6ec474f1611a9715ca5aba345b88..9b6c1fbb8f5ceff23c7b3e5c6fd6beb78e072b0f 100644 (file)
@@ -248,8 +248,6 @@ class BaseO3DynInst : public BaseDynInst<Impl>
             }
         }
     }
-    /** Calls hardware return from error interrupt. */
-    Fault hwrei() override;
     /** Traps to handle specified fault. */
     void trap(const Fault &fault);
     bool simPalCheck(int palFunc) override;
index 03437a5ae9b220d5d0308d7fc6de625492976b04..5fb59737964041594caaabc7bc808e799efd64f3 100644 (file)
@@ -184,34 +184,6 @@ BaseO3DynInst<Impl>::completeAcc(PacketPtr pkt)
     return this->fault;
 }
 
-template <class Impl>
-Fault
-BaseO3DynInst<Impl>::hwrei()
-{
-#if THE_ISA == ALPHA_ISA
-    // Can only do a hwrei when in pal mode.
-    if (!(this->instAddr() & 0x3))
-        return std::make_shared<AlphaISA::UnimplementedOpcodeFault>();
-
-    // Set the next PC based on the value of the EXC_ADDR IPR.
-    AlphaISA::PCState pc = this->pcState();
-    pc.npc(this->cpu->readMiscRegNoEffect(AlphaISA::IPR_EXC_ADDR,
-                                          this->threadNumber));
-    this->pcState(pc);
-    if (CPA::available()) {
-        ThreadContext *tc = this->cpu->tcBase(this->threadNumber);
-        CPA::cpa()->swAutoBegin(tc, this->nextInstAddr());
-    }
-
-    // Tell CPU to clear any state it needs to if a hwrei is taken.
-    this->cpu->hwrei(this->threadNumber);
-#else
-
-#endif
-    // FIXME: XXX check for interrupts? XXX
-    return NoFault;
-}
-
 template <class Impl>
 void
 BaseO3DynInst<Impl>::trap(const Fault &fault)
index b49747dd2462d3807141726ceac63d5b4c91c50f..938bb784a178a3269a7b7bbae185817a4998d70e 100644 (file)
@@ -502,12 +502,6 @@ class SimpleExecContext : public ExecContext {
     /** Returns a pointer to the ThreadContext. */
     ThreadContext *tcBase() override { return thread->getTC(); }
 
-    /**
-     * Somewhat Alpha-specific function that handles returning from an
-     * error or interrupt.
-     */
-    Fault hwrei() override { return thread->hwrei(); }
-
     /**
      * Check for special simulator handling of specific PAL calls.  If
      * return value is false, actual PAL call will be suppressed.
index 7fee8ddc709556f05339c97a0942fc5f49a5875f..b676b045199dac4f52a68c742e999b8b23e5206e 100644 (file)
@@ -216,11 +216,6 @@ SimpleThread::copyArchRegs(ThreadContext *src_tc)
 // The following methods are defined in src/arch/alpha/ev5.cc for
 // Alpha.
 #if THE_ISA != ALPHA_ISA
-Fault
-SimpleThread::hwrei()
-{
-    return NoFault;
-}
 
 bool
 SimpleThread::simPalCheck(int palFunc)
index 33f0bbd8a20fa6d5664631bf5bb683f8b7584f9a..71bce3857f2ca7d983517e3a814f025b9882d4fd 100644 (file)
@@ -181,8 +181,6 @@ class SimpleThread : public ThreadState, public ThreadContext
 
     void dumpFuncProfile() override;
 
-    Fault hwrei();
-
     bool simPalCheck(int palFunc);
 
     /*******************************************