Go to the documentation of this file.
53 #include "params/ArmRelease.hh"
58 using namespace linux;
59 using namespace ArmISA;
64 for (
auto ext :
p.extensions) {
66 "Duplicated FEAT_\n");
74 _genericTimer(nullptr),
77 _highestELIs64(
p.highest_el_is_64),
78 _physAddrRange64(
p.phys_addr_range_64),
79 _haveLargeAsid64(
p.have_large_asid_64),
82 semihosting(
p.semihosting),
84 multiProc(
p.multi_proc)
86 if (
p.auto_reset_addr) {
91 "Workload entry point %#x and reset address %#x are different",
97 warn(
"Highest ARM exception-level set to AArch%d but the workload "
98 "is for AArch%d. Assuming you wanted these to match.",
139 return has(ArmExtension::VIRTUALIZATION, tc);
141 return has(ArmExtension::SECURITY, tc);
143 warn(
"Unimplemented Exception Level\n");
203 pwr_ctrl->setStandByWfi(tc);
210 pwr_ctrl->clearStandByWfi(tc);
217 return pwr_ctrl->setWakeRequest(tc);
226 pwr_ctrl->clearWakeRequest(tc);
#define fatal(...)
This implements a cprintf based fatal() function.
uint8_t physAddrRange() const
Returns the supported physical address range in bits.
virtual Addr getEntry() const =0
ArmSystem(const Params &p)
bool highestELIs64() const
Returns true if the register width of the highest implemented exception level is 64 bits (ARMv8)
static bool callSemihosting64(ThreadContext *tc, bool gem5_ops=false)
Make a Semihosting call from aarch64.
static void callClearWakeRequest(ThreadContext *tc)
Notify the power controller of WAKEREQUEST deassertion.
bool haveLargeAsid64() const
Returns true if ASID is 16 bits in AArch64 (ARMv8)
FVPBasePwrCtrl * getPowerController() const
Get a pointer to the system's power controller.
const unsigned MaxPhysAddrRange
Workload * workload
OS kernel.
static bool callSemihosting(ThreadContext *tc, bool gem5_ops=false)
Make a Semihosting call from either aarch64 or aarch32.
bool inAArch64(ThreadContext *tc)
virtual loader::Arch getArch() const =0
bool call32(ThreadContext *tc, bool gem5_ops)
Perform an Arm Semihosting call from aarch32 code.
static ArmSystem * getArmSystem(ThreadContext *tc)
Returns a valid ArmSystem pointer if using ARM ISA, it fails otherwise.
Addr _resetAddr
Reset address (ARMv8)
bool has(ArmExtension ext) const
ArmRelease(const Params &p)
ArmISA::ExceptionLevel highestEL() const
Returns the highest implemented exception level.
ThreadContext is the external interface to all thread state for anything outside of the CPU.
ArmSemihosting *const semihosting
True if the Semihosting interface is enabled.
Abstract superclass for simulation objects.
const uint8_t _physAddrRange64
Supported physical address range in bits if the highest implemented exception level is 64 bits (ARMv8...
static bool callSetWakeRequest(ThreadContext *tc)
Notify the power controller of WAKEREQUEST assertion.
bool call64(ThreadContext *tc, bool gem5_ops)
Perform an Arm Semihosting call from aarch64 code.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
static void callClearStandByWfi(ThreadContext *tc)
Make a call to notify the power controller of STANDBYWFI deassertion.
bool _highestELIs64
True if the register width of the highest implemented exception level is 64 bits (ARMv8)
Addr physAddrMask() const
Returns the physical address mask.
bool FullSystem
The FullSystem variable can be used to determine the current mode of simulation.
bool has(ArmExtension ext) const
const ArmRelease * release
Arm Release object: contains a list of implemented features.
#define warn_if(cond,...)
Conditional warning macro that checks the supplied condition and only prints a warning if the conditi...
static void callSetStandByWfi(ThreadContext *tc)
Make a call to notify the power controller of STANDBYWFI assertion.
std::unordered_map< ArmExtension, bool > _extensions
List of implemented extensions.
bool haveSemihosting() const
Is Arm Semihosting support enabled?
Addr resetAddr() const
Returns the reset address if the highest implemented exception level is 64 bits (ARMv8)
static bool haveEL(ThreadContext *tc, ArmISA::ExceptionLevel el)
Return true if the system implements a specific exception level.
#define fatal_if(cond,...)
Conditional fatal macro that checks the supplied condition and only causes a fatal error if the condi...
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
static bool callSemihosting32(ThreadContext *tc, bool gem5_ops=false)
Make a Semihosting call from aarch32.
Generated on Sun Jul 30 2023 01:56:49 for gem5 by doxygen 1.8.17