Go to the documentation of this file.
32 #include "iris/detail/IrisCppAdapter.h"
33 #include "iris/detail/IrisObjects.h"
45 const std::string &iris_path) :
70 iris::MemorySpaceId in = iris::IRIS_UINT64_MAX;
71 iris::MemorySpaceId out = iris::IRIS_UINT64_MAX;
74 if (space.canonicalMsn == in_msn)
76 else if (space.canonicalMsn == out_msn)
80 panic_if(in == iris::IRIS_UINT64_MAX || out == iris::IRIS_UINT64_MAX,
81 "Canonical IRIS memory space numbers not found.");
83 return ThreadContext::translateAddress(paddr, out,
vaddr, in);
89 ThreadContext::initFromIrisInstance(resources);
100 iris::ResourceReadResult result;
102 return result.data.at(0);
108 iris::ResourceWriteResult result;
118 result = ((ArmISA::CPSR)result).nz;
121 result =
bits(result, 31, 28);
157 auto cmsn = space.canonicalMsn;
166 "Unable to find address space(s) for breakpoints.");
172 { ArmISA::INTREG_R0,
"R0" },
173 { ArmISA::INTREG_R1,
"R1" },
174 { ArmISA::INTREG_R2,
"R2" },
175 { ArmISA::INTREG_R3,
"R3" },
176 { ArmISA::INTREG_R4,
"R4" },
177 { ArmISA::INTREG_R5,
"R5" },
178 { ArmISA::INTREG_R6,
"R6" },
179 { ArmISA::INTREG_R7,
"R7" },
180 { ArmISA::INTREG_R8,
"R8" },
181 { ArmISA::INTREG_R9,
"R9" },
182 { ArmISA::INTREG_R10,
"R10" },
183 { ArmISA::INTREG_R11,
"R11" },
184 { ArmISA::INTREG_R12,
"R12" },
185 { ArmISA::INTREG_R13,
"R13" },
186 { ArmISA::INTREG_R14,
"R14" },
187 { ArmISA::INTREG_R15,
"R15" }
static IdxNameMap intReg32IdxNameMap
std::map< int, std::string > IdxNameMap
@ PhysicalMemoryNonSecureMsn
RegVal readIntReg(RegIndex reg_idx) const override
@ PhysicalMemorySecureMsn
bool translateAddress(Addr &paddr, Addr vaddr) override
iris::IrisCppAdapter & call() const
static ExceptionLevel currEL(const ThreadContext *tc)
static IdxNameMap ccRegIdxNameMap
CortexR52TC(gem5::BaseCPU *cpu, int id, System *system, gem5::BaseMMU *mmu, gem5::BaseISA *isa, iris::IrisConnectionInterface *iris_if, const std::string &iris_path)
std::vector< iris::MemorySpaceInfo > memorySpaces
static std::vector< iris::MemorySpaceId > bpSpaceIds
ThreadContext is the external interface to all thread state for anything outside of the CPU.
RegVal readCCRegFlat(RegIndex idx) const override
RegVal readCCRegFlat(RegIndex idx) const override
void extractResourceMap(ResourceIds &ids, const ResourceMap &resources, const IdxNameMap &idx_names)
constexpr T insertBits(T val, unsigned first, unsigned last, B bit_val)
Returns val with bits first to last set to the LSBs of bit_val.
constexpr T bits(T val, unsigned first, unsigned last)
Extract the bitfield from position 'first' to 'last' (inclusive) from 'val' and right justify it.
RegVal readMiscRegNoEffect(RegIndex) const override
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
GEM5_DEPRECATED_NAMESPACE(GuestABI, guest_abi)
const std::vector< iris::MemorySpaceId > & getBpSpaceIds() const override
iris::ResourceId extractResourceId(const ResourceMap &resources, const std::string &name)
bool isSecure(ThreadContext *tc)
void setIntReg(RegIndex reg_idx, RegVal val) override
void setCCRegFlat(RegIndex idx, RegVal val) override
#define panic_if(cond,...)
Conditional panic macro that checks the supplied condition and only panics if the condition is true a...
void initFromIrisInstance(const ResourceMap &resources) override
std::map< std::string, iris::ResourceInfo > ResourceMap
void setCCRegFlat(RegIndex idx, RegVal val) override
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Generated on Tue Sep 21 2021 12:24:23 for gem5 by doxygen 1.8.17