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_THREAD_CONTEXT_HH__
43 #define __CPU_THREAD_CONTEXT_HH__
44 
45 #include <iostream>
46 #include <string>
47 
48 #include "arch/generic/htm.hh"
49 #include "arch/generic/isa.hh"
50 #include "arch/registers.hh"
51 #include "arch/types.hh"
52 #include "base/types.hh"
53 #include "config/the_isa.hh"
54 #include "cpu/pc_event.hh"
55 #include "cpu/reg_class.hh"
56 
57 // @todo: Figure out a more architecture independent way to obtain the ITB and
58 // DTB pointers.
59 namespace TheISA
60 {
61  class ISA;
62  class Decoder;
63 }
64 class BaseCPU;
65 class BaseTLB;
66 class CheckerCPU;
67 class Checkpoint;
68 class PortProxy;
69 class Process;
70 class System;
71 
89 {
90  protected:
95 
96  public:
97 
98  enum Status
99  {
103 
107 
111 
116  };
117 
118  virtual ~ThreadContext() { };
119 
120  virtual BaseCPU *getCpuPtr() = 0;
121 
122  virtual int cpuId() const = 0;
123 
124  virtual uint32_t socketId() const = 0;
125 
126  virtual int threadId() const = 0;
127 
128  virtual void setThreadId(int id) = 0;
129 
130  virtual ContextID contextId() const = 0;
131 
132  virtual void setContextId(ContextID id) = 0;
133 
134  virtual BaseTLB *getITBPtr() = 0;
135 
136  virtual BaseTLB *getDTBPtr() = 0;
137 
138  virtual CheckerCPU *getCheckerCpuPtr() = 0;
139 
140  virtual BaseISA *getIsaPtr() = 0;
141 
142  virtual TheISA::Decoder *getDecoderPtr() = 0;
143 
144  virtual System *getSystemPtr() = 0;
145 
146  virtual PortProxy &getPhysProxy() = 0;
147 
148  virtual PortProxy &getVirtProxy() = 0;
149 
156  virtual void initMemProxies(ThreadContext *tc) = 0;
157 
158  virtual Process *getProcessPtr() = 0;
159 
160  virtual void setProcessPtr(Process *p) = 0;
161 
162  virtual Status status() const = 0;
163 
164  virtual void setStatus(Status new_status) = 0;
165 
167  virtual void activate() = 0;
168 
170  virtual void suspend() = 0;
171 
173  virtual void halt() = 0;
174 
176  void quiesce();
177 
179  void quiesceTick(Tick resume);
180 
181  virtual void takeOverFrom(ThreadContext *old_context) = 0;
182 
183  virtual void regStats(const std::string &name) {};
184 
185  virtual void scheduleInstCountEvent(Event *event, Tick count) = 0;
186  virtual void descheduleInstCountEvent(Event *event) = 0;
187  virtual Tick getCurrentInstCount() = 0;
188 
189  // Not necessarily the best location for these...
190  // Having an extra function just to read these is obnoxious
191  virtual Tick readLastActivate() = 0;
192  virtual Tick readLastSuspend() = 0;
193 
194  virtual void copyArchRegs(ThreadContext *tc) = 0;
195 
196  virtual void clearArchRegs() = 0;
197 
198  //
199  // New accessors for new decoder.
200  //
201  virtual RegVal readIntReg(RegIndex reg_idx) const = 0;
202 
203  virtual RegVal readFloatReg(RegIndex reg_idx) const = 0;
204 
205  virtual const VecRegContainer& readVecReg(const RegId& reg) const = 0;
206  virtual VecRegContainer& getWritableVecReg(const RegId& reg) = 0;
207 
211  virtual ConstVecLane8
212  readVec8BitLaneReg(const RegId& reg) const = 0;
213 
215  virtual ConstVecLane16
216  readVec16BitLaneReg(const RegId& reg) const = 0;
217 
219  virtual ConstVecLane32
220  readVec32BitLaneReg(const RegId& reg) const = 0;
221 
223  virtual ConstVecLane64
224  readVec64BitLaneReg(const RegId& reg) const = 0;
225 
227  virtual void setVecLane(const RegId& reg,
228  const LaneData<LaneSize::Byte>& val) = 0;
229  virtual void setVecLane(const RegId& reg,
230  const LaneData<LaneSize::TwoByte>& val) = 0;
231  virtual void setVecLane(const RegId& reg,
232  const LaneData<LaneSize::FourByte>& val) = 0;
233  virtual void setVecLane(const RegId& reg,
237  virtual const VecElem& readVecElem(const RegId& reg) const = 0;
238 
239  virtual const VecPredRegContainer& readVecPredReg(const RegId& reg)
240  const = 0;
241  virtual VecPredRegContainer& getWritableVecPredReg(const RegId& reg) = 0;
242 
243  virtual RegVal readCCReg(RegIndex reg_idx) const = 0;
244 
245  virtual void setIntReg(RegIndex reg_idx, RegVal val) = 0;
246 
247  virtual void setFloatReg(RegIndex reg_idx, RegVal val) = 0;
248 
249  virtual void setVecReg(const RegId& reg, const VecRegContainer& val) = 0;
250 
251  virtual void setVecElem(const RegId& reg, const VecElem& val) = 0;
252 
253  virtual void setVecPredReg(const RegId& reg,
254  const VecPredRegContainer& val) = 0;
255 
256  virtual void setCCReg(RegIndex reg_idx, RegVal val) = 0;
257 
258  virtual TheISA::PCState pcState() const = 0;
259 
260  virtual void pcState(const TheISA::PCState &val) = 0;
261 
262  void
264  {
265  TheISA::PCState pc_state = pcState();
266  pc_state.setNPC(val);
267  pcState(pc_state);
268  }
269 
270  virtual void pcStateNoRecord(const TheISA::PCState &val) = 0;
271 
272  virtual Addr instAddr() const = 0;
273 
274  virtual Addr nextInstAddr() const = 0;
275 
276  virtual MicroPC microPC() const = 0;
277 
278  virtual RegVal readMiscRegNoEffect(RegIndex misc_reg) const = 0;
279 
280  virtual RegVal readMiscReg(RegIndex misc_reg) = 0;
281 
282  virtual void setMiscRegNoEffect(RegIndex misc_reg, RegVal val) = 0;
283 
284  virtual void setMiscReg(RegIndex misc_reg, RegVal val) = 0;
285 
286  virtual RegId flattenRegId(const RegId& regId) const = 0;
287 
288  // Also not necessarily the best location for these two. Hopefully will go
289  // away once we decide upon where st cond failures goes.
290  virtual unsigned readStCondFailures() const = 0;
291 
292  virtual void setStCondFailures(unsigned sc_failures) = 0;
293 
294  // Same with st cond failures.
295  virtual Counter readFuncExeInst() const = 0;
296 
297  virtual void syscall() = 0;
298 
299  // This function exits the thread context in the CPU and returns
300  // 1 if the CPU has no more active threads (meaning it's OK to exit);
301  // Used in syscall-emulation mode when a thread calls the exit syscall.
302  virtual int exit() { return 1; };
303 
305  static void compare(ThreadContext *one, ThreadContext *two);
306 
319  virtual RegVal readIntRegFlat(RegIndex idx) const = 0;
320  virtual void setIntRegFlat(RegIndex idx, RegVal val) = 0;
321 
322  virtual RegVal readFloatRegFlat(RegIndex idx) const = 0;
323  virtual void setFloatRegFlat(RegIndex idx, RegVal val) = 0;
324 
325  virtual const VecRegContainer& readVecRegFlat(RegIndex idx) const = 0;
327  virtual void setVecRegFlat(RegIndex idx, const VecRegContainer& val) = 0;
328 
329  virtual const VecElem& readVecElemFlat(RegIndex idx,
330  const ElemIndex& elemIdx) const = 0;
331  virtual void setVecElemFlat(RegIndex idx, const ElemIndex& elemIdx,
332  const VecElem& val) = 0;
333 
334  virtual const VecPredRegContainer &
335  readVecPredRegFlat(RegIndex idx) const = 0;
337  virtual void setVecPredRegFlat(RegIndex idx,
338  const VecPredRegContainer& val) = 0;
339 
340  virtual RegVal readCCRegFlat(RegIndex idx) const = 0;
341  virtual void setCCRegFlat(RegIndex idx, RegVal val) = 0;
344  // hardware transactional memory
345  virtual void htmAbortTransaction(uint64_t htm_uid,
346  HtmFailureFaultCause cause) = 0;
348  virtual void setHtmCheckpointPtr(BaseHTMCheckpointPtr cpt) = 0;
349 };
350 
361 void serialize(const ThreadContext &tc, CheckpointOut &cp);
363 
377 void takeOverFrom(ThreadContext &new_tc, ThreadContext &old_tc);
378 
379 #endif
ThreadContext::readVecPredReg
virtual const VecPredRegContainer & readVecPredReg(const RegId &reg) const =0
ThreadContext::readMiscRegNoEffect
virtual RegVal readMiscRegNoEffect(RegIndex misc_reg) const =0
htm.hh
ThreadContext::readIntRegFlat
virtual RegVal readIntRegFlat(RegIndex idx) const =0
Flat register interfaces.
ThreadContext::descheduleInstCountEvent
virtual void descheduleInstCountEvent(Event *event)=0
ThreadContext::setVecPredRegFlat
virtual void setVecPredRegFlat(RegIndex idx, const VecPredRegContainer &val)=0
ThreadContext::readVecElemFlat
virtual const VecElem & readVecElemFlat(RegIndex idx, const ElemIndex &elemIdx) const =0
ThreadContext::setContextId
virtual void setContextId(ContextID id)=0
ThreadContext::getCurrentInstCount
virtual Tick getCurrentInstCount()=0
VecPredRegContainer
Generic predicate register container.
Definition: vec_pred_reg.hh:47
ThreadContext::activate
virtual void activate()=0
Set the status to Active.
ThreadContext::readVecRegFlat
virtual const VecRegContainer & readVecRegFlat(RegIndex idx) const =0
ArmISA::VecRegContainer
VecReg::Container VecRegContainer
Definition: registers.hh:71
ThreadContext::quiesce
void quiesce()
Quiesce thread context.
Definition: thread_context.cc:129
ThreadContext::getWritableVecReg
virtual VecRegContainer & getWritableVecReg(const RegId &reg)=0
Process
Definition: process.hh:65
ThreadContext::Halting
@ Halting
Trying to exit and waiting for an event to completely exit.
Definition: thread_context.hh:110
ThreadContext::regStats
virtual void regStats(const std::string &name)
Definition: thread_context.hh:183
ArmISA::MachInst
uint32_t MachInst
Definition: types.hh:52
ThreadContext::readVec64BitLaneReg
virtual ConstVecLane64 readVec64BitLaneReg(const RegId &reg) const =0
Reads source vector 64bit operand.
ContextID
int ContextID
Globally unique thread context ID.
Definition: types.hh:231
ThreadContext::htmAbortTransaction
virtual void htmAbortTransaction(uint64_t htm_uid, HtmFailureFaultCause cause)=0
ThreadContext::setVecReg
virtual void setVecReg(const RegId &reg, const VecRegContainer &val)=0
TheISA
Definition: decode_cache.hh:37
ThreadContext::suspend
virtual void suspend()=0
Set the status to Suspended.
serialize
void serialize(const ThreadContext &tc, CheckpointOut &cp)
Thread context serialization helpers.
Definition: thread_context.cc:142
ThreadContext::setIntReg
virtual void setIntReg(RegIndex reg_idx, RegVal val)=0
ThreadContext::MachInst
TheISA::MachInst MachInst
Definition: thread_context.hh:91
ThreadContext::getWritableVecRegFlat
virtual VecRegContainer & getWritableVecRegFlat(RegIndex idx)=0
Tick
uint64_t Tick
Tick count type.
Definition: types.hh:63
ArmISA::VecPredRegContainer
VecPredReg::Container VecPredRegContainer
Definition: registers.hh:77
ThreadContext::readFuncExeInst
virtual Counter readFuncExeInst() const =0
ThreadContext::~ThreadContext
virtual ~ThreadContext()
Definition: thread_context.hh:118
ThreadContext::setVecElem
virtual void setVecElem(const RegId &reg, const VecElem &val)=0
CheckerCPU
CheckerCPU class.
Definition: cpu.hh:85
ThreadContext::getPhysProxy
virtual PortProxy & getPhysProxy()=0
ThreadContext::setVecLane
virtual void setVecLane(const RegId &reg, const LaneData< LaneSize::Byte > &val)=0
Write a lane of the destination vector register.
HtmFailureFaultCause
HtmFailureFaultCause
Definition: htm.hh:44
ThreadContext::getProcessPtr
virtual Process * getProcessPtr()=0
X86ISA::count
count
Definition: misc.hh:703
ThreadContext::setHtmCheckpointPtr
virtual void setHtmCheckpointPtr(BaseHTMCheckpointPtr cpt)=0
ThreadContext::setFloatRegFlat
virtual void setFloatRegFlat(RegIndex idx, RegVal val)=0
X86ISA::reg
Bitfield< 5, 3 > reg
Definition: types.hh:87
BaseTLB
Definition: tlb.hh:50
ThreadContext::threadId
virtual int threadId() const =0
takeOverFrom
void takeOverFrom(ThreadContext &new_tc, ThreadContext &old_tc)
Copy state between thread contexts in preparation for CPU handover.
Definition: thread_context.cc:226
RegId
Register ID: describe an architectural register with its class and index.
Definition: reg_class.hh:75
ThreadContext::halt
virtual void halt()=0
Set the status to Halted.
ThreadContext::getIsaPtr
virtual BaseISA * getIsaPtr()=0
ThreadContext::readVecPredRegFlat
virtual const VecPredRegContainer & readVecPredRegFlat(RegIndex idx) const =0
ThreadContext::readLastSuspend
virtual Tick readLastSuspend()=0
ThreadContext::VecElem
TheISA::VecElem VecElem
Definition: thread_context.hh:93
ThreadContext::readFloatReg
virtual RegVal readFloatReg(RegIndex reg_idx) const =0
Counter
int64_t Counter
Statistics counter type.
Definition: types.hh:58
ThreadContext::readLastActivate
virtual Tick readLastActivate()=0
ThreadContext::readStCondFailures
virtual unsigned readStCondFailures() const =0
ArmISA::VecElem
uint32_t VecElem
Definition: registers.hh:68
cp
Definition: cprintf.cc:40
ThreadContext::clearArchRegs
virtual void clearArchRegs()=0
ThreadContext::exit
virtual int exit()
Definition: thread_context.hh:302
ThreadContext::takeOverFrom
virtual void takeOverFrom(ThreadContext *old_context)=0
ThreadContext::initMemProxies
virtual void initMemProxies(ThreadContext *tc)=0
Initialise the physical and virtual port proxies and tie them to the data port of the CPU.
ThreadContext::readCCRegFlat
virtual RegVal readCCRegFlat(RegIndex idx) const =0
ThreadContext
ThreadContext is the external interface to all thread state for anything outside of the CPU.
Definition: thread_context.hh:88
ThreadContext::microPC
virtual MicroPC microPC() const =0
Event
Definition: eventq.hh:246
VecLaneT
Vector Lane abstraction Another view of a container.
Definition: vec_reg.hh:262
Ps2::one
Bitfield< 3 > one
Definition: types.hh:110
System
Definition: system.hh:73
ThreadContext::readVec8BitLaneReg
virtual ConstVecLane8 readVec8BitLaneReg(const RegId &reg) const =0
Vector Register Lane Interfaces.
ThreadContext::pcStateNoRecord
virtual void pcStateNoRecord(const TheISA::PCState &val)=0
ThreadContext::setIntRegFlat
virtual void setIntRegFlat(RegIndex idx, RegVal val)=0
ThreadContext::Halted
@ Halted
Permanently shut down.
Definition: thread_context.hh:115
ThreadContext::flattenRegId
virtual RegId flattenRegId(const RegId &regId) const =0
MipsISA::event
Bitfield< 10, 5 > event
Definition: pra_constants.hh:297
ThreadContext::getWritableVecPredRegFlat
virtual VecPredRegContainer & getWritableVecPredRegFlat(RegIndex idx)=0
ThreadContext::readVecReg
virtual const VecRegContainer & readVecReg(const RegId &reg) const =0
ThreadContext::cpuId
virtual int cpuId() const =0
ThreadContext::contextId
virtual ContextID contextId() const =0
PCEventScope
Definition: pc_event.hh:64
ThreadContext::readFloatRegFlat
virtual RegVal readFloatRegFlat(RegIndex idx) const =0
ThreadContext::setNPC
void setNPC(Addr val)
Definition: thread_context.hh:263
X86ISA::val
Bitfield< 63 > val
Definition: misc.hh:769
ThreadContext::status
virtual Status status() const =0
ThreadContext::readVecElem
virtual const VecElem & readVecElem(const RegId &reg) const =0
Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:142
ThreadContext::readVec16BitLaneReg
virtual ConstVecLane16 readVec16BitLaneReg(const RegId &reg) const =0
Reads source vector 16bit operand.
ThreadContext::Status
Status
Definition: thread_context.hh:98
BaseHTMCheckpointPtr
std::unique_ptr< BaseHTMCheckpoint > BaseHTMCheckpointPtr
Definition: htm.hh:122
ThreadContext::setStatus
virtual void setStatus(Status new_status)=0
name
const std::string & name()
Definition: trace.cc:50
ThreadContext::quiesceTick
void quiesceTick(Tick resume)
Quiesce, suspend, and schedule activate at resume.
Definition: thread_context.cc:136
ThreadContext::getITBPtr
virtual BaseTLB * getITBPtr()=0
ThreadContext::pcState
virtual TheISA::PCState pcState() const =0
ThreadContext::readCCReg
virtual RegVal readCCReg(RegIndex reg_idx) const =0
ThreadContext::getVirtProxy
virtual PortProxy & getVirtProxy()=0
BaseCPU
Definition: cpu_dummy.hh:43
ThreadContext::scheduleInstCountEvent
virtual void scheduleInstCountEvent(Event *event, Tick count)=0
isa.hh
ThreadContext::syscall
virtual void syscall()=0
ThreadContext::Suspended
@ Suspended
Temporarily inactive.
Definition: thread_context.hh:106
ThreadContext::compare
static void compare(ThreadContext *one, ThreadContext *two)
function to compare two thread contexts (for debugging)
Definition: thread_context.cc:55
PortProxy
This object is a proxy for a port or other object which implements the functional response protocol,...
Definition: port_proxy.hh:80
ThreadContext::setCCReg
virtual void setCCReg(RegIndex reg_idx, RegVal val)=0
ThreadContext::setFloatReg
virtual void setFloatReg(RegIndex reg_idx, RegVal val)=0
ThreadContext::setCCRegFlat
virtual void setCCRegFlat(RegIndex idx, RegVal val)=0
pc_event.hh
MipsISA::PCState
GenericISA::DelaySlotPCState< MachInst > PCState
Definition: types.hh:41
types.hh
RegIndex
uint16_t RegIndex
Definition: types.hh:52
ThreadContext::readMiscReg
virtual RegVal readMiscReg(RegIndex misc_reg)=0
ThreadContext::setStCondFailures
virtual void setStCondFailures(unsigned sc_failures)=0
ThreadContext::readVec32BitLaneReg
virtual ConstVecLane32 readVec32BitLaneReg(const RegId &reg) const =0
Reads source vector 32bit operand.
ThreadContext::getCheckerCpuPtr
virtual CheckerCPU * getCheckerCpuPtr()=0
ElemIndex
uint16_t ElemIndex
Logical vector register elem index type.
Definition: types.hh:55
ThreadContext::setMiscReg
virtual void setMiscReg(RegIndex misc_reg, RegVal val)=0
reg_class.hh
ThreadContext::setVecPredReg
virtual void setVecPredReg(const RegId &reg, const VecPredRegContainer &val)=0
unserialize
void unserialize(ThreadContext &tc, CheckpointIn &cp)
Definition: thread_context.cc:183
ThreadContext::Active
@ Active
Running.
Definition: thread_context.hh:102
CheckpointOut
std::ostream CheckpointOut
Definition: serialize.hh:63
ThreadContext::getDecoderPtr
virtual TheISA::Decoder * getDecoderPtr()=0
ThreadContext::nextInstAddr
virtual Addr nextInstAddr() const =0
ThreadContext::copyArchRegs
virtual void copyArchRegs(ThreadContext *tc)=0
ThreadContext::setVecElemFlat
virtual void setVecElemFlat(RegIndex idx, const ElemIndex &elemIdx, const VecElem &val)=0
ThreadContext::setMiscRegNoEffect
virtual void setMiscRegNoEffect(RegIndex misc_reg, RegVal val)=0
MipsISA::p
Bitfield< 0 > p
Definition: pra_constants.hh:323
ThreadContext::getHtmCheckpointPtr
virtual BaseHTMCheckpointPtr & getHtmCheckpointPtr()=0
ThreadContext::socketId
virtual uint32_t socketId() const =0
MicroPC
uint16_t MicroPC
Definition: types.hh:144
ThreadContext::setThreadId
virtual void setThreadId(int id)=0
ThreadContext::setVecRegFlat
virtual void setVecRegFlat(RegIndex idx, const VecRegContainer &val)=0
ThreadContext::readIntReg
virtual RegVal readIntReg(RegIndex reg_idx) const =0
ThreadContext::getWritableVecPredReg
virtual VecPredRegContainer & getWritableVecPredReg(const RegId &reg)=0
CheckpointIn
Definition: serialize.hh:67
ThreadContext::getCpuPtr
virtual BaseCPU * getCpuPtr()=0
ThreadContext::instAddr
virtual Addr instAddr() const =0
BaseISA
Definition: isa.hh:47
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
ThreadContext::getDTBPtr
virtual BaseTLB * getDTBPtr()=0
VecRegContainer
Vector Register Abstraction This generic class is the model in a particularization of MVC,...
Definition: vec_reg.hh:156
ThreadContext::setProcessPtr
virtual void setProcessPtr(Process *p)=0
ThreadContext::getSystemPtr
virtual System * getSystemPtr()=0

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