cpu->thread->setFloatReg(ZeroReg, 0.0);
}
-int
-ISA::getInstAsid()
-{
- return ITB_ASN_ASN(ipr[IPR_ITB_ASN]);
-}
-
-int
-ISA::getDataAsid()
-{
- return DTB_ASN_ASN(ipr[IPR_DTB_ASN]);
-}
-
#endif
////////////////////////////////////////////////////////////////////////
public:
- // These functions should be removed once the simplescalar cpu
- // model has been replaced.
- int getInstAsid();
- int getDataAsid();
-
MiscReg readMiscRegNoEffect(int misc_reg, ThreadID tid = 0);
MiscReg readMiscReg(int misc_reg, ThreadContext *tc, ThreadID tid = 0);
miscRegFile.reset(core_name, num_threads, num_vpes, _cpu);
}
- int instAsid()
- {
- return miscRegFile.getInstAsid();
- }
-
- int dataAsid()
- {
- return miscRegFile.getDataAsid();
- }
-
void clear();
MiscReg readMiscRegNoEffect(int miscReg);
*/
}
-
-/*int
-MipsISA::MiscRegFile::getInstAsid()
-{
- return AlphaISA::ITB_ASN_ASN(ipr[IPR_ITB_ASN]);
-}
-
-int
-MipsISA::MiscRegFile::getDataAsid()
-{
- return AlphaISA::DTB_ASN_ASN(ipr[IPR_DTB_ASN]);
- }*/
-
-
-
#endif // FULL_SYSTEM || BARE_IRON
}
}
-int MiscRegFile::getInstAsid()
-{
- MiscReg Entry_Hi = readRegNoEffect(EntryHi);
- return bits(Entry_Hi,EntryHi_ASID_HI,EntryHi_ASID_LO);
-}
-
-int MiscRegFile:: getDataAsid()
-{
- MiscReg EHi = readRegNoEffect(EntryHi);
- return bits(EHi,EntryHi_ASID_HI,EntryHi_ASID_LO);
-}
//@TODO: Use MIPS STYLE CONSTANTS (e.g. TCHALT_H instead of TCH_H)
void
MiscRegFile::reset(std::string core_name, ThreadID num_threads,
void setReg(int misc_reg, const MiscReg &val,
ThreadContext *tc, ThreadID tid = 0);
- int getInstAsid();
- int getDataAsid();
-
//////////////////////////////////////////////////////////
//
// DECLARE INTERFACE THAT WILL ALLOW A MiscRegFile (Cop0)
MiscRegFile miscRegFile;
public:
-
- int instAsid()
- {
- return miscRegFile.getInstAsid();
- }
-
- int dataAsid()
- {
- return miscRegFile.getDataAsid();
- }
-
void clear();
MiscReg readMiscRegNoEffect(int miscReg);
void setReg(int miscReg,
const MiscReg &val, ThreadContext * tc);
- int getInstAsid()
- {
- return priContext | (uint32_t)partId << 13;
- }
-
- int getDataAsid()
- {
- return priContext | (uint32_t)partId << 13;
- }
-
void serialize(EventManager *em, std::ostream & os);
void unserialize(EventManager *em, Checkpoint *cp,
MiscRegFile miscRegFile;
public:
- int instAsid()
- {
- //XXX This doesn't make sense in x86
- return 0;
- }
-
- int dataAsid()
- {
- //XXX This doesn't make sense in x86
- return 0;
- }
-
void clear();
MiscReg readMiscRegNoEffect(int miscReg);
systemPtr = NULL;
#else
process = p->process;
- thread = new SimpleThread(this, /* thread_num */ 0, process,
- /* asid */ 0);
+ thread = new SimpleThread(this, /* thread_num */ 0, process);
tc = thread->getTC();
threadContexts.push_back(tc);
DPRINTF(InOrderCPU, "Workload[%i] process is %#x\n",
tid, this->thread[tid]);
this->thread[tid] =
- new Thread(this, tid, params->workload[tid], tid);
+ new Thread(this, tid, params->workload[tid]);
} else {
//Allocate Empty thread so M5 can use later
//when scheduling threads to CPU
Process* dummy_proc = params->workload[0];
- this->thread[tid] = new Thread(this, tid, dummy_proc, tid);
+ this->thread[tid] = new Thread(this, tid, dummy_proc);
}
// Setup the TC that will serve as the interface to the threads/CPU.
return cpuEventNum++;
}
- /** Get instruction asid. */
- int getInstAsid(ThreadID tid)
- { return thread[tid]->getInstAsid(); }
-
- /** Get data asid. */
- int getDataAsid(ThreadID tid)
- { return thread[tid]->getDataAsid(); }
-
/** Register file accessors */
uint64_t readIntReg(int reg_idx, ThreadID tid);
InOrderThreadState(InOrderCPU *_cpu, ThreadID _thread_num,
- Process *_process, int _asid)
+ Process *_process)
: ThreadState(reinterpret_cast<BaseCPU*>(_cpu), 0/*_thread_num*/,
- _process, 0/*_asid*/),
+ _process),
cpu(_cpu), inSyscall(0), trapPending(0)
{ }
tid, this->thread[tid]);
this->thread[tid] = new typename FullO3CPU<Impl>::Thread(
(typename Impl::O3CPU *)(this),
- tid, params->workload[tid], tid);
+ tid, params->workload[tid]);
//usedTids[tid] = true;
//threadMap[tid] = tid;
this->thread[tid] = new typename FullO3CPU<Impl>::Thread(
(typename Impl::O3CPU *)(this),
- tid, dummy_proc, tid);
+ tid, dummy_proc);
//usedTids[tid] = false;
}
#endif // !FULL_SYSTEM
/** Check if this address is a valid data address. */
bool validDataAddr(Addr addr) { return true; }
-
- /** Get instruction asid. */
- int getInstAsid(ThreadID tid)
- { return isa[tid].instAsid(); }
-
- /** Get data asid. */
- int getDataAsid(ThreadID tid)
- { return isa[tid].dataAsid(); }
-#else
- /** Get instruction asid. */
- int getInstAsid(ThreadID tid)
- { return thread[tid]->getInstAsid(); }
-
- /** Get data asid. */
- int getDataAsid(ThreadID tid)
- { return thread[tid]->getDataAsid(); }
-
#endif
/** Register accessors. Index refers to the physical register index. */
profilePC = 3;
}
#else
- O3ThreadState(O3CPU *_cpu, int _thread_num, Process *_process, int _asid)
- : ThreadState(_cpu, _thread_num, _process, _asid),
+ O3ThreadState(O3CPU *_cpu, int _thread_num, Process *_process)
+ : ThreadState(_cpu, _thread_num, _process),
cpu(_cpu), inSyscall(0), trapPending(0)
{ }
#endif
miscRegFile.clear();
}
#else
- OzoneThreadState(CPUType *_cpu, int _thread_num, Process *_process,
- int _asid)
- : ThreadState(_cpu, -1, _thread_num, _process, _asid),
+ OzoneThreadState(CPUType *_cpu, int _thread_num, Process *_process)
+ : ThreadState(_cpu, -1, _thread_num, _process),
cpu(_cpu), inSyscall(0), trapPending(0)
{
miscRegFile.clear();
thread = new SimpleThread(this, 0, p->system, p->itb, p->dtb);
#else
thread = new SimpleThread(this, /* thread_num */ 0, p->workload[0],
- p->itb, p->dtb, /* asid */ 0);
+ p->itb, p->dtb);
#endif // !FULL_SYSTEM
thread->setStatus(ThreadContext::Halted);
}
#else
SimpleThread::SimpleThread(BaseCPU *_cpu, int _thread_num, Process *_process,
- TheISA::TLB *_itb, TheISA::TLB *_dtb, int _asid)
- : ThreadState(_cpu, _thread_num, _process, _asid),
+ TheISA::TLB *_itb, TheISA::TLB *_dtb)
+ : ThreadState(_cpu, _thread_num, _process),
cpu(_cpu), itb(_itb), dtb(_dtb)
{
clearArchRegs();
#if FULL_SYSTEM
: ThreadState(NULL, -1)
#else
- : ThreadState(NULL, -1, NULL, -1)
+ : ThreadState(NULL, -1, NULL)
#endif
{
tc = new ProxyThreadContext<SimpleThread>(this);
bool use_kernel_stats = true);
#else
SimpleThread(BaseCPU *_cpu, int _thread_num, Process *_process,
- TheISA::TLB *_itb, TheISA::TLB *_dtb, int _asid);
+ TheISA::TLB *_itb, TheISA::TLB *_dtb);
#endif
SimpleThread();
}
#if FULL_SYSTEM
- int getInstAsid() { return isa.instAsid(); }
- int getDataAsid() { return isa.dataAsid(); }
-
void dumpFuncProfile();
Fault hwrei();
#if FULL_SYSTEM
ThreadState::ThreadState(BaseCPU *cpu, ThreadID _tid)
#else
-ThreadState::ThreadState(BaseCPU *cpu, ThreadID _tid,
- Process *_process, short _asid)
+ThreadState::ThreadState(BaseCPU *cpu, ThreadID _tid, Process *_process)
#endif
: numInst(0), numLoad(0), _status(ThreadContext::Halted),
baseCpu(cpu), _threadId(_tid), lastActivate(0), lastSuspend(0),
profile(NULL), profileNode(NULL), profilePC(0), quiesceEvent(NULL),
kernelStats(NULL), physPort(NULL), virtPort(NULL),
#else
- port(NULL), process(_process), asid(_asid),
+ port(NULL), process(_process),
#endif
funcExeInst(0), storeCondFailures(0)
{
#if FULL_SYSTEM
ThreadState(BaseCPU *cpu, ThreadID _tid);
#else
- ThreadState(BaseCPU *cpu, ThreadID _tid, Process *_process, short _asid);
+ ThreadState(BaseCPU *cpu, ThreadID _tid, Process *_process);
#endif
~ThreadState();
TranslatingPort *getMemPort();
void setMemPort(TranslatingPort *_port) { port = _port; }
-
- int getInstAsid() { return asid; }
- int getDataAsid() { return asid; }
#endif
/** Sets the current instruction being committed. */
TranslatingPort *port;
Process *process;
-
- // Address space ID. Note that this is used for TIMING cache
- // simulation only; all functional memory accesses should use
- // one of the FunctionalMemory pointers above.
- short asid;
-
#endif
/** Current instruction the thread is committing. Only set and