gem5  v21.0.1.0
thread_context.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) 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_CHECKER_THREAD_CONTEXT_HH__
43 #define __CPU_CHECKER_THREAD_CONTEXT_HH__
44 
45 #include "arch/types.hh"
46 #include "config/the_isa.hh"
47 #include "cpu/checker/cpu.hh"
48 #include "cpu/simple_thread.hh"
49 #include "cpu/thread_context.hh"
50 #include "debug/Checker.hh"
51 
52 namespace TheISA
53 {
54  class Decoder;
55 } // namespace TheISA
56 
65 template <class TC>
67 {
68  public:
69  CheckerThreadContext(TC *actual_tc,
70  CheckerCPU *checker_cpu)
71  : actualTC(actual_tc), checkerTC(checker_cpu->thread),
72  checkerCPU(checker_cpu)
73  { }
74 
75  private:
78  TC *actualTC;
85 
86  public:
87  bool schedule(PCEvent *e) override { return actualTC->schedule(e); }
88  bool remove(PCEvent *e) override { return actualTC->remove(e); }
89 
90  void
92  {
93  actualTC->scheduleInstCountEvent(event, count);
94  }
95  void
97  {
98  actualTC->descheduleInstCountEvent(event);
99  }
100  Tick
102  {
103  return actualTC->getCurrentInstCount();
104  }
105 
106  BaseCPU *getCpuPtr() override { return actualTC->getCpuPtr(); }
107 
108  uint32_t socketId() const override { return actualTC->socketId(); }
109 
110  int cpuId() const override { return actualTC->cpuId(); }
111 
112  ContextID contextId() const override { return actualTC->contextId(); }
113 
114  void
115  setContextId(ContextID id) override
116  {
117  actualTC->setContextId(id);
118  checkerTC->setContextId(id);
119  }
120 
122  int threadId() const override { return actualTC->threadId(); }
123  void
124  setThreadId(int id) override
125  {
126  checkerTC->setThreadId(id);
127  actualTC->setThreadId(id);
128  }
129 
130  BaseMMU *getMMUPtr() override { return actualTC->getMMUPtr(); }
131 
132  CheckerCPU *
133  getCheckerCpuPtr() override
134  {
135  return checkerCPU;
136  }
137 
138  BaseISA *getIsaPtr() override { return actualTC->getIsaPtr(); }
139 
140  TheISA::Decoder *
141  getDecoderPtr() override
142  {
143  return actualTC->getDecoderPtr();
144  }
145 
146  System *getSystemPtr() override { return actualTC->getSystemPtr(); }
147 
148  Process *getProcessPtr() override { return actualTC->getProcessPtr(); }
149 
150  void setProcessPtr(Process *p) override { actualTC->setProcessPtr(p); }
151 
152  PortProxy &getPhysProxy() override { return actualTC->getPhysProxy(); }
153 
154  PortProxy &
155  getVirtProxy() override
156  {
157  return actualTC->getVirtProxy();
158  }
159 
160  void
162  {
163  actualTC->initMemProxies(tc);
164  }
165 
166  void
168  {
169  actualTC->connectMemPorts(tc);
170  }
171 
172  Status status() const override { return actualTC->status(); }
173 
174  void
175  setStatus(Status new_status) override
176  {
177  actualTC->setStatus(new_status);
178  checkerTC->setStatus(new_status);
179  }
180 
182  void activate() override { actualTC->activate(); }
183 
185  void suspend() override { actualTC->suspend(); }
186 
188  void halt() override { actualTC->halt(); }
189 
190  void
191  takeOverFrom(ThreadContext *oldContext) override
192  {
193  actualTC->takeOverFrom(oldContext);
194  checkerTC->copyState(oldContext);
195  }
196 
197  void
198  regStats(const std::string &name) override
199  {
200  actualTC->regStats(name);
202  }
203 
204  Tick readLastActivate() override { return actualTC->readLastActivate(); }
205  Tick readLastSuspend() override { return actualTC->readLastSuspend(); }
206 
207  // @todo: Do I need this?
208  void
210  {
211  actualTC->copyArchRegs(tc);
212  checkerTC->copyArchRegs(tc);
213  }
214 
215  void
216  clearArchRegs() override
217  {
218  actualTC->clearArchRegs();
220  }
221 
222  //
223  // New accessors for new decoder.
224  //
225  RegVal
226  readIntReg(RegIndex reg_idx) const override
227  {
228  return actualTC->readIntReg(reg_idx);
229  }
230 
231  RegVal
232  readFloatReg(RegIndex reg_idx) const override
233  {
234  return actualTC->readFloatReg(reg_idx);
235  }
236 
238  readVecReg (const RegId &reg) const override
239  {
240  return actualTC->readVecReg(reg);
241  }
242 
247  getWritableVecReg (const RegId &reg) override
248  {
249  return actualTC->getWritableVecReg(reg);
250  }
251 
256  readVec8BitLaneReg(const RegId &reg) const override
257  {
258  return actualTC->readVec8BitLaneReg(reg);
259  }
260 
263  readVec16BitLaneReg(const RegId &reg) const override
264  {
265  return actualTC->readVec16BitLaneReg(reg);
266  }
267 
270  readVec32BitLaneReg(const RegId &reg) const override
271  {
272  return actualTC->readVec32BitLaneReg(reg);
273  }
274 
277  readVec64BitLaneReg(const RegId &reg) const override
278  {
279  return actualTC->readVec64BitLaneReg(reg);
280  }
281 
283  virtual void
285  const LaneData<LaneSize::Byte> &val) override
286  {
287  return actualTC->setVecLane(reg, val);
288  }
289  virtual void
291  const LaneData<LaneSize::TwoByte> &val) override
292  {
293  return actualTC->setVecLane(reg, val);
294  }
295  virtual void
297  const LaneData<LaneSize::FourByte> &val) override
298  {
299  return actualTC->setVecLane(reg, val);
300  }
301  virtual void
303  const LaneData<LaneSize::EightByte> &val) override
304  {
305  return actualTC->setVecLane(reg, val);
306  }
309  const TheISA::VecElem &
310  readVecElem(const RegId& reg) const override
311  {
312  return actualTC->readVecElem(reg);
313  }
314 
316  readVecPredReg(const RegId& reg) const override
317  {
318  return actualTC->readVecPredReg(reg);
319  }
320 
322  getWritableVecPredReg(const RegId& reg) override
323  {
324  return actualTC->getWritableVecPredReg(reg);
325  }
326 
327  RegVal
328  readCCReg(RegIndex reg_idx) const override
329  {
330  return actualTC->readCCReg(reg_idx);
331  }
332 
333  void
334  setIntReg(RegIndex reg_idx, RegVal val) override
335  {
336  actualTC->setIntReg(reg_idx, val);
337  checkerTC->setIntReg(reg_idx, val);
338  }
339 
340  void
341  setFloatReg(RegIndex reg_idx, RegVal val) override
342  {
343  actualTC->setFloatReg(reg_idx, val);
344  checkerTC->setFloatReg(reg_idx, val);
345  }
346 
347  void
348  setVecReg(const RegId& reg, const TheISA::VecRegContainer& val) override
349  {
350  actualTC->setVecReg(reg, val);
352  }
353 
354  void
355  setVecElem(const RegId& reg, const TheISA::VecElem& val) override
356  {
357  actualTC->setVecElem(reg, val);
359  }
360 
361  void
363  const TheISA::VecPredRegContainer& val) override
364  {
365  actualTC->setVecPredReg(reg, val);
367  }
368 
369  void
370  setCCReg(RegIndex reg_idx, RegVal val) override
371  {
372  actualTC->setCCReg(reg_idx, val);
373  checkerTC->setCCReg(reg_idx, val);
374  }
375 
377  TheISA::PCState pcState() const override { return actualTC->pcState(); }
378 
380  void
381  pcState(const TheISA::PCState &val) override
382  {
383  DPRINTF(Checker, "Changing PC to %s, old PC %s\n",
384  val, checkerTC->pcState());
387  return actualTC->pcState(val);
388  }
389 
390  void
392  {
393  checkerTC->setNPC(val);
394  actualTC->setNPC(val);
395  }
396 
397  void
399  {
400  return actualTC->pcState(val);
401  }
402 
404  Addr instAddr() const override { return actualTC->instAddr(); }
405 
407  Addr nextInstAddr() const override { return actualTC->nextInstAddr(); }
408 
410  MicroPC microPC() const override { return actualTC->microPC(); }
411 
412  RegVal
413  readMiscRegNoEffect(RegIndex misc_reg) const override
414  {
415  return actualTC->readMiscRegNoEffect(misc_reg);
416  }
417 
418  RegVal
419  readMiscReg(RegIndex misc_reg) override
420  {
421  return actualTC->readMiscReg(misc_reg);
422  }
423 
424  void
425  setMiscRegNoEffect(RegIndex misc_reg, RegVal val) override
426  {
427  DPRINTF(Checker, "Setting misc reg with no effect: %d to both Checker"
428  " and O3..\n", misc_reg);
429  checkerTC->setMiscRegNoEffect(misc_reg, val);
430  actualTC->setMiscRegNoEffect(misc_reg, val);
431  }
432 
433  void
434  setMiscReg(RegIndex misc_reg, RegVal val) override
435  {
436  DPRINTF(Checker, "Setting misc reg with effect: %d to both Checker"
437  " and O3..\n", misc_reg);
438  checkerTC->setMiscReg(misc_reg, val);
439  actualTC->setMiscReg(misc_reg, val);
440  }
441 
442  RegId
443  flattenRegId(const RegId& regId) const override
444  {
445  return actualTC->flattenRegId(regId);
446  }
447 
448  unsigned
449  readStCondFailures() const override
450  {
451  return actualTC->readStCondFailures();
452  }
453 
454  void
455  setStCondFailures(unsigned sc_failures) override
456  {
457  actualTC->setStCondFailures(sc_failures);
458  }
459 
460  Counter
461  readFuncExeInst() const override
462  {
463  return actualTC->readFuncExeInst();
464  }
465 
466  RegVal
467  readIntRegFlat(RegIndex idx) const override
468  {
469  return actualTC->readIntRegFlat(idx);
470  }
471 
472  void
474  {
475  actualTC->setIntRegFlat(idx, val);
476  }
477 
478  RegVal
479  readFloatRegFlat(RegIndex idx) const override
480  {
481  return actualTC->readFloatRegFlat(idx);
482  }
483 
484  void
486  {
487  actualTC->setFloatRegFlat(idx, val);
488  }
489 
491  readVecRegFlat(RegIndex idx) const override
492  {
493  return actualTC->readVecRegFlat(idx);
494  }
495 
501  {
502  return actualTC->getWritableVecRegFlat(idx);
503  }
504 
505  void
507  {
508  actualTC->setVecRegFlat(idx, val);
509  }
510 
511  const TheISA::VecElem &
512  readVecElemFlat(RegIndex idx, const ElemIndex& elem_idx) const override
513  {
514  return actualTC->readVecElemFlat(idx, elem_idx);
515  }
516 
517  void
518  setVecElemFlat(RegIndex idx, const ElemIndex& elem_idx,
519  const TheISA::VecElem& val) override
520  {
521  actualTC->setVecElemFlat(idx, elem_idx, val);
522  }
523 
525  readVecPredRegFlat(RegIndex idx) const override
526  {
527  return actualTC->readVecPredRegFlat(idx);
528  }
529 
532  {
533  return actualTC->getWritableVecPredRegFlat(idx);
534  }
535 
536  void
538  const TheISA::VecPredRegContainer& val) override
539  {
540  actualTC->setVecPredRegFlat(idx, val);
541  }
542 
543  RegVal
544  readCCRegFlat(RegIndex idx) const override
545  {
546  return actualTC->readCCRegFlat(idx);
547  }
548 
549  void
551  {
552  actualTC->setCCRegFlat(idx, val);
553  }
554 
555  // hardware transactional memory
556  void
557  htmAbortTransaction(uint64_t htm_uid, HtmFailureFaultCause cause) override
558  {
559  panic("function not implemented");
560  }
561 
564  {
565  panic("function not implemented");
566  }
567 
568  void
570  {
571  panic("function not implemented");
572  }
573 
574 };
575 
576 #endif // __CPU_CHECKER_EXEC_CONTEXT_HH__
SimpleThread::clearArchRegs
void clearArchRegs() override
Definition: simple_thread.hh:253
CheckerThreadContext::readVec64BitLaneReg
ConstVecLane64 readVec64BitLaneReg(const RegId &reg) const override
Reads source vector 64bit operand.
Definition: thread_context.hh:277
CheckerThreadContext::getProcessPtr
Process * getProcessPtr() override
Definition: thread_context.hh:148
SimpleThread::setThreadId
void setThreadId(int id) override
Definition: simple_thread.hh:201
CheckerThreadContext::getWritableVecRegFlat
TheISA::VecRegContainer & getWritableVecRegFlat(RegIndex idx) override
Read vector register for modification, flat indexing.
Definition: thread_context.hh:500
SimpleThread::setVecReg
void setVecReg(const RegId &reg, const TheISA::VecRegContainer &val) override
Definition: simple_thread.hh:465
CheckerThreadContext::setVecElemFlat
void setVecElemFlat(RegIndex idx, const ElemIndex &elem_idx, const TheISA::VecElem &val) override
Definition: thread_context.hh:518
CheckerThreadContext::setCCReg
void setCCReg(RegIndex reg_idx, RegVal val) override
Definition: thread_context.hh:370
CheckerThreadContext::readVecReg
const TheISA::VecRegContainer & readVecReg(const RegId &reg) const override
Definition: thread_context.hh:238
SimpleThread::pcState
TheISA::PCState pcState() const override
Definition: simple_thread.hh:505
CheckerThreadContext::getDecoderPtr
TheISA::Decoder * getDecoderPtr() override
Definition: thread_context.hh:141
CheckerThreadContext::getVirtProxy
PortProxy & getVirtProxy() override
Definition: thread_context.hh:155
CheckerThreadContext::getWritableVecReg
TheISA::VecRegContainer & getWritableVecReg(const RegId &reg) override
Read vector register for modification, hierarchical indexing.
Definition: thread_context.hh:247
CheckerThreadContext::setThreadId
void setThreadId(int id) override
Definition: thread_context.hh:124
BaseMMU
Definition: mmu.hh:45
ArmISA::VecRegContainer
VecReg::Container VecRegContainer
Definition: registers.hh:63
CheckerThreadContext::initMemProxies
void initMemProxies(ThreadContext *tc) override
Initialise the physical and virtual port proxies and tie them to the data port of the CPU.
Definition: thread_context.hh:161
CheckerThreadContext::setStatus
void setStatus(Status new_status) override
Definition: thread_context.hh:175
CheckerThreadContext::readVec32BitLaneReg
ConstVecLane32 readVec32BitLaneReg(const RegId &reg) const override
Reads source vector 32bit operand.
Definition: thread_context.hh:270
CheckerThreadContext::getWritableVecPredRegFlat
TheISA::VecPredRegContainer & getWritableVecPredRegFlat(RegIndex idx) override
Definition: thread_context.hh:531
Process
Definition: process.hh:65
CheckerThreadContext::clearArchRegs
void clearArchRegs() override
Definition: thread_context.hh:216
ThreadContext::regStats
virtual void regStats(const std::string &name)
Definition: thread_context.hh:182
CheckerThreadContext::readFloatRegFlat
RegVal readFloatRegFlat(RegIndex idx) const override
Definition: thread_context.hh:479
CheckerThreadContext::readCCReg
RegVal readCCReg(RegIndex reg_idx) const override
Definition: thread_context.hh:328
CheckerThreadContext::readVecPredRegFlat
const TheISA::VecPredRegContainer & readVecPredRegFlat(RegIndex idx) const override
Definition: thread_context.hh:525
CheckerThreadContext::readVecRegFlat
const TheISA::VecRegContainer & readVecRegFlat(RegIndex idx) const override
Definition: thread_context.hh:491
CheckerThreadContext::readStCondFailures
unsigned readStCondFailures() const override
Definition: thread_context.hh:449
CheckerThreadContext::setVecLane
virtual void setVecLane(const RegId &reg, const LaneData< LaneSize::EightByte > &val) override
Definition: thread_context.hh:302
CheckerThreadContext::readVecElem
const TheISA::VecElem & readVecElem(const RegId &reg) const override
Definition: thread_context.hh:310
ContextID
int ContextID
Globally unique thread context ID.
Definition: types.hh:237
TheISA
Definition: thread_context.hh:52
CheckerThreadContext::regStats
void regStats(const std::string &name) override
Definition: thread_context.hh:198
Tick
uint64_t Tick
Tick count type.
Definition: types.hh:59
ArmISA::VecPredRegContainer
VecPredReg::Container VecPredRegContainer
Definition: registers.hh:69
SimpleThread::setIntReg
void setIntReg(RegIndex reg_idx, RegVal val) override
Definition: simple_thread.hh:442
Checker
Templated Checker class.
Definition: cpu.hh:638
SimpleThread::setCCReg
void setCCReg(RegIndex reg_idx, RegVal val) override
Definition: simple_thread.hh:496
CheckerThreadContext::schedule
bool schedule(PCEvent *e) override
Definition: thread_context.hh:87
CheckerThreadContext::readVecElemFlat
const TheISA::VecElem & readVecElemFlat(RegIndex idx, const ElemIndex &elem_idx) const override
Definition: thread_context.hh:512
CheckerCPU
CheckerCPU class.
Definition: cpu.hh:85
CheckerThreadContext::contextId
ContextID contextId() const override
Definition: thread_context.hh:112
CheckerThreadContext::pcStateNoRecord
void pcStateNoRecord(const TheISA::PCState &val) override
Definition: thread_context.hh:398
CheckerThreadContext::setVecReg
void setVecReg(const RegId &reg, const TheISA::VecRegContainer &val) override
Definition: thread_context.hh:348
HtmFailureFaultCause
HtmFailureFaultCause
Definition: htm.hh:44
X86ISA::count
count
Definition: misc.hh:703
CheckerThreadContext::scheduleInstCountEvent
void scheduleInstCountEvent(Event *event, Tick count) override
Definition: thread_context.hh:91
CheckerThreadContext::setVecLane
virtual void setVecLane(const RegId &reg, const LaneData< LaneSize::Byte > &val) override
Write a lane of the destination vector register.
Definition: thread_context.hh:284
CheckerThreadContext::checkerCPU
CheckerCPU * checkerCPU
Pointer to the checker CPU.
Definition: thread_context.hh:84
CheckerThreadContext::pcState
void pcState(const TheISA::PCState &val) override
Sets this thread's PC state.
Definition: thread_context.hh:381
X86ISA::reg
Bitfield< 5, 3 > reg
Definition: types.hh:88
CheckerThreadContext::getMMUPtr
BaseMMU * getMMUPtr() override
Definition: thread_context.hh:130
CheckerCPU::recordPCChange
void recordPCChange(const TheISA::PCState &val)
Definition: cpu.hh:530
CheckerThreadContext::copyArchRegs
void copyArchRegs(ThreadContext *tc) override
Definition: thread_context.hh:209
SimpleThread::setMiscRegNoEffect
void setMiscRegNoEffect(RegIndex misc_reg, RegVal val) override
Definition: simple_thread.hh:533
RegId
Register ID: describe an architectural register with its class and index.
Definition: reg_class.hh:75
CheckerThreadContext::setIntReg
void setIntReg(RegIndex reg_idx, RegVal val) override
Definition: thread_context.hh:334
SimpleThread
The SimpleThread object provides a combination of the ThreadState object and the ThreadContext interf...
Definition: simple_thread.hh:90
CheckerThreadContext::setMiscReg
void setMiscReg(RegIndex misc_reg, RegVal val) override
Definition: thread_context.hh:434
SimpleThread::setMiscReg
void setMiscReg(RegIndex misc_reg, RegVal val) override
Definition: simple_thread.hh:539
CheckerThreadContext::getHtmCheckpointPtr
BaseHTMCheckpointPtr & getHtmCheckpointPtr() override
Definition: thread_context.hh:563
Counter
int64_t Counter
Statistics counter type.
Definition: types.hh:54
ArmISA::VecElem
uint32_t VecElem
Definition: registers.hh:60
CheckerThreadContext::readMiscReg
RegVal readMiscReg(RegIndex misc_reg) override
Definition: thread_context.hh:419
CheckerThreadContext::setProcessPtr
void setProcessPtr(Process *p) override
Definition: thread_context.hh:150
CheckerThreadContext::setVecElem
void setVecElem(const RegId &reg, const TheISA::VecElem &val) override
Definition: thread_context.hh:355
CheckerThreadContext::cpuId
int cpuId() const override
Definition: thread_context.hh:110
ThreadContext
ThreadContext is the external interface to all thread state for anything outside of the CPU.
Definition: thread_context.hh:88
SimpleThread::setStatus
void setStatus(Status newStatus) override
Definition: simple_thread.hh:228
Event
Definition: eventq.hh:248
VecLaneT
Vector Lane abstraction Another view of a container.
Definition: vec_reg.hh:262
CheckerThreadContext::readFuncExeInst
Counter readFuncExeInst() const override
Definition: thread_context.hh:461
CheckerThreadContext::setContextId
void setContextId(ContextID id) override
Definition: thread_context.hh:115
System
Definition: system.hh:73
DPRINTF
#define DPRINTF(x,...)
Definition: trace.hh:237
CheckerThreadContext::setVecPredReg
void setVecPredReg(const RegId &reg, const TheISA::VecPredRegContainer &val) override
Definition: thread_context.hh:362
CheckerThreadContext::setMiscRegNoEffect
void setMiscRegNoEffect(RegIndex misc_reg, RegVal val) override
Definition: thread_context.hh:425
MipsISA::event
Bitfield< 10, 5 > event
Definition: pra_constants.hh:297
SimpleThread::setVecElem
void setVecElem(const RegId &reg, const TheISA::VecElem &val) override
Definition: simple_thread.hh:475
CheckerThreadContext::getCpuPtr
BaseCPU * getCpuPtr() override
Definition: thread_context.hh:106
CheckerThreadContext::halt
void halt() override
Set the status to Halted.
Definition: thread_context.hh:188
CheckerThreadContext::htmAbortTransaction
void htmAbortTransaction(uint64_t htm_uid, HtmFailureFaultCause cause) override
Definition: thread_context.hh:557
cpu.hh
CheckerThreadContext::flattenRegId
RegId flattenRegId(const RegId &regId) const override
Definition: thread_context.hh:443
CheckerThreadContext::status
Status status() const override
Definition: thread_context.hh:172
CheckerThreadContext::CheckerThreadContext
CheckerThreadContext(TC *actual_tc, CheckerCPU *checker_cpu)
Definition: thread_context.hh:69
CheckerThreadContext::readFloatReg
RegVal readFloatReg(RegIndex reg_idx) const override
Definition: thread_context.hh:232
CheckerThreadContext::readIntRegFlat
RegVal readIntRegFlat(RegIndex idx) const override
Flat register interfaces.
Definition: thread_context.hh:467
CheckerThreadContext::connectMemPorts
void connectMemPorts(ThreadContext *tc)
Definition: thread_context.hh:167
SimpleThread::copyState
void copyState(ThreadContext *oldContext)
Definition: simple_thread.cc:107
SimpleThread::setVecPredReg
void setVecPredReg(const RegId &reg, const TheISA::VecPredRegContainer &val) override
Definition: simple_thread.hh:485
CheckerThreadContext::getPhysProxy
PortProxy & getPhysProxy() override
Definition: thread_context.hh:152
CheckerThreadContext::remove
bool remove(PCEvent *e) override
Definition: thread_context.hh:88
CheckerThreadContext::setIntRegFlat
void setIntRegFlat(RegIndex idx, RegVal val) override
Definition: thread_context.hh:473
SimpleThread::copyArchRegs
void copyArchRegs(ThreadContext *tc) override
Definition: simple_thread.cc:169
CheckerThreadContext::actualTC
TC * actualTC
The main CPU's ThreadContext, or class that implements the ThreadContext interface.
Definition: thread_context.hh:78
ThreadContext::setNPC
void setNPC(Addr val)
Definition: thread_context.hh:265
X86ISA::val
Bitfield< 63 > val
Definition: misc.hh:769
CheckerThreadContext::getCurrentInstCount
Tick getCurrentInstCount() override
Definition: thread_context.hh:101
Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:148
ThreadContext::Status
Status
Definition: thread_context.hh:99
BaseHTMCheckpointPtr
std::unique_ptr< BaseHTMCheckpoint > BaseHTMCheckpointPtr
Definition: htm.hh:122
name
const std::string & name()
Definition: trace.cc:48
SimpleThread::setFloatReg
void setFloatReg(RegIndex reg_idx, RegVal val) override
Definition: simple_thread.hh:452
CheckerThreadContext::setVecPredRegFlat
void setVecPredRegFlat(RegIndex idx, const TheISA::VecPredRegContainer &val) override
Definition: thread_context.hh:537
CheckerThreadContext::setNPC
void setNPC(Addr val)
Definition: thread_context.hh:391
CheckerThreadContext::nextInstAddr
Addr nextInstAddr() const override
Reads this thread's next PC.
Definition: thread_context.hh:407
ArmISA::e
Bitfield< 9 > e
Definition: miscregs_types.hh:61
CheckerThreadContext::readIntReg
RegVal readIntReg(RegIndex reg_idx) const override
Definition: thread_context.hh:226
CheckerThreadContext::readVecPredReg
const TheISA::VecPredRegContainer & readVecPredReg(const RegId &reg) const override
Definition: thread_context.hh:316
CheckerThreadContext::readCCRegFlat
RegVal readCCRegFlat(RegIndex idx) const override
Definition: thread_context.hh:544
CheckerThreadContext::getCheckerCpuPtr
CheckerCPU * getCheckerCpuPtr() override
Definition: thread_context.hh:133
BaseCPU
Definition: base.hh:104
CheckerThreadContext::readVec8BitLaneReg
ConstVecLane8 readVec8BitLaneReg(const RegId &reg) const override
Vector Register Lane Interfaces.
Definition: thread_context.hh:256
CheckerThreadContext::getIsaPtr
BaseISA * getIsaPtr() override
Definition: thread_context.hh:138
CheckerThreadContext::takeOverFrom
void takeOverFrom(ThreadContext *oldContext) override
Definition: thread_context.hh:191
CheckerThreadContext::readMiscRegNoEffect
RegVal readMiscRegNoEffect(RegIndex misc_reg) const override
Definition: thread_context.hh:413
simple_thread.hh
PortProxy
This object is a proxy for a port or other object which implements the functional response protocol,...
Definition: port_proxy.hh:80
MipsISA::PCState
GenericISA::DelaySlotPCState< MachInst > PCState
Definition: types.hh:41
RegIndex
uint16_t RegIndex
Definition: types.hh:52
CheckerThreadContext::activate
void activate() override
Set the status to Active.
Definition: thread_context.hh:182
CheckerThreadContext::readLastSuspend
Tick readLastSuspend() override
Definition: thread_context.hh:205
CheckerThreadContext::socketId
uint32_t socketId() const override
Definition: thread_context.hh:108
ElemIndex
uint16_t ElemIndex
Logical vector register elem index type.
Definition: types.hh:55
CheckerThreadContext::descheduleInstCountEvent
void descheduleInstCountEvent(Event *event) override
Definition: thread_context.hh:96
CheckerThreadContext::checkerTC
SimpleThread * checkerTC
The checker's own SimpleThread.
Definition: thread_context.hh:82
CheckerThreadContext
Derived ThreadContext class for use with the Checker.
Definition: thread_context.hh:66
CheckerThreadContext::getSystemPtr
System * getSystemPtr() override
Definition: thread_context.hh:146
PCEvent
Definition: pc_event.hh:42
MipsISA::p
Bitfield< 0 > p
Definition: pra_constants.hh:323
MicroPC
uint16_t MicroPC
Definition: types.hh:150
CheckerThreadContext::microPC
MicroPC microPC() const override
Reads this thread's next PC.
Definition: thread_context.hh:410
CheckerThreadContext::setVecRegFlat
void setVecRegFlat(RegIndex idx, const TheISA::VecRegContainer &val) override
Definition: thread_context.hh:506
CheckerThreadContext::readVec16BitLaneReg
ConstVecLane16 readVec16BitLaneReg(const RegId &reg) const override
Reads source vector 16bit operand.
Definition: thread_context.hh:263
CheckerThreadContext::readLastActivate
Tick readLastActivate() override
Definition: thread_context.hh:204
CheckerThreadContext::setCCRegFlat
void setCCRegFlat(RegIndex idx, RegVal val) override
Definition: thread_context.hh:550
BaseISA
Definition: isa.hh:47
CheckerThreadContext::setFloatRegFlat
void setFloatRegFlat(RegIndex idx, RegVal val) override
Definition: thread_context.hh:485
CheckerThreadContext::suspend
void suspend() override
Set the status to Suspended.
Definition: thread_context.hh:185
CheckerThreadContext::setVecLane
virtual void setVecLane(const RegId &reg, const LaneData< LaneSize::TwoByte > &val) override
Definition: thread_context.hh:290
CheckerThreadContext::instAddr
Addr instAddr() const override
Reads this thread's PC.
Definition: thread_context.hh:404
CheckerThreadContext::setFloatReg
void setFloatReg(RegIndex reg_idx, RegVal val) override
Definition: thread_context.hh:341
SimpleThread::setContextId
void setContextId(ContextID id) override
Definition: simple_thread.hh:203
thread_context.hh
CheckerThreadContext::setVecLane
virtual void setVecLane(const RegId &reg, const LaneData< LaneSize::FourByte > &val) override
Definition: thread_context.hh:296
CheckerThreadContext::setStCondFailures
void setStCondFailures(unsigned sc_failures) override
Definition: thread_context.hh:455
LaneData
LaneSize is an abstraction of a LS byte value for the execution and thread contexts to handle values ...
Definition: vec_reg.hh:458
RegVal
uint64_t RegVal
Definition: types.hh:174
CheckerThreadContext::setHtmCheckpointPtr
void setHtmCheckpointPtr(BaseHTMCheckpointPtr new_cpt) override
Definition: thread_context.hh:569
CheckerThreadContext::threadId
int threadId() const override
Returns this thread's ID number.
Definition: thread_context.hh:122
panic
#define panic(...)
This implements a cprintf based panic() function.
Definition: logging.hh:171
CheckerThreadContext::pcState
TheISA::PCState pcState() const override
Reads this thread's PC state.
Definition: thread_context.hh:377
CheckerThreadContext::getWritableVecPredReg
TheISA::VecPredRegContainer & getWritableVecPredReg(const RegId &reg) override
Definition: thread_context.hh:322

Generated on Tue Jun 22 2021 15:28:19 for gem5 by doxygen 1.8.17