41#ifndef __INSTRECORD_HH__
42#define __INSTRECORD_HH__
51#include "params/InstTracer.hh"
72 std::unique_ptr<PCStateBase>
pc;
183 template <
typename T,
size_t N>
191 "Type T has an unrecognized size.");
235 switch (reg_class.
type()) {
254 switch (reg_class.
type()) {
Defines global host-dependent types: Counter, Tick, and (indirectly) {int,uint}{8,...
constexpr RegClassType type() const
Abstract superclass for simulation objects.
virtual const std::string & disassemble(Addr pc, const loader::SymbolTable *symtab=nullptr) const
Return string representation of disassembled instruction.
ThreadContext is the external interface to all thread state for anything outside of the CPU.
The base InstDisassembler class provides a one-API interface to disassemble the instruction passed as...
InstDisassembler(const SimObjectParams ¶ms)
virtual std::string disassemble(StaticInstPtr inst, const PCStateBase &pc, const loader::SymbolTable *symtab) const
void setData(const RegClass ®_class, RegVal val)
unsigned getFlags() const
void setFaulting(bool val)
bool getCpSeqValid() const
Addr addr
The address that was accessed.
InstSeqNum getFetchSeq() const
bool faulting
Did the execution of this instruction fault? (requires ExecFaulting to be enabled)
InstSeqNum getCpSeq() const
void setCPSeq(InstSeqNum seq)
InstRecord(Tick _when, ThreadContext *_thread, const StaticInstPtr _staticInst, const PCStateBase &_pc, const StaticInstPtr _macroStaticInst=nullptr)
void setMem(Addr a, Addr s, unsigned f)
StaticInstPtr getMacroStaticInst() const
StaticInstPtr macroStaticInst
int getDataStatus() const
void setFetchSeq(InstSeqNum seq)
unsigned flags
The flags that were assigned to the request.
std::unique_ptr< PCStateBase > pc
ThreadContext * getThread() const
bool getFetchSeqValid() const
uint64_t getIntData() const
const PCStateBase & getPCState() const
bool predicate
is the predicate for execution this inst true or false (not execed)?
void setPredicate(bool val)
union gem5::trace::InstRecord::Data data
double getFloatData() const
void setData(std::array< T, N > d)
StaticInstPtr getStaticInst() const
Addr size
The size of the memory request.
void setData(const RegClass ®_class, const void *val)
void setWhen(Tick new_when)
InstTracer(const Params &p)
virtual InstRecord * getInstRecord(Tick when, ThreadContext *tc, const StaticInstPtr staticInst, const PCStateBase &pc, const StaticInstPtr macroStaticInst=nullptr)=0
std::string disassemble(StaticInstPtr inst, const PCStateBase &pc, const loader::SymbolTable *symtab=nullptr) const
InstDisassembler * disassembler
const Params & params() const
bool cp_seq_valid
Are the commit sequence number fields valid?
DataStatus
What size of data was written?
enum gem5::trace::InstRecord::DataStatus dataStatus
bool fetch_seq_valid
Are the fetch sequence number fields valid?
bool mem_valid
Are the memory fields in the record valid?
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
uint64_t Tick
Tick count type.
@ FloatRegClass
Floating-point register.
@ CCRegClass
Condition-code register.
@ IntRegClass
Integer register.
@ MiscRegClass
Control (misc) register.