thread_state.cc revision 2683
12683Sktlim@umich.edu#include "base/output.hh"
22683Sktlim@umich.edu#include "cpu/profile.hh"
32683Sktlim@umich.edu#include "cpu/thread_state.hh"
42683Sktlim@umich.edu
52683Sktlim@umich.edu#if FULL_SYSTEM
62683Sktlim@umich.eduThreadState::ThreadState(int _cpuId, int _tid)
72683Sktlim@umich.edu    : cpuId(_cpuId), tid(_tid), lastActivate(0), lastSuspend(0),
82683Sktlim@umich.edu      profile(NULL), profileNode(NULL), profilePC(0), quiesceEvent(NULL),
92683Sktlim@umich.edu      funcExeInst(0), storeCondFailures(0)
102683Sktlim@umich.edu#else
112683Sktlim@umich.eduThreadState::ThreadState(int _cpuId, int _tid, MemObject *mem,
122683Sktlim@umich.edu                         Process *_process, short _asid)
132683Sktlim@umich.edu    : cpuId(_cpuId), tid(_tid), lastActivate(0), lastSuspend(0),
142683Sktlim@umich.edu      process(_process), asid(_asid),
152683Sktlim@umich.edu      funcExeInst(0), storeCondFailures(0)
162683Sktlim@umich.edu#endif
172683Sktlim@umich.edu{
182683Sktlim@umich.edu#if !FULL_SYSTEM
192683Sktlim@umich.edu        /* Use this port to for syscall emulation writes to memory. */
202683Sktlim@umich.edu        Port *mem_port;
212683Sktlim@umich.edu        port = new TranslatingPort(csprintf("%d-funcport",
222683Sktlim@umich.edu                                            tid),
232683Sktlim@umich.edu                                   process->pTable, false);
242683Sktlim@umich.edu        mem_port = mem->getPort("functional");
252683Sktlim@umich.edu        mem_port->setPeer(port);
262683Sktlim@umich.edu        port->setPeer(mem_port);
272683Sktlim@umich.edu#endif
282683Sktlim@umich.edu}
292683Sktlim@umich.edu
302683Sktlim@umich.edu#if FULL_SYSTEM
312683Sktlim@umich.edu
322683Sktlim@umich.eduvoid
332683Sktlim@umich.eduThreadState::profileClear()
342683Sktlim@umich.edu{
352683Sktlim@umich.edu    if (profile)
362683Sktlim@umich.edu        profile->clear();
372683Sktlim@umich.edu}
382683Sktlim@umich.edu
392683Sktlim@umich.eduvoid
402683Sktlim@umich.eduThreadState::profileSample()
412683Sktlim@umich.edu{
422683Sktlim@umich.edu    if (profile)
432683Sktlim@umich.edu        profile->sample(profileNode, profilePC);
442683Sktlim@umich.edu}
452683Sktlim@umich.edu
462683Sktlim@umich.edu#endif
47