diff options
Diffstat (limited to 'src/arch/mips')
-rw-r--r-- | src/arch/mips/MipsISA.py | 47 | ||||
-rw-r--r-- | src/arch/mips/SConscript | 1 | ||||
-rw-r--r-- | src/arch/mips/isa.cc | 20 | ||||
-rw-r--r-- | src/arch/mips/isa.hh | 11 |
4 files changed, 72 insertions, 7 deletions
diff --git a/src/arch/mips/MipsISA.py b/src/arch/mips/MipsISA.py new file mode 100644 index 000000000..bc969a906 --- /dev/null +++ b/src/arch/mips/MipsISA.py @@ -0,0 +1,47 @@ +# Copyright (c) 2012 ARM Limited +# All rights reserved. +# +# The license below extends only to copyright in the software and shall +# not be construed as granting a license to any other intellectual +# property including but not limited to intellectual property relating +# to a hardware implementation of the functionality of the software +# licensed hereunder. You may use the software subject to the license +# terms below provided that you ensure that this notice is replicated +# unmodified and in its entirety in all distributions of the software, +# modified or unmodified, in source code or in binary form. +# +# 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: Andreas Sandberg + +from m5.SimObject import SimObject +from m5.params import * + +class MipsISA(SimObject): + type = 'MipsISA' + cxx_class = 'MipsISA::ISA' + cxx_header = "arch/mips/isa.hh" + + num_threads = Param.UInt8(1, "Maximum number this ISA can handle") + num_vpes = Param.UInt8(1, "Maximum number of vpes this ISA can handle") diff --git a/src/arch/mips/SConscript b/src/arch/mips/SConscript index 15b4ffc51..944fc8e55 100644 --- a/src/arch/mips/SConscript +++ b/src/arch/mips/SConscript @@ -53,6 +53,7 @@ if env['TARGET_ISA'] == 'mips': Source('vtophys.cc') SimObject('MipsInterrupts.py') + SimObject('MipsISA.py') SimObject('MipsSystem.py') SimObject('MipsTLB.py') diff --git a/src/arch/mips/isa.cc b/src/arch/mips/isa.cc index f6de102cd..891ed5e2f 100644 --- a/src/arch/mips/isa.cc +++ b/src/arch/mips/isa.cc @@ -36,6 +36,7 @@ #include "cpu/base.hh" #include "cpu/thread_context.hh" #include "debug/MipsPRA.hh" +#include "params/MipsISA.hh" namespace MipsISA { @@ -87,11 +88,10 @@ ISA::miscRegNames[NumMiscRegs] = "LLFlag" }; -ISA::ISA(uint8_t num_threads, uint8_t num_vpes) +ISA::ISA(Params *p) + : SimObject(p), + numThreads(p->num_threads), numVpes(p->num_vpes) { - numThreads = num_threads; - numVpes = num_vpes; - miscRegFile.resize(NumMiscRegs); bankType.resize(NumMiscRegs); @@ -142,6 +142,12 @@ ISA::ISA(uint8_t num_threads, uint8_t num_vpes) clear(); } +const MipsISAParams * +ISA::params() const +{ + return dynamic_cast<const Params *>(_params); +} + void ISA::clear() { @@ -586,3 +592,9 @@ ISA::CP0Event::unscheduleEvent() } } + +MipsISA::ISA * +MipsISAParams::create() +{ + return new MipsISA::ISA(this); +} diff --git a/src/arch/mips/isa.hh b/src/arch/mips/isa.hh index a313b4382..3f4477132 100644 --- a/src/arch/mips/isa.hh +++ b/src/arch/mips/isa.hh @@ -39,20 +39,24 @@ #include "arch/mips/types.hh" #include "sim/eventq.hh" #include "sim/fault_fwd.hh" +#include "sim/sim_object.hh" class BaseCPU; class Checkpoint; class EventManager; +struct MipsISAParams; class ThreadContext; namespace MipsISA { - class ISA + class ISA : public SimObject { public: // The MIPS name for this file is CP0 or Coprocessor 0 typedef ISA CP0; + typedef MipsISAParams Params; + protected: // Number of threads and vpes an individual ISA state can handle uint8_t numThreads; @@ -69,8 +73,6 @@ namespace MipsISA std::vector<BankType> bankType; public: - ISA(uint8_t num_threads = 1, uint8_t num_vpes = 1); - void clear(); void configCP(); @@ -155,6 +157,9 @@ namespace MipsISA static std::string miscRegNames[NumMiscRegs]; public: + const Params *params() const; + + ISA(Params *p); int flattenIntIndex(int reg) |