gem5  v20.1.0.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  BaseTLB *getITBPtr() override { return actualTC->getITBPtr(); }
131 
132  BaseTLB *getDTBPtr() override { return actualTC->getDTBPtr(); }
133 
134  CheckerCPU *
135  getCheckerCpuPtr() override
136  {
137  return checkerCPU;
138  }
139 
140  BaseISA *getIsaPtr() override { return actualTC->getIsaPtr(); }
141 
142  TheISA::Decoder *
143  getDecoderPtr() override
144  {
145  return actualTC->getDecoderPtr();
146  }
147 
148  System *getSystemPtr() override { return actualTC->getSystemPtr(); }
149 
150  Process *getProcessPtr() override { return actualTC->getProcessPtr(); }
151 
152  void setProcessPtr(Process *p) override { actualTC->setProcessPtr(p); }
153 
154  PortProxy &getPhysProxy() override { return actualTC->getPhysProxy(); }
155 
156  PortProxy &
157  getVirtProxy() override
158  {
159  return actualTC->getVirtProxy();
160  }
161 
162  void
164  {
165  actualTC->initMemProxies(tc);
166  }
167 
168  void
170  {
171  actualTC->connectMemPorts(tc);
172  }
173 
175  void syscall() override { return actualTC->syscall(); }
176 
177  Status status() const override { return actualTC->status(); }
178 
179  void
180  setStatus(Status new_status) override
181  {
182  actualTC->setStatus(new_status);
183  checkerTC->setStatus(new_status);
184  }
185 
187  void activate() override { actualTC->activate(); }
188 
190  void suspend() override { actualTC->suspend(); }
191 
193  void halt() override { actualTC->halt(); }
194 
195  void
196  takeOverFrom(ThreadContext *oldContext) override
197  {
198  actualTC->takeOverFrom(oldContext);
199  checkerTC->copyState(oldContext);
200  }
201 
202  void
203  regStats(const std::string &name) override
204  {
205  actualTC->regStats(name);
207  }
208 
209  Tick readLastActivate() override { return actualTC->readLastActivate(); }
210  Tick readLastSuspend() override { return actualTC->readLastSuspend(); }
211 
212  // @todo: Do I need this?
213  void
215  {
216  actualTC->copyArchRegs(tc);
217  checkerTC->copyArchRegs(tc);
218  }
219 
220  void
221  clearArchRegs() override
222  {
223  actualTC->clearArchRegs();
225  }
226 
227  //
228  // New accessors for new decoder.
229  //
230  RegVal
231  readIntReg(RegIndex reg_idx) const override
232  {
233  return actualTC->readIntReg(reg_idx);
234  }
235 
236  RegVal
237  readFloatReg(RegIndex reg_idx) const override
238  {
239  return actualTC->readFloatReg(reg_idx);
240  }
241 
242  const VecRegContainer &
243  readVecReg (const RegId &reg) const override
244  {
245  return actualTC->readVecReg(reg);
246  }
247 
252  getWritableVecReg (const RegId &reg) override
253  {
254  return actualTC->getWritableVecReg(reg);
255  }
256 
261  readVec8BitLaneReg(const RegId &reg) const override
262  {
263  return actualTC->readVec8BitLaneReg(reg);
264  }
265 
268  readVec16BitLaneReg(const RegId &reg) const override
269  {
270  return actualTC->readVec16BitLaneReg(reg);
271  }
272 
275  readVec32BitLaneReg(const RegId &reg) const override
276  {
277  return actualTC->readVec32BitLaneReg(reg);
278  }
279 
282  readVec64BitLaneReg(const RegId &reg) const override
283  {
284  return actualTC->readVec64BitLaneReg(reg);
285  }
286 
288  virtual void
290  const LaneData<LaneSize::Byte> &val) override
291  {
292  return actualTC->setVecLane(reg, val);
293  }
294  virtual void
296  const LaneData<LaneSize::TwoByte> &val) override
297  {
298  return actualTC->setVecLane(reg, val);
299  }
300  virtual void
302  const LaneData<LaneSize::FourByte> &val) override
303  {
304  return actualTC->setVecLane(reg, val);
305  }
306  virtual void
308  const LaneData<LaneSize::EightByte> &val) override
309  {
310  return actualTC->setVecLane(reg, val);
311  }
314  const VecElem &
315  readVecElem(const RegId& reg) const override
316  {
317  return actualTC->readVecElem(reg);
318  }
319 
320  const VecPredRegContainer &
321  readVecPredReg(const RegId& reg) const override
322  {
323  return actualTC->readVecPredReg(reg);
324  }
325 
327  getWritableVecPredReg(const RegId& reg) override
328  {
329  return actualTC->getWritableVecPredReg(reg);
330  }
331 
332  RegVal
333  readCCReg(RegIndex reg_idx) const override
334  {
335  return actualTC->readCCReg(reg_idx);
336  }
337 
338  void
339  setIntReg(RegIndex reg_idx, RegVal val) override
340  {
341  actualTC->setIntReg(reg_idx, val);
342  checkerTC->setIntReg(reg_idx, val);
343  }
344 
345  void
346  setFloatReg(RegIndex reg_idx, RegVal val) override
347  {
348  actualTC->setFloatReg(reg_idx, val);
349  checkerTC->setFloatReg(reg_idx, val);
350  }
351 
352  void
353  setVecReg(const RegId& reg, const VecRegContainer& val) override
354  {
355  actualTC->setVecReg(reg, val);
357  }
358 
359  void
360  setVecElem(const RegId& reg, const VecElem& val) override
361  {
362  actualTC->setVecElem(reg, val);
364  }
365 
366  void
367  setVecPredReg(const RegId& reg, const VecPredRegContainer& val) override
368  {
369  actualTC->setVecPredReg(reg, val);
371  }
372 
373  void
374  setCCReg(RegIndex reg_idx, RegVal val) override
375  {
376  actualTC->setCCReg(reg_idx, val);
377  checkerTC->setCCReg(reg_idx, val);
378  }
379 
381  TheISA::PCState pcState() const override { return actualTC->pcState(); }
382 
384  void
385  pcState(const TheISA::PCState &val) override
386  {
387  DPRINTF(Checker, "Changing PC to %s, old PC %s\n",
388  val, checkerTC->pcState());
391  return actualTC->pcState(val);
392  }
393 
394  void
396  {
397  checkerTC->setNPC(val);
398  actualTC->setNPC(val);
399  }
400 
401  void
403  {
404  return actualTC->pcState(val);
405  }
406 
408  Addr instAddr() const override { return actualTC->instAddr(); }
409 
411  Addr nextInstAddr() const override { return actualTC->nextInstAddr(); }
412 
414  MicroPC microPC() const override { return actualTC->microPC(); }
415 
416  RegVal
417  readMiscRegNoEffect(RegIndex misc_reg) const override
418  {
419  return actualTC->readMiscRegNoEffect(misc_reg);
420  }
421 
422  RegVal
423  readMiscReg(RegIndex misc_reg) override
424  {
425  return actualTC->readMiscReg(misc_reg);
426  }
427 
428  void
429  setMiscRegNoEffect(RegIndex misc_reg, RegVal val) override
430  {
431  DPRINTF(Checker, "Setting misc reg with no effect: %d to both Checker"
432  " and O3..\n", misc_reg);
433  checkerTC->setMiscRegNoEffect(misc_reg, val);
434  actualTC->setMiscRegNoEffect(misc_reg, val);
435  }
436 
437  void
438  setMiscReg(RegIndex misc_reg, RegVal val) override
439  {
440  DPRINTF(Checker, "Setting misc reg with effect: %d to both Checker"
441  " and O3..\n", misc_reg);
442  checkerTC->setMiscReg(misc_reg, val);
443  actualTC->setMiscReg(misc_reg, val);
444  }
445 
446  RegId
447  flattenRegId(const RegId& regId) const override
448  {
449  return actualTC->flattenRegId(regId);
450  }
451 
452  unsigned
453  readStCondFailures() const override
454  {
455  return actualTC->readStCondFailures();
456  }
457 
458  void
459  setStCondFailures(unsigned sc_failures) override
460  {
461  actualTC->setStCondFailures(sc_failures);
462  }
463 
464  Counter
465  readFuncExeInst() const override
466  {
467  return actualTC->readFuncExeInst();
468  }
469 
470  RegVal
471  readIntRegFlat(RegIndex idx) const override
472  {
473  return actualTC->readIntRegFlat(idx);
474  }
475 
476  void
478  {
479  actualTC->setIntRegFlat(idx, val);
480  }
481 
482  RegVal
483  readFloatRegFlat(RegIndex idx) const override
484  {
485  return actualTC->readFloatRegFlat(idx);
486  }
487 
488  void
490  {
491  actualTC->setFloatRegFlat(idx, val);
492  }
493 
494  const VecRegContainer &
495  readVecRegFlat(RegIndex idx) const override
496  {
497  return actualTC->readVecRegFlat(idx);
498  }
499 
505  {
506  return actualTC->getWritableVecRegFlat(idx);
507  }
508 
509  void
511  {
512  actualTC->setVecRegFlat(idx, val);
513  }
514 
515  const VecElem &
516  readVecElemFlat(RegIndex idx, const ElemIndex& elem_idx) const override
517  {
518  return actualTC->readVecElemFlat(idx, elem_idx);
519  }
520 
521  void
523  const ElemIndex& elem_idx, const VecElem& val) override
524  {
525  actualTC->setVecElemFlat(idx, elem_idx, val);
526  }
527 
528  const VecPredRegContainer &
529  readVecPredRegFlat(RegIndex idx) const override
530  {
531  return actualTC->readVecPredRegFlat(idx);
532  }
533 
536  {
537  return actualTC->getWritableVecPredRegFlat(idx);
538  }
539 
540  void
542  {
543  actualTC->setVecPredRegFlat(idx, val);
544  }
545 
546  RegVal
547  readCCRegFlat(RegIndex idx) const override
548  {
549  return actualTC->readCCRegFlat(idx);
550  }
551 
552  void
554  {
555  actualTC->setCCRegFlat(idx, val);
556  }
557 
558  // hardware transactional memory
559  void
560  htmAbortTransaction(uint64_t htm_uid, HtmFailureFaultCause cause) override
561  {
562  panic("function not implemented");
563  }
564 
567  {
568  panic("function not implemented");
569  }
570 
571  void
573  {
574  panic("function not implemented");
575  }
576 
577 };
578 
579 #endif // __CPU_CHECKER_EXEC_CONTEXT_HH__
SimpleThread::clearArchRegs
void clearArchRegs() override
Definition: simple_thread.hh:269
CheckerThreadContext::readVec64BitLaneReg
ConstVecLane64 readVec64BitLaneReg(const RegId &reg) const override
Reads source vector 64bit operand.
Definition: thread_context.hh:282
CheckerThreadContext::getProcessPtr
Process * getProcessPtr() override
Definition: thread_context.hh:150
SimpleThread::setThreadId
void setThreadId(int id) override
Definition: simple_thread.hh:215
CheckerThreadContext::setCCReg
void setCCReg(RegIndex reg_idx, RegVal val) override
Definition: thread_context.hh:374
CheckerThreadContext::setVecRegFlat
void setVecRegFlat(RegIndex idx, const VecRegContainer &val) override
Definition: thread_context.hh:510
SimpleThread::pcState
TheISA::PCState pcState() const override
Definition: simple_thread.hh:517
CheckerThreadContext::getDecoderPtr
TheISA::Decoder * getDecoderPtr() override
Definition: thread_context.hh:143
CheckerThreadContext::getVirtProxy
PortProxy & getVirtProxy() override
Definition: thread_context.hh:157
CheckerThreadContext::readVecPredRegFlat
const VecPredRegContainer & readVecPredRegFlat(RegIndex idx) const override
Definition: thread_context.hh:529
CheckerThreadContext::setThreadId
void setThreadId(int id) override
Definition: thread_context.hh:124
VecPredRegContainer
Generic predicate register container.
Definition: vec_pred_reg.hh:47
SimpleThread::setVecReg
void setVecReg(const RegId &reg, const VecRegContainer &val) override
Definition: simple_thread.hh:478
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:163
CheckerThreadContext::setStatus
void setStatus(Status new_status) override
Definition: thread_context.hh:180
CheckerThreadContext::readVec32BitLaneReg
ConstVecLane32 readVec32BitLaneReg(const RegId &reg) const override
Reads source vector 32bit operand.
Definition: thread_context.hh:275
CheckerThreadContext::readVecElemFlat
const VecElem & readVecElemFlat(RegIndex idx, const ElemIndex &elem_idx) const override
Definition: thread_context.hh:516
Process
Definition: process.hh:65
CheckerThreadContext::clearArchRegs
void clearArchRegs() override
Definition: thread_context.hh:221
ThreadContext::regStats
virtual void regStats(const std::string &name)
Definition: thread_context.hh:183
CheckerThreadContext::readFloatRegFlat
RegVal readFloatRegFlat(RegIndex idx) const override
Definition: thread_context.hh:483
CheckerThreadContext::readCCReg
RegVal readCCReg(RegIndex reg_idx) const override
Definition: thread_context.hh:333
CheckerThreadContext::readStCondFailures
unsigned readStCondFailures() const override
Definition: thread_context.hh:453
CheckerThreadContext::setVecLane
virtual void setVecLane(const RegId &reg, const LaneData< LaneSize::EightByte > &val) override
Definition: thread_context.hh:307
ContextID
int ContextID
Globally unique thread context ID.
Definition: types.hh:231
TheISA
Definition: decode_cache.hh:37
CheckerThreadContext::regStats
void regStats(const std::string &name) override
Definition: thread_context.hh:203
Tick
uint64_t Tick
Tick count type.
Definition: types.hh:63
SimpleThread::setIntReg
void setIntReg(RegIndex reg_idx, RegVal val) override
Definition: simple_thread.hh:455
Checker
Templated Checker class.
Definition: cpu.hh:653
SimpleThread::setCCReg
void setCCReg(RegIndex reg_idx, RegVal val) override
Definition: simple_thread.hh:508
CheckerThreadContext::schedule
bool schedule(PCEvent *e) override
Definition: thread_context.hh:87
CheckerCPU
CheckerCPU class.
Definition: cpu.hh:85
CheckerThreadContext::contextId
ContextID contextId() const override
Definition: thread_context.hh:112
CheckerThreadContext::readVecReg
const VecRegContainer & readVecReg(const RegId &reg) const override
Definition: thread_context.hh:243
CheckerThreadContext::pcStateNoRecord
void pcStateNoRecord(const TheISA::PCState &val) override
Definition: thread_context.hh:402
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::readVecElem
const VecElem & readVecElem(const RegId &reg) const override
Definition: thread_context.hh:315
CheckerThreadContext::readVecPredReg
const VecPredRegContainer & readVecPredReg(const RegId &reg) const override
Definition: thread_context.hh:321
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:289
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:385
X86ISA::reg
Bitfield< 5, 3 > reg
Definition: types.hh:87
CheckerCPU::recordPCChange
void recordPCChange(const TheISA::PCState &val)
Definition: cpu.hh:534
BaseTLB
Definition: tlb.hh:50
CheckerThreadContext::copyArchRegs
void copyArchRegs(ThreadContext *tc) override
Definition: thread_context.hh:214
SimpleThread::setMiscRegNoEffect
void setMiscRegNoEffect(RegIndex misc_reg, RegVal val) override
Definition: simple_thread.hh:545
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:339
SimpleThread
The SimpleThread object provides a combination of the ThreadState object and the ThreadContext interf...
Definition: simple_thread.hh:89
CheckerThreadContext::setMiscReg
void setMiscReg(RegIndex misc_reg, RegVal val) override
Definition: thread_context.hh:438
SimpleThread::setMiscReg
void setMiscReg(RegIndex misc_reg, RegVal val) override
Definition: simple_thread.hh:551
CheckerThreadContext::getHtmCheckpointPtr
BaseHTMCheckpointPtr & getHtmCheckpointPtr() override
Definition: thread_context.hh:566
CheckerThreadContext::setVecPredReg
void setVecPredReg(const RegId &reg, const VecPredRegContainer &val) override
Definition: thread_context.hh:367
ThreadContext::VecElem
TheISA::VecElem VecElem
Definition: thread_context.hh:93
CheckerThreadContext::readVecRegFlat
const VecRegContainer & readVecRegFlat(RegIndex idx) const override
Definition: thread_context.hh:495
Counter
int64_t Counter
Statistics counter type.
Definition: types.hh:58
CheckerThreadContext::getWritableVecPredRegFlat
VecPredRegContainer & getWritableVecPredRegFlat(RegIndex idx) override
Definition: thread_context.hh:535
CheckerThreadContext::readMiscReg
RegVal readMiscReg(RegIndex misc_reg) override
Definition: thread_context.hh:423
CheckerThreadContext::setProcessPtr
void setProcessPtr(Process *p) override
Definition: thread_context.hh:152
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:244
Event
Definition: eventq.hh:246
VecLaneT
Vector Lane abstraction Another view of a container.
Definition: vec_reg.hh:262
CheckerThreadContext::readFuncExeInst
Counter readFuncExeInst() const override
Definition: thread_context.hh:465
CheckerThreadContext::setContextId
void setContextId(ContextID id) override
Definition: thread_context.hh:115
System
Definition: system.hh:73
DPRINTF
#define DPRINTF(x,...)
Definition: trace.hh:234
CheckerThreadContext::setMiscRegNoEffect
void setMiscRegNoEffect(RegIndex misc_reg, RegVal val) override
Definition: thread_context.hh:429
CheckerThreadContext::getITBPtr
BaseTLB * getITBPtr() override
Definition: thread_context.hh:130
CheckerThreadContext::syscall
void syscall() override
Executes a syscall in SE mode.
Definition: thread_context.hh:175
CheckerThreadContext::setVecElem
void setVecElem(const RegId &reg, const VecElem &val) override
Definition: thread_context.hh:360
MipsISA::event
Bitfield< 10, 5 > event
Definition: pra_constants.hh:297
CheckerThreadContext::getCpuPtr
BaseCPU * getCpuPtr() override
Definition: thread_context.hh:106
CheckerThreadContext::halt
void halt() override
Set the status to Halted.
Definition: thread_context.hh:193
CheckerThreadContext::htmAbortTransaction
void htmAbortTransaction(uint64_t htm_uid, HtmFailureFaultCause cause) override
Definition: thread_context.hh:560
cpu.hh
CheckerThreadContext::flattenRegId
RegId flattenRegId(const RegId &regId) const override
Definition: thread_context.hh:447
CheckerThreadContext::status
Status status() const override
Definition: thread_context.hh:177
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:237
CheckerThreadContext::getDTBPtr
BaseTLB * getDTBPtr() override
Definition: thread_context.hh:132
CheckerThreadContext::readIntRegFlat
RegVal readIntRegFlat(RegIndex idx) const override
Flat register interfaces.
Definition: thread_context.hh:471
CheckerThreadContext::connectMemPorts
void connectMemPorts(ThreadContext *tc)
Definition: thread_context.hh:169
SimpleThread::copyState
void copyState(ThreadContext *oldContext)
Definition: simple_thread.cc:109
CheckerThreadContext::getPhysProxy
PortProxy & getPhysProxy() override
Definition: thread_context.hh:154
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:477
SimpleThread::setVecElem
void setVecElem(const RegId &reg, const VecElem &val) override
Definition: simple_thread.hh:488
SimpleThread::copyArchRegs
void copyArchRegs(ThreadContext *tc) override
Definition: simple_thread.cc:171
CheckerThreadContext::actualTC
TC * actualTC
The main CPU's ThreadContext, or class that implements the ThreadContext interface.
Definition: thread_context.hh:78
CheckerThreadContext::setVecElemFlat
void setVecElemFlat(RegIndex idx, const ElemIndex &elem_idx, const VecElem &val) override
Definition: thread_context.hh:522
ThreadContext::setNPC
void setNPC(Addr val)
Definition: thread_context.hh:263
X86ISA::val
Bitfield< 63 > val
Definition: misc.hh:769
CheckerThreadContext::getCurrentInstCount
Tick getCurrentInstCount() override
Definition: thread_context.hh:101
SimpleThread::setVecPredReg
void setVecPredReg(const RegId &reg, const VecPredRegContainer &val) override
Definition: simple_thread.hh:498
Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:142
ThreadContext::Status
Status
Definition: thread_context.hh:98
BaseHTMCheckpointPtr
std::unique_ptr< BaseHTMCheckpoint > BaseHTMCheckpointPtr
Definition: htm.hh:122
CheckerThreadContext::setVecPredRegFlat
void setVecPredRegFlat(RegIndex idx, const VecPredRegContainer &val) override
Definition: thread_context.hh:541
name
const std::string & name()
Definition: trace.cc:50
SimpleThread::setFloatReg
void setFloatReg(RegIndex reg_idx, RegVal val) override
Definition: simple_thread.hh:465
CheckerThreadContext::setNPC
void setNPC(Addr val)
Definition: thread_context.hh:395
CheckerThreadContext::nextInstAddr
Addr nextInstAddr() const override
Reads this thread's next PC.
Definition: thread_context.hh:411
ArmISA::e
Bitfield< 9 > e
Definition: miscregs_types.hh:61
CheckerThreadContext::readIntReg
RegVal readIntReg(RegIndex reg_idx) const override
Definition: thread_context.hh:231
CheckerThreadContext::readCCRegFlat
RegVal readCCRegFlat(RegIndex idx) const override
Definition: thread_context.hh:547
CheckerThreadContext::getCheckerCpuPtr
CheckerCPU * getCheckerCpuPtr() override
Definition: thread_context.hh:135
BaseCPU
Definition: cpu_dummy.hh:43
CheckerThreadContext::readVec8BitLaneReg
ConstVecLane8 readVec8BitLaneReg(const RegId &reg) const override
Vector Register Lane Interfaces.
Definition: thread_context.hh:261
CheckerThreadContext::getIsaPtr
BaseISA * getIsaPtr() override
Definition: thread_context.hh:140
CheckerThreadContext::takeOverFrom
void takeOverFrom(ThreadContext *oldContext) override
Definition: thread_context.hh:196
CheckerThreadContext::getWritableVecPredReg
VecPredRegContainer & getWritableVecPredReg(const RegId &reg) override
Definition: thread_context.hh:327
CheckerThreadContext::readMiscRegNoEffect
RegVal readMiscRegNoEffect(RegIndex misc_reg) const override
Definition: thread_context.hh:417
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
CheckerThreadContext::setVecReg
void setVecReg(const RegId &reg, const VecRegContainer &val) override
Definition: thread_context.hh:353
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:187
CheckerThreadContext::readLastSuspend
Tick readLastSuspend() override
Definition: thread_context.hh:210
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:148
PCEvent
Definition: pc_event.hh:42
CheckerThreadContext::getWritableVecReg
VecRegContainer & getWritableVecReg(const RegId &reg) override
Read vector register for modification, hierarchical indexing.
Definition: thread_context.hh:252
MipsISA::p
Bitfield< 0 > p
Definition: pra_constants.hh:323
MicroPC
uint16_t MicroPC
Definition: types.hh:144
CheckerThreadContext::microPC
MicroPC microPC() const override
Reads this thread's next PC.
Definition: thread_context.hh:414
CheckerThreadContext::readVec16BitLaneReg
ConstVecLane16 readVec16BitLaneReg(const RegId &reg) const override
Reads source vector 16bit operand.
Definition: thread_context.hh:268
CheckerThreadContext::readLastActivate
Tick readLastActivate() override
Definition: thread_context.hh:209
CheckerThreadContext::setCCRegFlat
void setCCRegFlat(RegIndex idx, RegVal val) override
Definition: thread_context.hh:553
BaseISA
Definition: isa.hh:47
CheckerThreadContext::setFloatRegFlat
void setFloatRegFlat(RegIndex idx, RegVal val) override
Definition: thread_context.hh:489
CheckerThreadContext::suspend
void suspend() override
Set the status to Suspended.
Definition: thread_context.hh:190
CheckerThreadContext::setVecLane
virtual void setVecLane(const RegId &reg, const LaneData< LaneSize::TwoByte > &val) override
Definition: thread_context.hh:295
CheckerThreadContext::instAddr
Addr instAddr() const override
Reads this thread's PC.
Definition: thread_context.hh:408
CheckerThreadContext::setFloatReg
void setFloatReg(RegIndex reg_idx, RegVal val) override
Definition: thread_context.hh:346
SimpleThread::setContextId
void setContextId(ContextID id) override
Definition: simple_thread.hh:217
CheckerThreadContext::getWritableVecRegFlat
VecRegContainer & getWritableVecRegFlat(RegIndex idx) override
Read vector register for modification, flat indexing.
Definition: thread_context.hh:504
thread_context.hh
CheckerThreadContext::setVecLane
virtual void setVecLane(const RegId &reg, const LaneData< LaneSize::FourByte > &val) override
Definition: thread_context.hh:301
CheckerThreadContext::setStCondFailures
void setStCondFailures(unsigned sc_failures) override
Definition: thread_context.hh:459
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:168
VecRegContainer
Vector Register Abstraction This generic class is the model in a particularization of MVC,...
Definition: vec_reg.hh:156
CheckerThreadContext::setHtmCheckpointPtr
void setHtmCheckpointPtr(BaseHTMCheckpointPtr new_cpt) override
Definition: thread_context.hh:572
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:381

Generated on Wed Sep 30 2020 14:01:58 for gem5 by doxygen 1.8.17