71 uint8_t _size,
Addr _addr, uint64_t _data)
102 TraceRegEntry::updateInt(tarmCtx);
111 regWidth = (arm_inst->getIntWidth());
123 TraceRegEntry::updateMisc(tarmCtx);
140 values.resize(num_elements);
142 for (
auto i = 0;
i < num_elements;
i++) {
163 values.resize(num_elements);
166 auto vv = pred_container.as<uint16_t>();
167 for (
auto i = 0;
i < num_elements;
i++) {
182 std::make_unique<TraceInstEntryV8>(tarmCtx,
predicate)
195 std::make_unique<TraceMemEntryV8>(tarmCtx,
196 static_cast<uint8_t
>(
getSize()),
217 queue.push_back(std::make_unique<TraceRegEntryV8>(single_reg));
230 const std::string &prefix)
const
242 ccprintf(outs,
"%s clk %s %s (%u) %08x%s %s %s %s_%s : %s\n",
260 const std::string &prefix)
const
264 ccprintf(outs,
"%s clk %s M%s%d %08x:%012x %0*x\n",
279 const std::string &prefix)
const
284 ccprintf(outs,
"%s clk %s R %s %s\n",
305 for (
auto it =
values.rbegin(); it !=
values.rend(); it++) {
307 static_cast<int>(
sizeof(
VecElem) * 2), *it);
static unsigned getCurSveVecLenInBits(ThreadContext *tc)
TranslationGenPtr translateFunctional(Addr start, Addr size, ThreadContext *tc, Mode mode, Request::Flags flags) override
Returns a translation generator for a region of virtual addresses, instead of directly translating a ...
T * get() const
Directly access the pointer itself without taking a reference.
Register ID: describe an architectural register with its class and index.
VecElem * as()
View interposers.
uint64_t getIntData() const
bool predicate
is the predicate for execution this inst true or false (not execed)?
This object type is encapsulating the informations needed by a Tarmac record to generate it's own ent...
const StaticInstPtr staticInst
void addInstEntry(std::vector< InstPtr > &queue, const TarmacContext &ptr)
Generates an Entry for the executed instruction.
void addRegEntry(std::vector< RegPtr > &queue, const TarmacContext &ptr)
Generate a Record for every register being written.
void addMemEntry(std::vector< MemPtr > &queue, const TarmacContext &ptr)
Generates an Entry for every memory access triggered.
void mergeCCEntry(std::vector< RegPtr > &queue, const TarmacContext &tarmCtx)
RegEntry genRegister(const TarmacContext &tarmCtx, const RegId ®)
Generate and update a register entry.
constexpr auto & StackPointerReg
constexpr auto & ReturnAddressReg
VecPredReg::Container VecPredRegContainer
gem5::VecRegContainer< NumVecElemPerVecReg *sizeof(VecElem)> VecRegContainer
constexpr auto & FramePointerReg
std::string iSetStateToStr(TarmacBaseRecord::ISetState isetstate)
Returns the string representation of the instruction set being currently run according to the Tarmac ...
std::string opModeToStr(OperatingMode opMode)
Returns the string representation of the ARM Operating Mode (CPSR.M[3:0] field) according to the Tarm...
Copyright (c) 2024 Arm Limited All rights reserved.
Tick curTick()
The universal simulation clock.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
std::string csprintf(const char *format, const Args &...args)
void ccprintf(cp::Print &print)
ArmISA::OperatingMode mode
std::vector< uint64_t > values
TraceEntryV8(std::string _cpuName)
TraceInstEntryV8(const TarmacContext &tarmCtx, bool predicate)
virtual void print(std::ostream &outs, int verbosity=0, const std::string &prefix="") const override
TraceMemEntryV8(const TarmacContext &tarmCtx, uint8_t _size, Addr _addr, uint64_t _data)
virtual void print(std::ostream &outs, int verbosity=0, const std::string &prefix="") const override
void updateInt(const TarmacContext &tarmCtx) override
virtual void print(std::ostream &outs, int verbosity=0, const std::string &prefix="") const override
TraceRegEntryV8(const TarmacContext &tarmCtx, const RegId ®)
uint16_t regWidth
Size in bits of arch register.
void updateMisc(const TarmacContext &tarmCtx) override
Register update functions.
std::string formatReg() const
Returning a string which contains the formatted register value: transformed in hex,...
void updateVec(const TarmacContext &tarmCtx) override
void updatePred(const TarmacContext &tarmCtx) override
bool secureMode
True if instruction is executed in secure mode.
std::string disassemble
Instruction disassembly.
static uint64_t instCount
Number of instructions being traced.
uint8_t instSize
Instruction size: 16 for 16-bit Thumb Instruction 32 otherwise (ARM and BigThumb)
TraceInstEntry(const TarmacContext &tarmCtx, bool predicate)
TraceMemEntry(const TarmacContext &tarmCtx, uint8_t _size, Addr _addr, uint64_t _data)
bool loadAccess
True if memory access is a load.
bool regValid
True if register entry is valid.
TraceRegEntry(const TarmacContext &tarmCtx, const RegId ®)
std::string regName
Register name to be printed.