Go to the documentation of this file.
43 #ifndef __ARCH_ARM_TRACERS_TARMAC_RECORD_HH__
44 #define __ARCH_ARM_TRACERS_TARMAC_RECORD_HH__
102 virtual void print(std::ostream& outs,
104 const std::string &prefix =
"")
const override;
137 virtual void print(std::ostream& outs,
139 const std::string &prefix =
"")
const override;
164 uint8_t _size,
Addr _addr, uint64_t _data);
166 virtual void print(std::ostream& outs,
168 const std::string &prefix =
"")
const override;
181 virtual void dump()
override;
183 using InstPtr = std::unique_ptr<TraceInstEntry>;
184 using MemPtr = std::unique_ptr<TraceMemEntry>;
185 using RegPtr = std::unique_ptr<TraceRegEntry>;
202 template<
typename RegEntry>
207 single_reg.update(tarmCtx);
212 template<
typename RegEntry>
217 auto it = std::remove_if(
218 queue.begin(), queue.end(),
220 return (reg->regId.classValue() == CCRegClass);
224 if (it != queue.end()) {
226 queue.erase(it, queue.end());
235 auto cpsr_it = std::find_if(
236 queue.begin(), queue.end(), is_cpsr
240 if (cpsr_it == queue.end()) {
243 std::make_unique<RegEntry>(
244 genRegister<RegEntry>(tarmCtx,
reg))
251 template<
typename Queue>
253 template<
typename Queue,
typename... Args>
264 #endif // __ARCH_ARM_TRACERS_TARMAC_RECORD_HH__
std::string opModeToStr(OperatingMode opMode)
Returns the string representation of the ARM Operating Mode (CPSR.M[3:0] field) according to the Tarm...
std::unique_ptr< TraceMemEntry > MemPtr
uint8_t instSize
Instruction size: 16 for 16-bit Thumb Instruction 32 otherwise (ARM and BigThumb)
TraceMemEntry(const TarmacContext &tarmCtx, uint8_t _size, Addr _addr, uint64_t _data)
TARMAC register trace record.
virtual void print(std::ostream &outs, int verbosity=0, const std::string &prefix="") const override
virtual void addRegEntry(std::vector< RegPtr > &queue, const TarmacContext &ptr)
Generate an Entry for every register being written.
bool predicate
is the predicate for execution this inst true or false (not execed)?
RegEntry genRegister(const TarmacContext &tarmCtx, const RegId ®)
Generate and update a register entry.
virtual void updateMisc(const TarmacContext &tarmCtx)
Register update functions.
TARMAC memory access trace record (stores only).
bool regValid
True if register entry is valid.
void update(const TarmacContext &tarmCtx)
This updates the register entry using the update table.
TraceRegEntry(const TarmacContext &tarmCtx, const RegId ®)
virtual void addMemEntry(std::vector< MemPtr > &queue, const TarmacContext &ptr)
Generates an Entry for every triggered memory access.
TarmacTracer Record: Record generated by the TarmacTracer for every executed instruction.
Abstract base class for objects which support being printed to a stream for debugging.
void mergeCCEntry(std::vector< RegPtr > &queue, const TarmacContext &tarmCtx)
virtual void updateCC(const TarmacContext &tarmCtx)
TARMAC instruction trace record.
virtual void print(std::ostream &outs, int verbosity=0, const std::string &prefix="") const override
virtual void addInstEntry(std::vector< InstPtr > &queue, const TarmacContext &ptr)
Generates an Entry for the executed instruction.
ThreadContext is the external interface to all thread state for anything outside of the CPU.
virtual void print(std::ostream &outs, int verbosity=0, const std::string &prefix="") const override
This object type is encapsulating the informations needed by a Tarmac record to generate it's own ent...
uint64_t Tick
Tick count type.
virtual void dump() override
A high-level queue interface, to be used by both the MSHR queue and the write buffer.
std::unique_ptr< TraceRegEntry > RegPtr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
virtual void updateFloat(const TarmacContext &tarmCtx)
bool secureMode
True if instruction is executed in secure mode.
constexpr RegClass miscRegClass
virtual void updateInt(const TarmacContext &tarmCtx)
@ MiscRegClass
Control (misc) register.
Tarmac Tracer: this tracer generates a new Tarmac Record for every instruction being executed in gem5...
TarmacTracerRecord(Tick _when, ThreadContext *_thread, const StaticInstPtr _staticInst, const PCStateBase &_pc, TarmacTracer &_tracer, const StaticInstPtr _macroStaticInst=NULL)
TarmacTracer & tracer
Reference to tracer.
std::string regName
Register name to be printed.
void flushQueues(Queue &queue)
Flush queues to the trace output.
std::string iSetStateToStr(TarmacBaseRecord::ISetState isetstate)
Returns the string representation of the instruction set being currently run according to the Tarmac ...
virtual void updatePred(const TarmacContext &tarmCtx)
std::unique_ptr< TraceInstEntry > InstPtr
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
bool loadAccess
True if memory access is a load.
virtual void updateVec(const TarmacContext &tarmCtx)
ISetState
ARM instruction set state.
Register ID: describe an architectural register with its class and index.
static uint64_t instCount
Number of instructions being traced.
TraceInstEntry(const TarmacContext &tarmCtx, bool predicate)
Generated on Sun Jul 30 2023 01:56:50 for gem5 by doxygen 1.8.17