42#include "debug/ArmTme.hh"
47using namespace ArmISA;
85 flags[IsMicroop] =
true;
86 flags[IsReadBarrier] =
true;
87 flags[IsWriteBarrier] =
true;
101 panic(
"tfence should not have memory semantics");
110 panic(
"tfence should not have memory semantics");
128 flags[IsHtmStart] =
true;
129 flags[IsInteger] =
true;
130 flags[IsLoad] =
true;
131 flags[IsMicroop] =
true;
132 flags[IsNonSpeculative] =
true;
139 panic(
"TME is not supported with atomic memory");
157 flags[IsInteger] =
true;
158 flags[IsMicroop] =
true;
166 flags[IsLoad] =
true;
167 flags[IsMicroop] =
true;
168 flags[IsNonSpeculative] =
true;
169 flags[IsHtmCancel] =
true;
176 panic(
"TME is not supported with atomic memory");
197 flags[IsHtmStop] =
true;
198 flags[IsLoad] =
true;
199 flags[IsMicroop] =
true;
200 flags[IsNonSpeculative] =
true;
206 panic(
"TME is not supported with atomic memory");
MacroTmeOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass)
Fault execute(ExecContext *, trace::InstRecord *) const
MicroTcommit64(ArmISA::ExtMachInst)
Fault execute(ExecContext *, trace::InstRecord *) const
MicroTfence64(ArmISA::ExtMachInst)
Fault completeAcc(PacketPtr, ExecContext *, trace::InstRecord *) const
Fault initiateAcc(ExecContext *, trace::InstRecord *) const
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const
Internal function to generate disassembly string.
Fault execute(ExecContext *, trace::InstRecord *) const
Tcancel64(ArmISA::ExtMachInst, uint64_t)
Tcommit64(ArmISA::ExtMachInst _machInst)
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const
Internal function to generate disassembly string.
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const
Internal function to generate disassembly string.
Fault execute(ExecContext *, trace::InstRecord *) const
Tstart64(ArmISA::ExtMachInst, RegIndex)
Ttest64(ArmISA::ExtMachInst, RegIndex)
void printMnemonic(std::ostream &os, const std::string &suffix="", bool withPred=true, bool withCond64=false, ConditionCode cond64=COND_UC) const
void printIntReg(std::ostream &os, RegIndex reg_idx, uint8_t opWidth=0) const
Print a register name for disassembly given the unique dependence tag number (FP or int).
Base class for predicated macro-operations.
The ExecContext is an abstract base class the provides the interface used by the ISA to manipulate th...
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
void setDestRegIdx(int i, const RegId &val)
void setRegIdxArrays(RegIdArrayPtr src, RegIdArrayPtr dest)
Set the pointers which point to the arrays of source and destination register indices.
std::array< uint8_t, MiscRegClass+1 > _numTypedDestRegs
RegId(StaticInst::*)[] RegIdArrayPtr
uint8_t _numSrcRegs
See numSrcRegs().
uint8_t _numDestRegs
See numDestRegs().
std::bitset< Num_Flags > flags
Flag values for this instruction.
#define panic(...)
This implements a cprintf based panic() function.
constexpr RegClass intRegClass
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
std::shared_ptr< FaultBase > Fault
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
constexpr decltype(nullptr) NoFault
@ IntRegClass
Integer register.
void ccprintf(cp::Print &print)
static const OpClass MemReadOp