Go to the documentation of this file.
46 #ifndef __ARCH_ARM_TRACERS_TARMAC_PARSER_HH__
47 #define __ARCH_ARM_TRACERS_TARMAC_PARSER_HH__
51 #include <unordered_map>
58 #include "params/TarmacParser.hh"
87 std::unique_ptr<PCStateBase>
pc;
101 bool _mismatch_on_pc_or_opcode) :
142 void dump()
override;
183 using MiscRegMap = std::unordered_map<std::string, RegIndex>;
233 trace.open(
p.path_to_trace.c_str());
306 #endif // __ARCH_ARM_TRACERS_TARMAC_PARSER_HH__
bool mismatch
True if a mismatch has been detected for this instruction.
static char buf[MaxLineLength]
Buffer used for trace file parsing.
bool memWrCheck
If true, memory write accesses are checked.
TarmacParser(const Params &p)
static std::list< ParserRegEntry > destRegRecords
List of records of destination registers.
ThreadContext * thread
Current thread context.
static int8_t maxVectorLength
Max.
bool mismatchOnPcOrOpcode
True if a mismatch has been detected for this instruction on PC or opcode.
const char * description() const
Return a C string describing the event.
std::ifstream trace
TARMAC trace file.
friend class TarmacParserRecord
TarmacParserParams Params
bool started
True if tracing has started.
bool cpuId
If true, the trace format includes the CPU id.
AddrRange ignoredAddrRange
Ignored addresses (ignored if empty).
bool macroopInProgress
True if a macroop is currently in progress.
const char * iSetStateToStr(ISetState isetstate) const
Returns the string representation of an instruction set state.
Event triggered to check the value of the destination registers.
static ParserInstEntry instRecord
Buffer for instruction trace records.
bool mismatchOnPcOrOpcode
True if a mismatch has been detected for this instruction on PC or opcode.
union gem5::Trace::InstRecord::@119 data
TarmacParser & parent
Reference to the TARMAC trace object to which this record belongs.
ISetState
ARM instruction set state.
static ParserMemEntry memRecord
Buffer for memory access trace records (stores only).
ThreadContext is the external interface to all thread state for anything outside of the CPU.
TARMAC instruction trace record.
static const int MaxLineLength
uint64_t Tick
Tick count type.
std::shared_ptr< Request > RequestPtr
static ParserRegEntry regRecord
Buffer for register trace records.
const StaticInstPtr inst
Current instruction.
bool exitOnDiff
If true, the simulation is stopped as the first mismatch is detected.
TARMAC register trace record.
TarmacParserRecordEvent(TarmacParser &_parent, ThreadContext *_thread, const StaticInstPtr _inst, const PCStateBase &_pc, bool _mismatch, bool _mismatch_on_pc_or_opcode)
TarmacRecordType
TARMAC trace record type.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
RequestPtr memReq
Request for memory write checks.
InstRecord * getInstRecord(Tick when, ThreadContext *tc, const StaticInstPtr staticInst, const PCStateBase &pc, const StaticInstPtr macroStaticInst=nullptr) override
std::unique_ptr< PCStateBase > pc
TarmacParserRecord(Tick _when, ThreadContext *_thread, const StaticInstPtr _staticInst, const PCStateBase &_pc, TarmacParser &_parent, const StaticInstPtr _macroStaticInst=NULL)
bool mismatch
True if a mismatch has been detected for this instruction.
bool readMemNoEffect(Addr addr, uint8_t *data, unsigned size, unsigned flags)
Performs a memory access to read the value written by a previous write.
Tarmac Parser: this tracer parses an existing Tarmac trace and it diffs it with gem5 simulation statu...
std::unique_ptr< PCStateBase > pc
PC of the current instruction.
Addr size
The size of the memory request.
static MiscRegMap miscRegMap
TARMAC memory access trace record (stores only).
bool parsingStarted
True if a TARMAC instruction record has already been parsed for this instruction.
Addr addr
The address that was accessed.
Addr startPc
Tracing starts when the PC gets this value for the first time (ignored if 0x0).
void advanceTraceToStartPc()
Helper function to advance the trace up to startPc.
The AddrRange class encapsulates an address range, and supports a number of tests to check if two ran...
bool exitOnInsnDiff
If true, the simulation is stopped as the first mismatch is detected on PC or opcode.
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
bool advanceTrace()
Advances the TARMAC trace up to the next instruction, register, or memory access record.
static TarmacRecordType currRecordType
Type of last parsed record.
unsigned flags
The flags that were assigned to the request.
std::unordered_map< std::string, RegIndex > MiscRegMap
Map from misc.
static void printMismatchHeader(const StaticInstPtr inst, const PCStateBase &pc)
Print a mismatch header containing the instruction fields as reported by gem5.
Generated on Wed May 4 2022 12:13:49 for gem5 by doxygen 1.8.17