gem5  [DEVELOP-FOR-23.0]
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
exec_context.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014-2018, 2020-2021 Arm Limited
3  * All rights reserved
4  *
5  * The license below extends only to copyright in the software and shall
6  * not be construed as granting a license to any other intellectual
7  * property including but not limited to intellectual property relating
8  * to a hardware implementation of the functionality of the software
9  * licensed hereunder. You may use the software subject to the license
10  * terms below provided that you ensure that this notice is replicated
11  * unmodified and in its entirety in all distributions of the software,
12  * modified or unmodified, in source code or in binary form.
13  *
14  * Copyright (c) 2002-2005 The Regents of The University of Michigan
15  * All rights reserved.
16  *
17  * Redistribution and use in source and binary forms, with or without
18  * modification, are permitted provided that the following conditions are
19  * met: redistributions of source code must retain the above copyright
20  * notice, this list of conditions and the following disclaimer;
21  * redistributions in binary form must reproduce the above copyright
22  * notice, this list of conditions and the following disclaimer in the
23  * documentation and/or other materials provided with the distribution;
24  * neither the name of the copyright holders nor the names of its
25  * contributors may be used to endorse or promote products derived from
26  * this software without specific prior written permission.
27  *
28  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
30  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
31  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
32  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
33  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
34  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39  */
40 
41 #ifndef __CPU_SIMPLE_EXEC_CONTEXT_HH__
42 #define __CPU_SIMPLE_EXEC_CONTEXT_HH__
43 
44 #include "base/types.hh"
45 #include "cpu/base.hh"
46 #include "cpu/exec_context.hh"
47 #include "cpu/reg_class.hh"
48 #include "cpu/simple/base.hh"
49 #include "cpu/static_inst_fwd.hh"
50 #include "cpu/translation.hh"
51 #include "mem/request.hh"
52 
53 namespace gem5
54 {
55 
56 class BaseSimpleCPU;
57 
59 {
60  public:
63 
64  // This is the offset from the current pc that fetch should be performed
66  // This flag says to stay at the current pc. This is useful for
67  // instructions which go beyond MachInst boundaries.
68  bool stayAtPC;
69 
70  // Branch prediction
71  std::unique_ptr<PCStateBase> predPC;
72 
76  // Number of simulated loads
78  // Number of cycles stalled for I-cache responses
80  // Number of cycles stalled for D-cache responses
82 
84  {
86  : statistics::Group(cpu,
87  csprintf("exec_context.thread_%i",
88  thread->threadId()).c_str()),
89  ADD_STAT(numMatAluAccesses, statistics::units::Count::get(),
90  "Number of matrix alu accesses"),
91  ADD_STAT(numCallsReturns, statistics::units::Count::get(),
92  "Number of times a function call or return occured"),
93  ADD_STAT(numMatInsts, statistics::units::Count::get(),
94  "Number of matrix instructions"),
95  ADD_STAT(numIdleCycles, statistics::units::Cycle::get(),
96  "Number of idle cycles"),
97  ADD_STAT(numBusyCycles, statistics::units::Cycle::get(),
98  "Number of busy cycles"),
99  ADD_STAT(notIdleFraction, statistics::units::Ratio::get(),
100  "Percentage of non-idle cycles"),
101  ADD_STAT(idleFraction, statistics::units::Ratio::get(),
102  "Percentage of idle cycles"),
103  ADD_STAT(numPredictedBranches, statistics::units::Count::get(),
104  "Number of branches predicted as taken"),
105  ADD_STAT(numBranchMispred, statistics::units::Count::get(),
106  "Number of branch mispredictions"),
107  numRegReads{
108  &(cpu->executeStats[thread->threadId()]->numIntRegReads),
109  &(cpu->executeStats[thread->threadId()]->numFpRegReads),
110  &(cpu->executeStats[thread->threadId()]->numVecRegReads),
111  &(cpu->executeStats[thread->threadId()]->numVecRegReads),
112  &(cpu->executeStats[thread->threadId()]->numVecPredRegReads),
113  &(cpu->executeStats[thread->threadId()]->numCCRegReads),
115  },
116  numRegWrites{
117  &(cpu->executeStats[thread->threadId()]->numIntRegWrites),
118  &(cpu->executeStats[thread->threadId()]->numFpRegWrites),
119  &(cpu->executeStats[thread->threadId()]->numVecRegWrites),
120  &(cpu->executeStats[thread->threadId()]->numVecRegWrites),
122  ->numVecPredRegWrites),
123  &(cpu->executeStats[thread->threadId()]->numCCRegWrites),
125  }
126  {
130 
133 
136  }
137 
138  // Number of matrix alu accesses
140 
141  // Number of function calls/returns
143 
144  // Number of matrix instructions
146 
147  // Number of matrix register file accesses
150 
151  // Number of idle cycles
153 
154  // Number of busy cycles
156 
157  // Number of idle cycles
160 
167 
168  std::array<statistics::Scalar *, CCRegClass + 1> numRegReads;
169  std::array<statistics::Scalar *, CCRegClass + 1> numRegWrites;
170 
172 
173  public:
176  : cpu(_cpu), thread(_thread), fetchOffset(0), stayAtPC(false),
177  numInst(0), numOp(0), numLoad(0), lastIcacheStall(0),
179  { }
180 
181  RegVal
182  getRegOperand(const StaticInst *si, int idx) override
183  {
184  const RegId &reg = si->srcRegIdx(idx);
185  if (reg.is(InvalidRegClass))
186  return 0;
187  (*execContextStats.numRegReads[reg.classValue()])++;
188  return thread->getReg(reg);
189  }
190 
191  void
192  getRegOperand(const StaticInst *si, int idx, void *val) override
193  {
194  const RegId &reg = si->srcRegIdx(idx);
195  (*execContextStats.numRegReads[reg.classValue()])++;
196  thread->getReg(reg, val);
197  }
198 
199  void *
200  getWritableRegOperand(const StaticInst *si, int idx) override
201  {
202  const RegId &reg = si->destRegIdx(idx);
203  (*execContextStats.numRegWrites[reg.classValue()])++;
204  return thread->getWritableReg(reg);
205  }
206 
207  void
208  setRegOperand(const StaticInst *si, int idx, RegVal val) override
209  {
210  const RegId &reg = si->destRegIdx(idx);
211  if (reg.is(InvalidRegClass))
212  return;
213  (*execContextStats.numRegWrites[reg.classValue()])++;
214  thread->setReg(reg, val);
215  }
216 
217  void
218  setRegOperand(const StaticInst *si, int idx, const void *val) override
219  {
220  const RegId &reg = si->destRegIdx(idx);
221  (*execContextStats.numRegWrites[reg.classValue()])++;
222  thread->setReg(reg, val);
223  }
224 
225  RegVal
226  readMiscRegOperand(const StaticInst *si, int idx) override
227  {
228  cpu->executeStats[thread->threadId()]->numMiscRegReads++;
229  const RegId& reg = si->srcRegIdx(idx);
230  assert(reg.is(MiscRegClass));
231  return thread->readMiscReg(reg.index());
232  }
233 
234  void
235  setMiscRegOperand(const StaticInst *si, int idx, RegVal val) override
236  {
237  cpu->executeStats[thread->threadId()]->numMiscRegWrites++;
238  const RegId& reg = si->destRegIdx(idx);
239  assert(reg.is(MiscRegClass));
240  thread->setMiscReg(reg.index(), val);
241  }
242 
247  RegVal
248  readMiscReg(int misc_reg) override
249  {
250  cpu->executeStats[thread->threadId()]->numMiscRegReads++;
251  return thread->readMiscReg(misc_reg);
252  }
253 
258  void
259  setMiscReg(int misc_reg, RegVal val) override
260  {
261  cpu->executeStats[thread->threadId()]->numMiscRegWrites++;
262  thread->setMiscReg(misc_reg, val);
263  }
264 
265  const PCStateBase &
266  pcState() const override
267  {
268  return thread->pcState();
269  }
270 
271  void
272  pcState(const PCStateBase &val) override
273  {
274  thread->pcState(val);
275  }
276 
277  Fault
278  readMem(Addr addr, uint8_t *data, unsigned int size,
280  const std::vector<bool>& byte_enable)
281  override
282  {
283  assert(byte_enable.size() == size);
284  return cpu->readMem(addr, data, size, flags, byte_enable);
285  }
286 
287  Fault
288  initiateMemRead(Addr addr, unsigned int size,
290  const std::vector<bool>& byte_enable)
291  override
292  {
293  assert(byte_enable.size() == size);
294  return cpu->initiateMemRead(addr, size, flags, byte_enable);
295  }
296 
297  Fault
298  writeMem(uint8_t *data, unsigned int size, Addr addr,
299  Request::Flags flags, uint64_t *res,
300  const std::vector<bool>& byte_enable)
301  override
302  {
303  assert(byte_enable.size() == size);
304  return cpu->writeMem(data, size, addr, flags, res,
305  byte_enable);
306  }
307 
308  Fault
309  amoMem(Addr addr, uint8_t *data, unsigned int size,
310  Request::Flags flags, AtomicOpFunctorPtr amo_op) override
311  {
312  return cpu->amoMem(addr, data, size, flags, std::move(amo_op));
313  }
314 
315  Fault
316  initiateMemAMO(Addr addr, unsigned int size,
318  AtomicOpFunctorPtr amo_op) override
319  {
320  return cpu->initiateMemAMO(addr, size, flags, std::move(amo_op));
321  }
322 
323  Fault
325  {
326  return cpu->initiateMemMgmtCmd(flags);
327  }
328 
332  void
333  setStCondFailures(unsigned int sc_failures) override
334  {
335  thread->setStCondFailures(sc_failures);
336  }
337 
341  unsigned int
342  readStCondFailures() const override
343  {
344  return thread->readStCondFailures();
345  }
346 
348  ThreadContext *tcBase() const override { return thread->getTC(); }
349 
350  bool
351  readPredicate() const override
352  {
353  return thread->readPredicate();
354  }
355 
356  void
357  setPredicate(bool val) override
358  {
360 
361  if (cpu->traceData) {
363  }
364  }
365 
366  bool
367  readMemAccPredicate() const override
368  {
369  return thread->readMemAccPredicate();
370  }
371 
372  void
373  setMemAccPredicate(bool val) override
374  {
376  }
377 
378  uint64_t
379  getHtmTransactionUid() const override
380  {
381  return tcBase()->getHtmCheckpointPtr()->getHtmUid();
382  }
383 
384  uint64_t
385  newHtmTransactionUid() const override
386  {
387  return tcBase()->getHtmCheckpointPtr()->newHtmUid();
388  }
389 
390  bool
391  inHtmTransactionalState() const override
392  {
393  return (getHtmTransactionalDepth() > 0);
394  }
395 
396  uint64_t
397  getHtmTransactionalDepth() const override
398  {
401  }
402 
406  void
407  demapPage(Addr vaddr, uint64_t asn) override
408  {
409  thread->demapPage(vaddr, asn);
410  }
411 
412  void
413  armMonitor(Addr address) override
414  {
415  cpu->armMonitor(thread->threadId(), address);
416  }
417 
418  bool
419  mwait(PacketPtr pkt) override
420  {
421  return cpu->mwait(thread->threadId(), pkt);
422  }
423 
424  void
426  {
428  }
429 
431  getAddrMonitor() override
432  {
433  return cpu->getCpuAddrMonitor(thread->threadId());
434  }
435 };
436 
437 } // namespace gem5
438 
439 #endif // __CPU_EXEC_CONTEXT_HH__
gem5::statistics::Scalar
This is a simple scalar statistic, like a counter.
Definition: statistics.hh:1929
gem5::BaseSimpleCPU::initiateMemAMO
virtual Fault initiateMemAMO(Addr addr, unsigned size, Request::Flags flags, AtomicOpFunctorPtr amo_op)
Definition: base.hh:178
gem5::SimpleThread::readMiscReg
RegVal readMiscReg(RegIndex misc_reg) override
Definition: simple_thread.hh:275
gem5::SimpleExecContext::setMiscReg
void setMiscReg(int misc_reg, RegVal val) override
Sets a miscellaneous register, handling any architectural side effects due to writing that register.
Definition: exec_context.hh:259
gem5::SimpleThread::getWritableReg
void * getWritableReg(const RegId &arch_reg) override
Definition: simple_thread.hh:345
gem5::SimpleExecContext::numOp
Counter numOp
Definition: exec_context.hh:75
gem5::BaseCPU::armMonitor
void armMonitor(ThreadID tid, Addr address)
Definition: base.cc:242
gem5::SimpleThread::getReg
RegVal getReg(const RegId &arch_reg) const override
Definition: simple_thread.hh:313
gem5::SimpleExecContext::ExecContextStats::numRegWrites
std::array< statistics::Scalar *, CCRegClass+1 > numRegWrites
Definition: exec_context.hh:169
gem5::SimpleThread::htmTransactionStops
int64_t htmTransactionStops
Definition: simple_thread.hh:136
gem5::SimpleExecContext::lastDcacheStall
Counter lastDcacheStall
Definition: exec_context.hh:81
gem5::RegVal
uint64_t RegVal
Definition: types.hh:173
gem5::BaseCPU::mwaitAtomic
void mwaitAtomic(ThreadID tid, ThreadContext *tc, BaseMMU *mmu)
Definition: base.cc:277
gem5::MipsISA::misc_reg::Count
@ Count
Definition: misc.hh:94
data
const char data[]
Definition: circlebuf.test.cc:48
gem5::SimpleExecContext::ExecContextStats::ExecContextStats
ExecContextStats(BaseSimpleCPU *cpu, SimpleThread *thread)
Definition: exec_context.hh:85
gem5::SimpleExecContext::readMemAccPredicate
bool readMemAccPredicate() const override
Definition: exec_context.hh:367
gem5::SimpleExecContext::initiateMemMgmtCmd
Fault initiateMemMgmtCmd(Request::Flags flags) override
Initiate a memory management command with no valid address.
Definition: exec_context.hh:324
gem5::SimpleExecContext::ExecContextStats::numMatAluAccesses
statistics::Scalar numMatAluAccesses
Definition: exec_context.hh:139
gem5::InvalidRegClass
@ InvalidRegClass
Definition: reg_class.hh:70
gem5::SimpleExecContext::numLoad
Counter numLoad
Definition: exec_context.hh:77
gem5::SimpleExecContext::ExecContextStats::numCallsReturns
statistics::Scalar numCallsReturns
Definition: exec_context.hh:142
gem5::SimpleExecContext::getWritableRegOperand
void * getWritableRegOperand(const StaticInst *si, int idx) override
Definition: exec_context.hh:200
gem5::X86ISA::val
Bitfield< 63 > val
Definition: misc.hh:776
gem5::BaseSimpleCPU::amoMem
virtual Fault amoMem(Addr addr, uint8_t *data, unsigned size, Request::Flags flags, AtomicOpFunctorPtr amo_op)
Definition: base.hh:171
gem5::SimpleThread::setMiscReg
void setMiscReg(RegIndex misc_reg, RegVal val) override
Definition: simple_thread.hh:287
gem5::SimpleExecContext::execContextStats
gem5::SimpleExecContext::ExecContextStats execContextStats
gem5::SimpleThread::setStCondFailures
void setStCondFailures(unsigned sc_failures) override
Definition: simple_thread.hh:307
gem5::SimpleExecContext::newHtmTransactionUid
uint64_t newHtmTransactionUid() const override
Definition: exec_context.hh:385
gem5::SimpleExecContext::readMiscReg
RegVal readMiscReg(int misc_reg) override
Reads a miscellaneous register, handling any architectural side effects due to reading that register.
Definition: exec_context.hh:248
gem5::statistics::Average
A stat that calculates the per tick average of a value.
Definition: statistics.hh:1957
gem5::SimpleExecContext::getRegOperand
void getRegOperand(const StaticInst *si, int idx, void *val) override
Definition: exec_context.hh:192
gem5::SimpleExecContext::readStCondFailures
unsigned int readStCondFailures() const override
Returns the number of consecutive store conditional failures.
Definition: exec_context.hh:342
gem5::SimpleExecContext::ExecContextStats::numRegReads
std::array< statistics::Scalar *, CCRegClass+1 > numRegReads
Definition: exec_context.hh:168
gem5::statistics::Formula
A formula for statistics that is calculated when printed.
Definition: statistics.hh:2538
std::vector< bool >
gem5::csprintf
std::string csprintf(const char *format, const Args &...args)
Definition: cprintf.hh:161
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
gem5::SimpleExecContext::ExecContextStats::numPredictedBranches
statistics::Scalar numPredictedBranches
Definition: exec_context.hh:163
request.hh
gem5::SimpleExecContext::getHtmTransactionalDepth
uint64_t getHtmTransactionalDepth() const override
Definition: exec_context.hh:397
gem5::SimpleExecContext::setPredicate
void setPredicate(bool val) override
Definition: exec_context.hh:357
gem5::AddressMonitor
Definition: base.hh:70
gem5::statistics::constant
Temp constant(T val)
Definition: statistics.hh:2864
gem5::SimpleExecContext::pcState
const PCStateBase & pcState() const override
Definition: exec_context.hh:266
gem5::SimpleExecContext::amoMem
Fault amoMem(Addr addr, uint8_t *data, unsigned int size, Request::Flags flags, AtomicOpFunctorPtr amo_op) override
For atomic-mode contexts, perform an atomic AMO (a.k.a., Atomic Read-Modify-Write Memory Operation)
Definition: exec_context.hh:309
gem5::trace::InstRecord::setPredicate
void setPredicate(bool val)
Definition: insttracer.hh:258
gem5::SimpleThread::readStCondFailures
unsigned readStCondFailures() const override
Definition: simple_thread.hh:292
gem5::BaseSimpleCPU::writeMem
virtual Fault writeMem(uint8_t *data, unsigned size, Addr addr, Request::Flags flags, uint64_t *res, const std::vector< bool > &byte_enable=std::vector< bool >())
Definition: base.hh:163
gem5::SimpleThread::mmu
BaseMMU * mmu
Definition: simple_thread.hh:130
gem5::SimpleExecContext::ExecContextStats::numMatRegWrites
statistics::Scalar numMatRegWrites
Definition: exec_context.hh:149
gem5::SimpleExecContext::mwait
bool mwait(PacketPtr pkt) override
Definition: exec_context.hh:419
gem5::SimpleExecContext::setStCondFailures
void setStCondFailures(unsigned int sc_failures) override
Sets the number of consecutive store conditional failures.
Definition: exec_context.hh:333
gem5::SimpleThread::readMemAccPredicate
bool readMemAccPredicate()
Definition: simple_thread.hh:295
gem5::Flags< FlagsType >
gem5::BaseCPU::baseStats
gem5::BaseCPU::BaseCPUStats baseStats
gem5::SimpleExecContext::ExecContextStats::numIdleCycles
statistics::Formula numIdleCycles
Definition: exec_context.hh:152
gem5::BaseSimpleCPU::readMem
virtual Fault readMem(Addr addr, uint8_t *data, unsigned size, Request::Flags flags, const std::vector< bool > &byte_enable=std::vector< bool >())
Definition: base.hh:149
gem5::SimpleExecContext::demapPage
void demapPage(Addr vaddr, uint64_t asn) override
Invalidate a page in the DTLB and ITLB.
Definition: exec_context.hh:407
translation.hh
gem5::StaticInst
Base, ISA-independent static instruction class.
Definition: static_inst.hh:87
gem5::ThreadContext
ThreadContext is the external interface to all thread state for anything outside of the CPU.
Definition: thread_context.hh:88
gem5::SimpleExecContext::fetchOffset
Addr fetchOffset
Definition: exec_context.hh:65
gem5::Fault
std::shared_ptr< FaultBase > Fault
Definition: types.hh:248
gem5::SimpleThread::readPredicate
bool readPredicate() const
Definition: simple_thread.hh:265
gem5::SimpleExecContext::inHtmTransactionalState
bool inHtmTransactionalState() const override
Definition: exec_context.hh:391
ADD_STAT
#define ADD_STAT(n,...)
Convenience macro to add a stat to a statistics group.
Definition: group.hh:75
gem5::SimpleExecContext::mwaitAtomic
void mwaitAtomic(ThreadContext *tc) override
Definition: exec_context.hh:425
gem5::Packet
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
Definition: packet.hh:294
gem5::SimpleExecContext::ExecContextStats::numMatInsts
statistics::Scalar numMatInsts
Definition: exec_context.hh:145
gem5::BaseCPU::BaseCPUStats::numCycles
statistics::Scalar numCycles
Definition: base.hh:640
gem5::SimpleExecContext::stayAtPC
bool stayAtPC
Definition: exec_context.hh:68
gem5::SimpleExecContext::readPredicate
bool readPredicate() const override
Definition: exec_context.hh:351
gem5::SimpleThread::setMemAccPredicate
void setMemAccPredicate(bool val)
Definition: simple_thread.hh:301
gem5::SimpleExecContext::ExecContextStats::notIdleFraction
statistics::Average notIdleFraction
Definition: exec_context.hh:158
gem5::SimpleExecContext::cpu
BaseSimpleCPU * cpu
Definition: exec_context.hh:61
gem5::SimpleExecContext::writeMem
Fault writeMem(uint8_t *data, unsigned int size, Addr addr, Request::Flags flags, uint64_t *res, const std::vector< bool > &byte_enable) override
For atomic-mode contexts, perform an atomic memory write operation.
Definition: exec_context.hh:298
gem5::SimpleThread::threadId
int threadId() const override
Definition: simple_thread.hh:200
gem5::SimpleExecContext::ExecContextStats::numBusyCycles
statistics::Formula numBusyCycles
Definition: exec_context.hh:155
gem5::BaseSimpleCPU
Definition: base.hh:83
flags
uint8_t flags
Definition: helpers.cc:66
gem5::SimpleExecContext::numInst
Counter numInst
PER-THREAD STATS.
Definition: exec_context.hh:74
gem5::ThreadContext::getHtmCheckpointPtr
virtual BaseHTMCheckpointPtr & getHtmCheckpointPtr()=0
gem5::SimpleThread::pcState
const PCStateBase & pcState() const override
Definition: simple_thread.hh:256
gem5::ArmISA::si
Bitfield< 6 > si
Definition: misc_types.hh:914
gem5::BaseCPU::getCpuAddrMonitor
AddressMonitor * getCpuAddrMonitor(ThreadID tid)
Definition: base.hh:656
gem5::Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:147
gem5::SimpleExecContext::ExecContextStats::idleFraction
statistics::Formula idleFraction
Definition: exec_context.hh:159
gem5::SimpleExecContext::lastIcacheStall
Counter lastIcacheStall
Definition: exec_context.hh:79
gem5::BaseSimpleCPU::traceData
trace::InstRecord * traceData
Definition: base.hh:97
gem5::BaseCPU::executeStats
std::vector< std::unique_ptr< ExecuteCPUStats > > executeStats
Definition: base.hh:820
gem5::SimpleExecContext::pcState
void pcState(const PCStateBase &val) override
Definition: exec_context.hh:272
gem5::SimpleExecContext::setMiscRegOperand
void setMiscRegOperand(const StaticInst *si, int idx, RegVal val) override
Definition: exec_context.hh:235
gem5::X86ISA::reg
Bitfield< 5, 3 > reg
Definition: types.hh:92
gem5::SimpleExecContext::initiateMemRead
Fault initiateMemRead(Addr addr, unsigned int size, Request::Flags flags, const std::vector< bool > &byte_enable) override
Initiate a timing memory read operation.
Definition: exec_context.hh:288
gem5::SimpleExecContext::thread
SimpleThread * thread
Definition: exec_context.hh:62
gem5::SimpleThread::getTC
ThreadContext * getTC()
Returns the pointer to this SimpleThread's ThreadContext.
Definition: simple_thread.hh:165
base.hh
gem5::BaseSimpleCPU::initiateMemMgmtCmd
virtual Fault initiateMemMgmtCmd(Request::Flags flags)=0
Memory management commands such as hardware transactional memory commands or TLB invalidation command...
gem5::SimpleExecContext::setMemAccPredicate
void setMemAccPredicate(bool val) override
Definition: exec_context.hh:373
base.hh
gem5::SimpleExecContext
Definition: exec_context.hh:58
gem5::MiscRegClass
@ MiscRegClass
Control (misc) register.
Definition: reg_class.hh:69
gem5::statistics::DataWrap::prereq
Derived & prereq(const Stat &prereq)
Set the prerequisite stat and marks this stat to print at the end of simulation.
Definition: statistics.hh:371
types.hh
gem5::SimpleExecContext::setRegOperand
void setRegOperand(const StaticInst *si, int idx, RegVal val) override
Definition: exec_context.hh:208
gem5::BaseSimpleCPU::initiateMemRead
virtual Fault initiateMemRead(Addr addr, unsigned size, Request::Flags flags, const std::vector< bool > &byte_enable=std::vector< bool >())
Definition: base.hh:156
gem5::SimpleExecContext::initiateMemAMO
Fault initiateMemAMO(Addr addr, unsigned int size, Request::Flags flags, AtomicOpFunctorPtr amo_op) override
For timing-mode contexts, initiate an atomic AMO (atomic read-modify-write memory operation)
Definition: exec_context.hh:316
gem5::SimpleThread::demapPage
void demapPage(Addr vaddr, uint64_t asn)
Definition: simple_thread.hh:168
gem5::SimpleExecContext::ExecContextStats
Definition: exec_context.hh:83
static_inst_fwd.hh
gem5::SimpleExecContext::getAddrMonitor
AddressMonitor * getAddrMonitor() override
Definition: exec_context.hh:431
exec_context.hh
reg_class.hh
gem5::statistics::Counter
double Counter
All counters are of 64-bit values.
Definition: types.hh:46
gem5::SimpleExecContext::tcBase
ThreadContext * tcBase() const override
Returns a pointer to the ThreadContext.
Definition: exec_context.hh:348
gem5::SimpleExecContext::readMiscRegOperand
RegVal readMiscRegOperand(const StaticInst *si, int idx) override
Definition: exec_context.hh:226
gem5::statistics::Group
Statistics container.
Definition: group.hh:92
gem5::SimpleExecContext::setRegOperand
void setRegOperand(const StaticInst *si, int idx, const void *val) override
Definition: exec_context.hh:218
gem5::ExecContext
The ExecContext is an abstract base class the provides the interface used by the ISA to manipulate th...
Definition: exec_context.hh:71
gem5::SimpleExecContext::armMonitor
void armMonitor(Addr address) override
Definition: exec_context.hh:413
gem5::BaseCPU::mwait
bool mwait(ThreadID tid, PacketPtr pkt)
Definition: base.cc:254
gem5::SimpleExecContext::readMem
Fault readMem(Addr addr, uint8_t *data, unsigned int size, Request::Flags flags, const std::vector< bool > &byte_enable) override
Perform an atomic memory read operation.
Definition: exec_context.hh:278
gem5::MipsISA::vaddr
vaddr
Definition: pra_constants.hh:278
gem5::PCStateBase
Definition: pcstate.hh:57
gem5::SimpleExecContext::ExecContextStats::numBranchMispred
statistics::Scalar numBranchMispred
Number of misprediced branches.
Definition: exec_context.hh:165
gem5::AtomicOpFunctorPtr
std::unique_ptr< AtomicOpFunctor > AtomicOpFunctorPtr
Definition: amo.hh:269
gem5
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Definition: gpu_translation_state.hh:37
gem5::SimpleExecContext::predPC
std::unique_ptr< PCStateBase > predPC
Definition: exec_context.hh:71
gem5::SimpleExecContext::getHtmTransactionUid
uint64_t getHtmTransactionUid() const override
Definition: exec_context.hh:379
gem5::SimpleExecContext::getRegOperand
RegVal getRegOperand(const StaticInst *si, int idx) override
Definition: exec_context.hh:182
gem5::SimpleThread::setPredicate
void setPredicate(bool val)
Definition: simple_thread.hh:266
gem5::SimpleExecContext::SimpleExecContext
SimpleExecContext(BaseSimpleCPU *_cpu, SimpleThread *_thread)
Constructor.
Definition: exec_context.hh:175
gem5::RegId
Register ID: describe an architectural register with its class and index.
Definition: reg_class.hh:92
gem5::SimpleExecContext::ExecContextStats::numMatRegReads
statistics::Scalar numMatRegReads
Definition: exec_context.hh:148
gem5::X86ISA::addr
Bitfield< 3 > addr
Definition: types.hh:84

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