thread_state.hh revision 2292
111308Santhony.gutierrez@amd.com 211308Santhony.gutierrez@amd.com#ifndef __CPU_THREAD_STATE_HH__ 311308Santhony.gutierrez@amd.com#define __CPU_THREAD_STATE_HH__ 411308Santhony.gutierrez@amd.com 511308Santhony.gutierrez@amd.com#include "cpu/exec_context.hh" 611308Santhony.gutierrez@amd.com 711308Santhony.gutierrez@amd.com#if FULL_SYSTEM 811308Santhony.gutierrez@amd.comclass EndQuiesceEvent; 911308Santhony.gutierrez@amd.comclass FunctionProfile; 1011308Santhony.gutierrez@amd.comclass ProfileNode; 1111308Santhony.gutierrez@amd.com#else 1211308Santhony.gutierrez@amd.comclass Process; 1311308Santhony.gutierrez@amd.comclass FunctionalMemory; 1411308Santhony.gutierrez@amd.com#endif 1511308Santhony.gutierrez@amd.com 1611308Santhony.gutierrez@amd.comstruct ThreadState { 1711308Santhony.gutierrez@amd.com#if FULL_SYSTEM 1811308Santhony.gutierrez@amd.com ThreadState(int _cpuId, int _tid, FunctionalMemory *_mem) 1911308Santhony.gutierrez@amd.com : cpuId(_cpuId), tid(_tid), mem(_mem), lastActivate(0), lastSuspend(0), 2011308Santhony.gutierrez@amd.com profile(NULL), profileNode(NULL), profilePC(0), quiesceEvent(NULL) 2111308Santhony.gutierrez@amd.com#else 2211308Santhony.gutierrez@amd.com ThreadState(int _cpuId, int _tid, FunctionalMemory *_mem, 2311308Santhony.gutierrez@amd.com Process *_process, short _asid) 2411308Santhony.gutierrez@amd.com : cpuId(_cpuId), tid(_tid), mem(_mem), process(_process), asid(_asid) 2511308Santhony.gutierrez@amd.com#endif 2611308Santhony.gutierrez@amd.com { 2711308Santhony.gutierrez@amd.com funcExeInst = 0; 2811308Santhony.gutierrez@amd.com storeCondFailures = 0; 2911308Santhony.gutierrez@amd.com } 3011308Santhony.gutierrez@amd.com 3111308Santhony.gutierrez@amd.com ExecContext::Status status; 3211308Santhony.gutierrez@amd.com 3311308Santhony.gutierrez@amd.com int cpuId; 3411308Santhony.gutierrez@amd.com 3511308Santhony.gutierrez@amd.com // Index of hardware thread context on the CPU that this represents. 3611308Santhony.gutierrez@amd.com int tid; 3711308Santhony.gutierrez@amd.com 3811308Santhony.gutierrez@amd.com Counter numInst; 3911308Santhony.gutierrez@amd.com Stats::Scalar<> numInsts; 4011308Santhony.gutierrez@amd.com Stats::Scalar<> numMemRefs; 4111308Santhony.gutierrez@amd.com 4211308Santhony.gutierrez@amd.com // number of simulated loads 4311308Santhony.gutierrez@amd.com Counter numLoad; 4411615Sdavid.j.hashe@gmail.com Counter startNumLoad; 4511615Sdavid.j.hashe@gmail.com 4611615Sdavid.j.hashe@gmail.com FunctionalMemory *mem; // functional storage for process address space 4711615Sdavid.j.hashe@gmail.com 4811615Sdavid.j.hashe@gmail.com#if FULL_SYSTEM 4911615Sdavid.j.hashe@gmail.com Tick lastActivate; 5011308Santhony.gutierrez@amd.com Tick lastSuspend; 5111308Santhony.gutierrez@amd.com 5211308Santhony.gutierrez@amd.com FunctionProfile *profile; 5311308Santhony.gutierrez@amd.com ProfileNode *profileNode; 5411308Santhony.gutierrez@amd.com Addr profilePC; 5511308Santhony.gutierrez@amd.com 5611308Santhony.gutierrez@amd.com EndQuiesceEvent *quiesceEvent; 5711308Santhony.gutierrez@amd.com 5811308Santhony.gutierrez@amd.com#else 5911308Santhony.gutierrez@amd.com Process *process; 6011308Santhony.gutierrez@amd.com 6111308Santhony.gutierrez@amd.com // Address space ID. Note that this is used for TIMING cache 6211308Santhony.gutierrez@amd.com // simulation only; all functional memory accesses should use 6311308Santhony.gutierrez@amd.com // one of the FunctionalMemory pointers above. 6411308Santhony.gutierrez@amd.com short asid; 6511308Santhony.gutierrez@amd.com 6611308Santhony.gutierrez@amd.com#endif 6711308Santhony.gutierrez@amd.com 6811308Santhony.gutierrez@amd.com /** 6911308Santhony.gutierrez@amd.com * Temporary storage to pass the source address from copy_load to 7011308Santhony.gutierrez@amd.com * copy_store. 7111308Santhony.gutierrez@amd.com * @todo Remove this temporary when we have a better way to do it. 7211308Santhony.gutierrez@amd.com */ 7311308Santhony.gutierrez@amd.com Addr copySrcAddr; 7411308Santhony.gutierrez@amd.com /** 7511308Santhony.gutierrez@amd.com * Temp storage for the physical source address of a copy. 7611308Santhony.gutierrez@amd.com * @todo Remove this temporary when we have a better way to do it. 7711308Santhony.gutierrez@amd.com */ 7811308Santhony.gutierrez@amd.com Addr copySrcPhysAddr; 7911321Ssteve.reinhardt@amd.com 8011308Santhony.gutierrez@amd.com /* 8111308Santhony.gutierrez@amd.com * number of executed instructions, for matching with syscall trace 8211308Santhony.gutierrez@amd.com * points in EIO files. 8311308Santhony.gutierrez@amd.com */ 8411308Santhony.gutierrez@amd.com Counter funcExeInst; 8511308Santhony.gutierrez@amd.com 8611308Santhony.gutierrez@amd.com // 8711308Santhony.gutierrez@amd.com // Count failed store conditionals so we can warn of apparent 8811308Santhony.gutierrez@amd.com // application deadlock situations. 8911308Santhony.gutierrez@amd.com unsigned storeCondFailures; 9011308Santhony.gutierrez@amd.com}; 9111308Santhony.gutierrez@amd.com 9211308Santhony.gutierrez@amd.com#endif // __CPU_THREAD_STATE_HH__ 9311308Santhony.gutierrez@amd.com