41 #ifndef __ARCH_ARM_SYSTEM_HH__ 42 #define __ARCH_ARM_SYSTEM_HH__ 49 #include "params/ArmSystem.hh" 141 return dynamic_cast<const Params *
>(
_params);
170 _genericTimer = generic_timer;
201 if (_haveVirtualization)
void setResetAddr(Addr addr)
virtual System * getSystemPtr()=0
const uint8_t _physAddrRange64
Supported physical address range in bits if the highest implemented exception level is 64 bits (ARMv8...
Addr physAddrMask() const
Returns the physical address mask.
const unsigned _sveVL
SVE vector length at reset, in quadwords.
bool haveSecurity() const
Returns true if this system implements the Security Extensions.
const bool _haveLargeAsid64
True if ASID is 16 bits in AArch64 (ARMv8)
void setPowerController(FVPBasePwrCtrl *pwr_ctrl)
Sets the pointer to the Power Controller.
const bool _haveSVE
True if SVE is implemented (ARMv8)
const unsigned _havePAN
True if Priviledge Access Never is implemented.
bool havePAN() const
Returns true if Priviledge Access Never is implemented.
static void callClearWakeRequest(ThreadContext *tc)
Notify the power controller of WAKEREQUEST deassertion.
bool highestELIs64() const
Returns true if the register width of the highest implemented exception level is 64 bits (ARMv8) ...
bool FullSystem
The FullSystem variable can be used to determine the current mode of simulation.
static bool callSetWakeRequest(ThreadContext *tc)
Notify the power controller of WAKEREQUEST assertion.
ThreadContext is the external interface to all thread state for anything outside of the CPU...
void setGenericTimer(GenericTimer *generic_timer)
Sets the pointer to the Generic Timer.
static bool haveEL(ThreadContext *tc, ExceptionLevel el)
Return true if the system implements a specific exception level.
bool haveSVE() const
Returns true if SVE is implemented (ARMv8)
uint8_t physAddrRange64() const
Returns the supported physical address range in bits if the highest implemented exception level is 64...
const bool _haveLSE
True if LSE is implemented (ARMv8.1)
bool _highestELIs64
True if the register width of the highest implemented exception level is 64 bits (ARMv8) ...
bool multiProc
true if this a multiprocessor system
const bool _haveVirtualization
True if this system implements the virtualization Extensions.
Semihosting for AArch32 and AArch64.
unsigned sveVL() const
Returns the SVE vector length at reset, in quadwords.
BaseGic * getGIC() const
Get a pointer to the system's GIC.
static ArmSystem * getArmSystem(ThreadContext *tc)
Returns a valid ArmSystem pointer if using ARM ISA, it fails otherwise.
FVPBasePwrCtrl * _pwrCtrl
Pointer to the Power Controller (if any)
FVPBasePwrCtrl * getPowerController() const
Get a pointer to the system's power controller.
bool haveVirtualization() const
Returns true if this system implements the virtualization Extensions.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
static void callSetStandByWfi(ThreadContext *tc)
Make a call to notify the power controller of STANDBYWFI assertion.
bool haveCrypto() const
Returns true if this system implements the Crypto Extension.
static void callClearStandByWfi(ThreadContext *tc)
Make a call to notify the power controller of STANDBYWFI deassertion.
void setGIC(BaseGic *gic)
Sets the pointer to the GIC.
uint8_t physAddrRange() const
Returns the supported physical address range in bits.
ExceptionLevel highestEL() const
Returns the highest implemented exception level.
ArmSemihosting *const semihosting
True if the Semihosting interface is enabled.
GenericTimer * _genericTimer
Pointer to the Generic Timer wrapper.
static bool callSemihosting(ThreadContext *tc, bool gem5_ops=false)
Make a Semihosting call from either aarch64 or aarch32.
bool haveLSE() const
Returns true if LSE is implemented (ARMv8.1)
GenericTimer * getGenericTimer() const
Get a pointer to the system's generic timer model.
const bool _haveLPAE
True if this system implements the Large Physical Address Extension.
const bool _haveCrypto
True if this system implements the Crypto Extension.
const bool _haveSecurity
True if this system implements the Security Extensions.
bool haveLargeAsid64() const
Returns true if ASID is 16 bits in AArch64 (ARMv8)
Addr _resetAddr
Reset address (ARMv8)
bool haveSemihosting() const
Is Arm Semihosting support enabled?
const Params * params() const
Addr resetAddr() const
Returns the reset address if the highest implemented exception level is 64 bits (ARMv8) ...
static bool callSemihosting32(ThreadContext *tc, bool gem5_ops=false)
Make a Semihosting call from aarch32.
static bool callSemihosting64(ThreadContext *tc, bool gem5_ops=false)
Make a Semihosting call from aarch64.
bool haveLPAE() const
Returns true if this system implements the Large Physical Address Extension.