Go to the documentation of this file.
55 using namespace Linux;
60 _haveSecurity(
p->have_security),
61 _haveLPAE(
p->have_lpae),
62 _haveVirtualization(
p->have_virtualization),
63 _haveCrypto(
p->have_crypto),
64 _genericTimer(nullptr),
67 _highestELIs64(
p->highest_el_is_64),
68 _physAddrRange64(
p->phys_addr_range_64),
69 _haveLargeAsid64(
p->have_large_asid_64),
70 _haveTME(
p->have_tme),
71 _haveSVE(
p->have_sve),
73 _haveLSE(
p->have_lse),
74 _havePAN(
p->have_pan),
75 _haveSecEL2(
p->have_secel2),
76 semihosting(
p->semihosting),
77 multiProc(
p->multi_proc)
79 if (
p->auto_reset_addr) {
84 "Workload entry point %#x and reset address %#x are different",
90 warn(
"Highest ARM exception-level set to AArch%d but the workload "
91 "is for AArch%d. Assuming you wanted these to match.",
146 warn(
"Unimplemented Exception Level\n");
212 pwr_ctrl->setStandByWfi(tc);
219 pwr_ctrl->clearStandByWfi(tc);
226 return pwr_ctrl->setWakeRequest(tc);
235 pwr_ctrl->clearWakeRequest(tc);
239 ArmSystemParams::create()
#define fatal(...)
This implements a cprintf based fatal() function.
static bool callSemihosting32(ThreadContext *tc, bool gem5_ops=false)
Make a Semihosting call from aarch32.
uint8_t physAddrRange() const
Returns the supported physical address range in bits.
bool highestELIs64() const
Returns true if the register width of the highest implemented exception level is 64 bits (ARMv8)
Addr resetAddr() const
Returns the reset address if the highest implemented exception level is 64 bits (ARMv8)
Addr _resetAddr
Reset address (ARMv8)
Addr physAddrMask() const
Returns the physical address mask.
bool call32(ThreadContext *tc, bool gem5_ops)
Perform an Arm Semihosting call from aarch32 code.
bool FullSystem
The FullSystem variable can be used to determine the current mode of simulation.
FVPBasePwrCtrl * getPowerController() const
Get a pointer to the system's power controller.
static bool callSemihosting(ThreadContext *tc, bool gem5_ops=false)
Make a Semihosting call from either aarch64 or aarch32.
bool haveVirtualization() const
Returns true if this system implements the virtualization Extensions.
virtual Addr getEntry() const =0
static void callSetStandByWfi(ThreadContext *tc)
Make a call to notify the power controller of STANDBYWFI assertion.
static ArmSystem * getArmSystem(ThreadContext *tc)
Returns a valid ArmSystem pointer if using ARM ISA, it fails otherwise.
Workload * workload
OS kernel.
bool haveSecurity() const
Returns true if this system implements the Security Extensions.
ThreadContext is the external interface to all thread state for anything outside of the CPU.
bool haveLPAE() const
Returns true if this system implements the Large Physical Address Extension.
bool call64(ThreadContext *tc, bool gem5_ops)
Perform an Arm Semihosting call from aarch64 code.
static bool callSemihosting64(ThreadContext *tc, bool gem5_ops=false)
Make a Semihosting call from aarch64.
bool _highestELIs64
True if the register width of the highest implemented exception level is 64 bits (ARMv8)
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
virtual Loader::Arch getArch() const =0
#define warn_if(cond,...)
Conditional warning macro that checks the supplied condition and only prints a warning if the conditi...
static void callClearStandByWfi(ThreadContext *tc)
Make a call to notify the power controller of STANDBYWFI deassertion.
Overload hash function for BasicBlockRange type.
ArmISA::ExceptionLevel highestEL() const
Returns the highest implemented exception level.
static bool haveEL(ThreadContext *tc, ArmISA::ExceptionLevel el)
Return true if the system implements a specific exception level.
ArmSemihosting *const semihosting
True if the Semihosting interface is enabled.
bool haveSemihosting() const
Is Arm Semihosting support enabled?
bool inAArch64(ThreadContext *tc)
static bool callSetWakeRequest(ThreadContext *tc)
Notify the power controller of WAKEREQUEST assertion.
bool haveTME() const
Returns true if this system implements the transactional memory extension (ARMv9)
const uint8_t _physAddrRange64
Supported physical address range in bits if the highest implemented exception level is 64 bits (ARMv8...
bool haveLargeAsid64() const
Returns true if ASID is 16 bits in AArch64 (ARMv8)
static void callClearWakeRequest(ThreadContext *tc)
Notify the power controller of WAKEREQUEST deassertion.
Generated on Wed Sep 30 2020 14:02:01 for gem5 by doxygen 1.8.17