gem5  [DEVELOP-FOR-23.0]
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
simple_thread.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2011-2012, 2016-2018, 2020 ARM Limited
3  * Copyright (c) 2013 Advanced Micro Devices, Inc.
4  * All rights reserved
5  *
6  * The license below extends only to copyright in the software and shall
7  * not be construed as granting a license to any other intellectual
8  * property including but not limited to intellectual property relating
9  * to a hardware implementation of the functionality of the software
10  * licensed hereunder. You may use the software subject to the license
11  * terms below provided that you ensure that this notice is replicated
12  * unmodified and in its entirety in all distributions of the software,
13  * modified or unmodified, in source code or in binary form.
14  *
15  * Copyright (c) 2001-2006 The Regents of The University of Michigan
16  * All rights reserved.
17  *
18  * Redistribution and use in source and binary forms, with or without
19  * modification, are permitted provided that the following conditions are
20  * met: redistributions of source code must retain the above copyright
21  * notice, this list of conditions and the following disclaimer;
22  * redistributions in binary form must reproduce the above copyright
23  * notice, this list of conditions and the following disclaimer in the
24  * documentation and/or other materials provided with the distribution;
25  * neither the name of the copyright holders nor the names of its
26  * contributors may be used to endorse or promote products derived from
27  * this software without specific prior written permission.
28  *
29  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
30  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
31  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
32  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
33  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
34  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
35  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
36  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
37  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
38  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
39  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40  */
41 
42 #ifndef __CPU_SIMPLE_THREAD_HH__
43 #define __CPU_SIMPLE_THREAD_HH__
44 
45 #include <algorithm>
46 #include <vector>
47 
48 #include "arch/generic/htm.hh"
49 #include "arch/generic/mmu.hh"
50 #include "arch/generic/pcstate.hh"
51 #include "arch/generic/tlb.hh"
52 #include "base/logging.hh"
53 #include "base/types.hh"
54 #include "cpu/regfile.hh"
55 #include "cpu/thread_context.hh"
56 #include "cpu/thread_state.hh"
57 #include "debug/CCRegs.hh"
58 #include "debug/FloatRegs.hh"
59 #include "debug/IntRegs.hh"
60 #include "debug/MatRegs.hh"
61 #include "debug/VecPredRegs.hh"
62 #include "debug/VecRegs.hh"
63 #include "mem/htm.hh"
64 #include "mem/page_table.hh"
65 #include "mem/request.hh"
66 #include "sim/byteswap.hh"
67 #include "sim/eventq.hh"
68 #include "sim/full_system.hh"
69 #include "sim/process.hh"
70 #include "sim/serialize.hh"
71 #include "sim/system.hh"
72 
73 namespace gem5
74 {
75 
76 class BaseCPU;
77 class CheckerCPU;
78 
93 class SimpleThread : public ThreadState, public ThreadContext
94 {
95  public:
97 
98  protected:
99  std::array<RegFile, CCRegClass + 1> regFiles;
100 
101  BaseISA *const isa; // one "instance" of the current ISA.
102 
103  std::unique_ptr<PCStateBase> _pcState;
104 
105  // hardware transactional memory
106  std::unique_ptr<BaseHTMCheckpoint> _htmCheckpoint;
107 
109  bool predicate;
110 
113 
114  public:
115  std::string
116  name() const
117  {
118  return csprintf("%s.[tid:%i]", baseCpu->name(), threadId());
119  }
120 
127 
129 
131 
133 
134  // hardware transactional memory
137 
138  // constructor: initialize SimpleThread from given process structure
139  // FS
140  SimpleThread(BaseCPU *_cpu, int _thread_num, System *_system,
141  BaseMMU *_mmu, BaseISA *_isa, InstDecoder *_decoder);
142  // SE
143  SimpleThread(BaseCPU *_cpu, int _thread_num, System *_system,
144  Process *_process, BaseMMU *_mmu,
145  BaseISA *_isa, InstDecoder *_decoder);
146 
147  virtual ~SimpleThread() {}
148 
149  void takeOverFrom(ThreadContext *oldContext) override;
150 
151  void copyState(ThreadContext *oldContext);
152 
153  void serialize(CheckpointOut &cp) const override;
154  void unserialize(CheckpointIn &cp) override;
155 
156  /***************************************************************
157  * SimpleThread functions to provide CPU with access to various
158  * state.
159  **************************************************************/
160 
165  ThreadContext *getTC() { return this; }
166 
167  void
168  demapPage(Addr vaddr, uint64_t asn)
169  {
170  mmu->demapPage(vaddr, asn);
171  }
172 
173  /*******************************************
174  * ThreadContext interface functions.
175  ******************************************/
176 
177  bool schedule(PCEvent *e) override { return pcEventQueue.schedule(e); }
178  bool remove(PCEvent *e) override { return pcEventQueue.remove(e); }
179 
180  void
182  {
184  }
185  void
187  {
189  }
190  Tick
192  {
193  return comInstEventQueue.getCurTick();
194  }
195 
196  BaseCPU *getCpuPtr() override { return baseCpu; }
197 
198  int cpuId() const override { return ThreadState::cpuId(); }
199  uint32_t socketId() const override { return ThreadState::socketId(); }
200  int threadId() const override { return ThreadState::threadId(); }
201  void setThreadId(int id) override { ThreadState::setThreadId(id); }
202  ContextID contextId() const override { return ThreadState::contextId(); }
204 
205  BaseMMU *getMMUPtr() override { return mmu; }
206 
207  CheckerCPU *getCheckerCpuPtr() override { return NULL; }
208 
209  BaseISA *getIsaPtr() const override { return isa; }
210 
211  InstDecoder *getDecoderPtr() override { return decoder; }
212 
213  System *getSystemPtr() override { return system; }
214 
217 
218  Status status() const override { return _status; }
219 
220  void setStatus(Status newStatus) override { _status = newStatus; }
221 
223  void activate() override;
224 
226  void suspend() override;
227 
229  void halt() override;
230 
231  Tick
232  readLastActivate() override
233  {
235  }
236  Tick
237  readLastSuspend() override
238  {
240  }
241 
242  void copyArchRegs(ThreadContext *tc) override;
243 
244  void
245  clearArchRegs() override
246  {
247  set(_pcState, isa->newPCState());
248  for (auto &rf: regFiles)
249  rf.clear();
250  isa->clear();
251  }
252 
253  //
254  // New accessors for new decoder.
255  //
256  const PCStateBase &pcState() const override { return *_pcState; }
257  void pcState(const PCStateBase &val) override { set(_pcState, val); }
258 
259  void
260  pcStateNoRecord(const PCStateBase &val) override
261  {
262  set(_pcState, val);
263  }
264 
265  bool readPredicate() const { return predicate; }
266  void setPredicate(bool val) { predicate = val; }
267 
268  RegVal
269  readMiscRegNoEffect(RegIndex misc_reg) const override
270  {
271  return isa->readMiscRegNoEffect(misc_reg);
272  }
273 
274  RegVal
275  readMiscReg(RegIndex misc_reg) override
276  {
277  return isa->readMiscReg(misc_reg);
278  }
279 
280  void
281  setMiscRegNoEffect(RegIndex misc_reg, RegVal val) override
282  {
283  return isa->setMiscRegNoEffect(misc_reg, val);
284  }
285 
286  void
287  setMiscReg(RegIndex misc_reg, RegVal val) override
288  {
289  return isa->setMiscReg(misc_reg, val);
290  }
291 
292  unsigned readStCondFailures() const override { return storeCondFailures; }
293 
294  bool
296  {
297  return memAccPredicate;
298  }
299 
300  void
302  {
304  }
305 
306  void
307  setStCondFailures(unsigned sc_failures) override
308  {
309  storeCondFailures = sc_failures;
310  }
311 
312  RegVal
313  getReg(const RegId &arch_reg) const override
314  {
315  const RegId reg = arch_reg.flatten(*isa);
316 
317  const RegIndex idx = reg.index();
318 
319  const auto &reg_file = regFiles[reg.classValue()];
320  const auto &reg_class = reg_file.regClass;
321 
322  RegVal val = reg_file.reg(idx);
323  DPRINTFV(reg_class.debug(), "Reading %s reg %s (%d) as %#x.\n",
324  reg.className(), reg_class.regName(arch_reg), idx, val);
325  return val;
326  }
327 
328  void
329  getReg(const RegId &arch_reg, void *val) const override
330  {
331  const RegId reg = arch_reg.flatten(*isa);
332 
333  const RegIndex idx = reg.index();
334 
335  const auto &reg_file = regFiles[reg.classValue()];
336  const auto &reg_class = reg_file.regClass;
337 
338  reg_file.get(idx, val);
339  DPRINTFV(reg_class.debug(), "Reading %s register %s (%d) as %s.\n",
340  reg.className(), reg_class.regName(arch_reg), idx,
341  reg_class.valString(val));
342  }
343 
344  void *
345  getWritableReg(const RegId &arch_reg) override
346  {
347  const RegId reg = arch_reg.flatten(*isa);
348  const RegIndex idx = reg.index();
349  auto &reg_file = regFiles[reg.classValue()];
350 
351  return reg_file.ptr(idx);
352  }
353 
354  void
355  setReg(const RegId &arch_reg, RegVal val) override
356  {
357  const RegId reg = arch_reg.flatten(*isa);
358 
359  if (reg.is(InvalidRegClass))
360  return;
361 
362  const RegIndex idx = reg.index();
363 
364  auto &reg_file = regFiles[reg.classValue()];
365  const auto &reg_class = reg_file.regClass;
366 
367  DPRINTFV(reg_class.debug(), "Setting %s register %s (%d) to %#x.\n",
368  reg.className(), reg_class.regName(arch_reg), idx, val);
369  reg_file.reg(idx) = val;
370  }
371 
372  void
373  setReg(const RegId &arch_reg, const void *val) override
374  {
375  const RegId reg = arch_reg.flatten(*isa);
376 
377  const RegIndex idx = reg.index();
378 
379  auto &reg_file = regFiles[reg.classValue()];
380  const auto &reg_class = reg_file.regClass;
381 
382  DPRINTFV(reg_class.debug(), "Setting %s register %s (%d) to %s.\n",
383  reg.className(), reg_class.regName(arch_reg), idx,
384  reg_class.valString(val));
385  reg_file.set(idx, val);
386  }
387 
388  // hardware transactional memory
389  void htmAbortTransaction(uint64_t htm_uid,
390  HtmFailureFaultCause cause) override;
391 
393  void setHtmCheckpointPtr(BaseHTMCheckpointPtr new_cpt) override;
394 };
395 
396 } // namespace gem5
397 
398 #endif // __CPU_SIMPLE_THREAD_HH__
gem5::SimpleThread::readMiscReg
RegVal readMiscReg(RegIndex misc_reg) override
Definition: simple_thread.hh:275
htm.hh
gem5::RegId::flatten
RegId flatten(const BaseISA &isa) const
Definition: reg_class.hh:279
gem5::SimpleThread::getWritableReg
void * getWritableReg(const RegId &arch_reg) override
Definition: simple_thread.hh:345
thread_state.hh
gem5::BaseISA::setMiscReg
virtual void setMiscReg(RegIndex idx, RegVal val)=0
gem5::BaseHTMCheckpointPtr
std::unique_ptr< BaseHTMCheckpoint > BaseHTMCheckpointPtr
Definition: htm.hh:125
gem5::SimpleThread::getReg
RegVal getReg(const RegId &arch_reg) const override
Definition: simple_thread.hh:313
gem5::SimpleThread::htmTransactionStops
int64_t htmTransactionStops
Definition: simple_thread.hh:136
gem5::RegVal
uint64_t RegVal
Definition: types.hh:173
system.hh
gem5::SimpleThread::setReg
void setReg(const RegId &arch_reg, const void *val) override
Definition: simple_thread.hh:373
gem5::SimpleThread::getProcessPtr
Process * getProcessPtr() override
Definition: simple_thread.hh:215
serialize.hh
gem5::HtmFailureFaultCause
HtmFailureFaultCause
Definition: htm.hh:47
gem5::SimpleThread::getCheckerCpuPtr
CheckerCPU * getCheckerCpuPtr() override
Definition: simple_thread.hh:207
gem5::ThreadState
Struct for holding general thread state that is needed across CPU models.
Definition: thread_state.hh:47
gem5::InvalidRegClass
@ InvalidRegClass
Definition: reg_class.hh:70
gem5::BaseISA::setMiscRegNoEffect
virtual void setMiscRegNoEffect(RegIndex idx, RegVal val)=0
gem5::SimpleThread::copyArchRegs
void copyArchRegs(ThreadContext *tc) override
Definition: simple_thread.cc:167
gem5::CheckpointIn
Definition: serialize.hh:68
gem5::ArmISA::set
Bitfield< 12, 11 > set
Definition: misc_types.hh:760
gem5::SimpleThread::readLastSuspend
Tick readLastSuspend() override
Definition: simple_thread.hh:237
gem5::MipsISA::event
Bitfield< 10, 5 > event
Definition: pra_constants.hh:300
tlb.hh
htm.hh
gem5::ArmISA::e
Bitfield< 9 > e
Definition: misc_types.hh:65
gem5::PCEventQueue::remove
bool remove(PCEvent *event) override
Definition: pc_event.cc:51
gem5::X86ISA::val
Bitfield< 63 > val
Definition: misc.hh:776
gem5::SimpleThread::setMiscReg
void setMiscReg(RegIndex misc_reg, RegVal val) override
Definition: simple_thread.hh:287
gem5::SimpleThread::setStCondFailures
void setStCondFailures(unsigned sc_failures) override
Definition: simple_thread.hh:307
gem5::SimpleThread::unserialize
void unserialize(CheckpointIn &cp) override
Unserialize an object.
Definition: simple_thread.cc:126
gem5::SimpleThread::getMMUPtr
BaseMMU * getMMUPtr() override
Definition: simple_thread.hh:205
gem5::ThreadContext::Status
Status
Definition: thread_context.hh:99
gem5::PCEventQueue::schedule
bool schedule(PCEvent *event) override
Definition: pc_event.cc:71
gem5::SimpleThread::remove
bool remove(PCEvent *e) override
Definition: simple_thread.hh:178
gem5::csprintf
std::string csprintf(const char *format, const Args &...args)
Definition: cprintf.hh:161
gem5::SimpleThread::clearArchRegs
void clearArchRegs() override
Definition: simple_thread.hh:245
gem5::SimpleThread::system
System * system
Definition: simple_thread.hh:128
gem5::SimpleThread::setContextId
void setContextId(ContextID id) override
Definition: simple_thread.hh:203
gem5::X86ISA::rf
Bitfield< 16 > rf
Definition: misc.hh:568
gem5::SimpleThread::isa
BaseISA *const isa
Definition: simple_thread.hh:101
gem5::SimpleThread::_htmCheckpoint
std::unique_ptr< BaseHTMCheckpoint > _htmCheckpoint
Definition: simple_thread.hh:106
gem5::SimpleThread::activate
void activate() override
Set the status to Active.
Definition: simple_thread.cc:133
gem5::SimpleThread::setReg
void setReg(const RegId &arch_reg, RegVal val) override
Definition: simple_thread.hh:355
gem5::SimpleThread::htmTransactionStarts
int64_t htmTransactionStarts
Definition: simple_thread.hh:135
gem5::SimpleThread
The SimpleThread object provides a combination of the ThreadState object and the ThreadContext interf...
Definition: simple_thread.hh:93
request.hh
gem5::SimpleThread::setThreadId
void setThreadId(int id) override
Definition: simple_thread.hh:201
gem5::BaseMMU
Definition: mmu.hh:53
gem5::SimpleThread::getDecoderPtr
InstDecoder * getDecoderPtr() override
Definition: simple_thread.hh:211
gem5::SimpleThread::cpuId
int cpuId() const override
Definition: simple_thread.hh:198
gem5::SimpleThread::readStCondFailures
unsigned readStCondFailures() const override
Definition: simple_thread.hh:292
gem5::SimpleThread::htmAbortTransaction
void htmAbortTransaction(uint64_t htm_uid, HtmFailureFaultCause cause) override
Definition: simple_thread.cc:174
gem5::SimpleThread::mmu
BaseMMU * mmu
Definition: simple_thread.hh:130
gem5::SimpleThread::_pcState
std::unique_ptr< PCStateBase > _pcState
Definition: simple_thread.hh:103
gem5::SimpleThread::readMemAccPredicate
bool readMemAccPredicate()
Definition: simple_thread.hh:295
gem5::SimpleThread::getSystemPtr
System * getSystemPtr() override
Definition: simple_thread.hh:213
gem5::System
Definition: system.hh:74
gem5::ThreadState::cpuId
int cpuId() const
Definition: thread_state.hh:59
gem5::SimpleThread::copyState
void copyState(ThreadContext *oldContext)
Definition: simple_thread.cc:107
gem5::ThreadContext
ThreadContext is the external interface to all thread state for anything outside of the CPU.
Definition: thread_context.hh:88
gem5::Named::name
virtual std::string name() const
Definition: named.hh:47
gem5::VegaISA::p
Bitfield< 54 > p
Definition: pagetable.hh:70
gem5::BaseISA::newPCState
virtual PCStateBase * newPCState(Addr new_inst_addr=0) const =0
gem5::SimpleThread::readPredicate
bool readPredicate() const
Definition: simple_thread.hh:265
gem5::SimpleThread::setHtmCheckpointPtr
void setHtmCheckpointPtr(BaseHTMCheckpointPtr new_cpt) override
Definition: simple_thread.cc:190
gem5::InstDecoder
Definition: decoder.hh:42
gem5::SimpleThread::readMiscRegNoEffect
RegVal readMiscRegNoEffect(RegIndex misc_reg) const override
Definition: simple_thread.hh:269
gem5::Event
Definition: eventq.hh:254
gem5::X86ISA::count
count
Definition: misc.hh:710
gem5::EventQueue::deschedule
void deschedule(Event *event)
Deschedule the specified event.
Definition: eventq.hh:790
gem5::SimpleThread::socketId
uint32_t socketId() const override
Definition: simple_thread.hh:199
gem5::ThreadState::storeCondFailures
unsigned storeCondFailures
Definition: thread_state.hh:138
gem5::Tick
uint64_t Tick
Tick count type.
Definition: types.hh:58
gem5::SimpleThread::getReg
void getReg(const RegId &arch_reg, void *val) const override
Definition: simple_thread.hh:329
gem5::PCEvent
Definition: pc_event.hh:45
gem5::CheckerCPU
CheckerCPU class.
Definition: cpu.hh:84
gem5::SimpleThread::setMiscRegNoEffect
void setMiscRegNoEffect(RegIndex misc_reg, RegVal val) override
Definition: simple_thread.hh:281
gem5::SimpleThread::setMemAccPredicate
void setMemAccPredicate(bool val)
Definition: simple_thread.hh:301
process.hh
mmu.hh
gem5::PCEventQueue
Definition: pc_event.hh:74
gem5::ThreadState::setThreadId
void setThreadId(ThreadID id)
Definition: thread_state.hh:67
gem5::EventQueue
Queue of events sorted in time order.
Definition: eventq.hh:615
gem5::BaseMMU::demapPage
void demapPage(Addr vaddr, uint64_t asn)
Definition: mmu.cc:97
gem5::SimpleThread::threadId
int threadId() const override
Definition: simple_thread.hh:200
gem5::SimpleThread::takeOverFrom
void takeOverFrom(ThreadContext *oldContext) override
Definition: simple_thread.cc:96
gem5::SimpleThread::memAccPredicate
bool memAccPredicate
True if the memory access should be skipped for this instruction.
Definition: simple_thread.hh:112
gem5::BaseCPU
Definition: base.hh:104
gem5::BaseISA::readMiscReg
virtual RegVal readMiscReg(RegIndex idx)=0
gem5::SimpleThread::schedule
bool schedule(PCEvent *e) override
Definition: simple_thread.hh:177
gem5::SimpleThread::decoder
InstDecoder * decoder
Definition: simple_thread.hh:132
gem5::SimpleThread::pcState
const PCStateBase & pcState() const override
Definition: simple_thread.hh:256
gem5::ThreadState::threadId
ThreadID threadId() const
Definition: thread_state.hh:69
gem5::Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:147
regfile.hh
gem5::SimpleThread::halt
void halt() override
Set the status to Halted.
Definition: simple_thread.cc:157
gem5::SimpleThread::getHtmCheckpointPtr
BaseHTMCheckpointPtr & getHtmCheckpointPtr() override
Definition: simple_thread.cc:184
gem5::SimpleThread::getIsaPtr
BaseISA * getIsaPtr() const override
Definition: simple_thread.hh:209
gem5::BaseISA::readMiscRegNoEffect
virtual RegVal readMiscRegNoEffect(RegIndex idx) const =0
gem5::SimpleThread::setStatus
void setStatus(Status newStatus) override
Definition: simple_thread.hh:220
gem5::EventQueue::getCurTick
Tick getCurTick() const
While curTick() is useful for any object assigned to this event queue, if an object that is assigned ...
Definition: eventq.hh:850
gem5::ThreadState::contextId
ContextID contextId() const
Definition: thread_state.hh:63
full_system.hh
gem5::SimpleThread::pcEventQueue
PCEventQueue pcEventQueue
Definition: simple_thread.hh:121
gem5::SimpleThread::contextId
ContextID contextId() const override
Definition: simple_thread.hh:202
gem5::ThreadState::setContextId
void setContextId(ContextID id)
Definition: thread_state.hh:65
gem5::SimpleThread::regFiles
std::array< RegFile, CCRegClass+1 > regFiles
Definition: simple_thread.hh:99
gem5::X86ISA::reg
Bitfield< 5, 3 > reg
Definition: types.hh:92
gem5::Process
Definition: process.hh:67
gem5::SimpleThread::readLastActivate
Tick readLastActivate() override
Definition: simple_thread.hh:232
gem5::SimpleThread::getTC
ThreadContext * getTC()
Returns the pointer to this SimpleThread's ThreadContext.
Definition: simple_thread.hh:165
gem5::SimpleThread::name
std::string name() const
Definition: simple_thread.hh:116
gem5::SimpleThread::scheduleInstCountEvent
void scheduleInstCountEvent(Event *event, Tick count) override
Definition: simple_thread.hh:181
pcstate.hh
gem5::SimpleThread::setProcessPtr
void setProcessPtr(Process *p) override
Definition: simple_thread.hh:216
gem5::ThreadState::setProcessPtr
void setProcessPtr(Process *p)
Definition: thread_state.hh:77
gem5::SimpleThread::suspend
void suspend() override
Set the status to Suspended.
Definition: simple_thread.cc:144
gem5::ThreadState::_status
ThreadContext::Status _status
Definition: thread_state.hh:112
types.hh
gem5::SimpleThread::~SimpleThread
virtual ~SimpleThread()
Definition: simple_thread.hh:147
gem5::SimpleThread::demapPage
void demapPage(Addr vaddr, uint64_t asn)
Definition: simple_thread.hh:168
gem5::ContextID
int ContextID
Globally unique thread context ID.
Definition: types.hh:239
logging.hh
gem5::EventQueue::schedule
void schedule(Event *event, Tick when, bool global=false)
Schedule the given event on this queue.
Definition: eventq.hh:757
gem5::SimpleThread::descheduleInstCountEvent
void descheduleInstCountEvent(Event *event) override
Definition: simple_thread.hh:186
gem5::CheckpointOut
std::ostream CheckpointOut
Definition: serialize.hh:66
gem5::SimpleThread::pcStateNoRecord
void pcStateNoRecord(const PCStateBase &val) override
Definition: simple_thread.hh:260
gem5::SimpleThread::getCurrentInstCount
Tick getCurrentInstCount() override
Definition: simple_thread.hh:191
gem5::MipsISA::vaddr
vaddr
Definition: pra_constants.hh:278
gem5::PCStateBase
Definition: pcstate.hh:57
gem5::ThreadState::socketId
uint32_t socketId() const
Definition: thread_state.hh:61
DPRINTFV
#define DPRINTFV(x,...)
Definition: trace.hh:231
gem5::BaseISA
Definition: isa.hh:58
gem5::RegIndex
uint16_t RegIndex
Definition: types.hh:176
page_table.hh
gem5::SimpleThread::pcState
void pcState(const PCStateBase &val) override
Definition: simple_thread.hh:257
gem5
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Definition: gpu_translation_state.hh:37
gem5::SimpleThread::Status
ThreadContext::Status Status
Definition: simple_thread.hh:96
gem5::ThreadState::baseCpu
BaseCPU * baseCpu
Definition: thread_state.hh:115
gem5::SimpleThread::getCpuPtr
BaseCPU * getCpuPtr() override
Definition: simple_thread.hh:196
gem5::ThreadState::readLastActivate
Tick readLastActivate() const
Definition: thread_state.hh:71
gem5::SimpleThread::status
Status status() const override
Definition: simple_thread.hh:218
gem5::ThreadState::readLastSuspend
Tick readLastSuspend() const
Definition: thread_state.hh:73
gem5::SimpleThread::SimpleThread
SimpleThread(BaseCPU *_cpu, int _thread_num, System *_system, BaseMMU *_mmu, BaseISA *_isa, InstDecoder *_decoder)
Definition: simple_thread.cc:90
thread_context.hh
gem5::SimpleThread::comInstEventQueue
EventQueue comInstEventQueue
An instruction-based event queue.
Definition: simple_thread.hh:126
gem5::SimpleThread::setPredicate
void setPredicate(bool val)
Definition: simple_thread.hh:266
byteswap.hh
gem5::SimpleThread::serialize
void serialize(CheckpointOut &cp) const override
Serialize an object.
Definition: simple_thread.cc:118
gem5::RegId
Register ID: describe an architectural register with its class and index.
Definition: reg_class.hh:92
gem5::BaseISA::clear
virtual void clear()
Definition: isa.hh:72
gem5::SimpleThread::predicate
bool predicate
Did this instruction execute or is it predicated false.
Definition: simple_thread.hh:109
gem5::ThreadState::getProcessPtr
Process * getProcessPtr()
Definition: thread_state.hh:75
eventq.hh

Generated on Sun Jul 30 2023 01:56:53 for gem5 by doxygen 1.8.17