You copied the Doc URL to your clipboard.
Shared Functions.Extension Pseudocode
Library pseudocode for shared/functions/extension/AArch32.HaveHPDExt
// AArch32.HaveHPDExt() // ==================== boolean AArch32.HaveHPDExt() return HasArchVersion(ARMv8p2);
Library pseudocode for shared/functions/extension/AArch64.HaveHPDExt
// AArch64.HaveHPDExt() // ==================== boolean AArch64.HaveHPDExt() return HasArchVersion(ARMv8p1);
Library pseudocode for shared/functions/extension/Have52BitIPAAndPASpaceExt
// Have52BitIPAAndPASpaceExt() // =========================== // Returns TRUE if 52-bit IPA and PA extension support // is implemented, and FALSE otherwise. boolean Have52BitIPAAndPASpaceExt() return (HasArchVersion(ARMv8p7) && boolean IMPLEMENTATION_DEFINED "Has 52-bit IPA and PA support" && Have52BitVAExt() && Have52BitPAExt());
Library pseudocode for shared/functions/extension/Have52BitPAExt
// Have52BitPAExt() // ================ // Returns TRUE if Large Physical Address extension // support is implemented and FALSE otherwise. boolean Have52BitPAExt() return HasArchVersion(ARMv8p2) && boolean IMPLEMENTATION_DEFINED "Has large 52-bit PA/IPA support";
Library pseudocode for shared/functions/extension/Have52BitVAExt
// Have52BitVAExt() // ================ // Returns TRUE if Large Virtual Address extension // support is implemented and FALSE otherwise. boolean Have52BitVAExt() return HasArchVersion(ARMv8p2) && boolean IMPLEMENTATION_DEFINED "Has large 52-bit VA support";
Library pseudocode for shared/functions/extension/HaveAArch32BF16Ext
// HaveAArch32BF16Ext() // ==================== // Returns TRUE if AArch32 BFloat16 instruction support is implemented, and FALSE otherwise. boolean HaveAArch32BF16Ext() return HasArchVersion(ARMv8p2) && boolean IMPLEMENTATION_DEFINED "Has AArch32 BFloat16 extension";
Library pseudocode for shared/functions/extension/HaveAArch32Int8MatMulExt
// HaveAArch32Int8MatMulExt() // ========================== // Returns TRUE if AArch32 8-bit integer matrix multiply instruction support // implemented, and FALSE otherwise. boolean HaveAArch32Int8MatMulExt() return HasArchVersion(ARMv8p2) && boolean IMPLEMENTATION_DEFINED "Has AArch32 Int8 Mat Mul extension";
Library pseudocode for shared/functions/extension/HaveAltFP
// HaveAltFP() // =========== // Returns TRUE if alternative Floating-point extension support // is implemented, and FALSE otherwise. boolean HaveAltFP() return HasArchVersion(ARMv8p7);
Library pseudocode for shared/functions/extension/HaveAtomicExt
// HaveAtomicExt() // =============== boolean HaveAtomicExt() return HasArchVersion(ARMv8p1);
Library pseudocode for shared/functions/extension/HaveBF16Ext
// HaveBF16Ext() // ============= // Returns TRUE if AArch64 BFloat16 instruction support is implemented, and FALSE otherwise. boolean HaveBF16Ext() return HasArchVersion(ARMv8p6) || (HasArchVersion(ARMv8p2) && boolean IMPLEMENTATION_DEFINED "Has AArch64 BFloat16 extension");
Library pseudocode for shared/functions/extension/HaveBTIExt
// HaveBTIExt() // ============ // Returns TRUE if support for Branch Target Indentification is implemented. boolean HaveBTIExt() return HasArchVersion(ARMv8p5);
Library pseudocode for shared/functions/extension/HaveBlockBBM
// HaveBlockBBM() // ============== // Returns TRUE if support for changing block size without requring break-before-make is implemented. boolean HaveBlockBBM() return HasArchVersion(ARMv8p4);
Library pseudocode for shared/functions/extension/HaveCommonNotPrivateTransExt
// HaveCommonNotPrivateTransExt() // ============================== boolean HaveCommonNotPrivateTransExt() return HasArchVersion(ARMv8p2);
Library pseudocode for shared/functions/extension/HaveDGHExt
// HaveDGHExt() // ============ // Returns TRUE if Data Gathering Hint instruction support is implemented, and FALSE otherwise. boolean HaveDGHExt() return boolean IMPLEMENTATION_DEFINED "Has AArch64 DGH extension";
Library pseudocode for shared/functions/extension/HaveDITExt
// HaveDITExt() // ============ boolean HaveDITExt() return HasArchVersion(ARMv8p4);
Library pseudocode for shared/functions/extension/HaveDOTPExt
// HaveDOTPExt() // ============= // Returns TRUE if Dot Product feature support is implemented, and FALSE otherwise. boolean HaveDOTPExt() return HasArchVersion(ARMv8p4) || (HasArchVersion(ARMv8p2) && boolean IMPLEMENTATION_DEFINED "Has Dot Product extension");
Library pseudocode for shared/functions/extension/HaveDoPD
// HaveDoPD() // ========== // Returns TRUE if Debug Over Power Down extension // support is implemented and FALSE otherwise. boolean HaveDoPD() return HasArchVersion(ARMv8p2) && boolean IMPLEMENTATION_DEFINED "Has DoPD extension";
Library pseudocode for shared/functions/extension/HaveDoubleFaultExt
// HaveDoubleFaultExt() // ==================== boolean HaveDoubleFaultExt() return (HasArchVersion(ARMv8p4) && HaveEL(EL3) && !ELUsingAArch32(EL3) && HaveIESB());
Library pseudocode for shared/functions/extension/HaveDoubleLock
// HaveDoubleLock() // ================ // Returns TRUE if support for the OS Double Lock is implemented. boolean HaveDoubleLock() return !HasArchVersion(ARMv8p4) || boolean IMPLEMENTATION_DEFINED "OS Double Lock is implemented";
Library pseudocode for shared/functions/extension/HaveE0PDExt
// HaveE0PDExt() // ============= // Returns TRUE if support for constant fault times for unprivileged accesses // to the memory map is implemented. boolean HaveE0PDExt() return HasArchVersion(ARMv8p5);
Library pseudocode for shared/functions/extension/HaveECVExt
// HaveECVExt() // ============ // Returns TRUE if Enhanced Counter Virtualization extension // support is implemented, and FALSE otherwise. boolean HaveECVExt() return HasArchVersion(ARMv8p6);
Library pseudocode for shared/functions/extension/HaveEMPAMExt
// HaveEMPAMExt() // ============== // Returns TRUE if Enhanced MPAM is implemented, and FALSE otherwise. boolean HaveEMPAMExt() return (HasArchVersion(ARMv8p6) && HaveMPAMExt() && boolean IMPLEMENTATION_DEFINED "Has enhanced MPAM extension");
Library pseudocode for shared/functions/extension/HaveExtendedCacheSets
// HaveExtendedCacheSets() // ======================= boolean HaveExtendedCacheSets() return HasArchVersion(ARMv8p3);
Library pseudocode for shared/functions/extension/HaveExtendedECDebugEvents
// HaveExtendedECDebugEvents() // =========================== boolean HaveExtendedECDebugEvents() return HasArchVersion(ARMv8p2);
Library pseudocode for shared/functions/extension/HaveExtendedExecuteNeverExt
// HaveExtendedExecuteNeverExt() // ============================= boolean HaveExtendedExecuteNeverExt() return HasArchVersion(ARMv8p2);
Library pseudocode for shared/functions/extension/HaveFCADDExt
// HaveFCADDExt() // ============== boolean HaveFCADDExt() return HasArchVersion(ARMv8p3);
Library pseudocode for shared/functions/extension/HaveFGTExt
// HaveFGTExt() // ============ // Returns TRUE if Fine Grained Trap is implemented, and FALSE otherwise. boolean HaveFGTExt() return HasArchVersion(ARMv8p6) && !ELUsingAArch32(EL2);
Library pseudocode for shared/functions/extension/HaveFJCVTZSExt
// HaveFJCVTZSExt() // ================ boolean HaveFJCVTZSExt() return HasArchVersion(ARMv8p3);
Library pseudocode for shared/functions/extension/HaveFP16MulNoRoundingToFP32Ext
// HaveFP16MulNoRoundingToFP32Ext() // ================================ // Returns TRUE if has FP16 multiply with no intermediate rounding accumulate to FP32 instructions, // and FALSE otherwise boolean HaveFP16MulNoRoundingToFP32Ext() if !HaveFP16Ext() then return FALSE; if HasArchVersion(ARMv8p4) then return TRUE; return (HasArchVersion(ARMv8p2) && boolean IMPLEMENTATION_DEFINED "Has accumulate FP16 product into FP32 extension");
Library pseudocode for shared/functions/extension/HaveFeatLS64
// HaveFeatLS64() // ============== // Returns TRUE if the LD64B, ST64B, ST64BV, and ST64BV0 instructions are // supported, and FALSE otherwise. boolean HaveFeatLS64() return (HasArchVersion(ARMv8p7) && boolean IMPLEMENTATION_DEFINED "Has Load Store 64-Byte instruction support");
Library pseudocode for shared/functions/extension/HaveFeatRPRES
// HaveFeatRPRES() // =============== // Returns TRUE if the Reciprocal Estimate and Reciprocal Square Root Estimate // instructions have increased precision, and FALSE otherwise. boolean HaveFeatRPRES() return (HasArchVersion(ARMv8p7) && (boolean IMPLEMENTATION_DEFINED "Has increased Reciprocal Estimate and Square Root Estimate precision support") && HaveAltFP());
Library pseudocode for shared/functions/extension/HaveFeatWFxT
// HaveFeatWFxT() // ============== // Returns TRUE if WFET and WFIT instruction support is implemented, // and FALSE otherwise. boolean HaveFeatWFxT() return HasArchVersion(ARMv8p7);
Library pseudocode for shared/functions/extension/HaveFeatXS
// HaveFeatXS() // ============ // Returns TRUE if XS attribute and the TLBI and DSB instructions with nXS qualifier // are supported, and FALSE otherwise. boolean HaveFeatXS() return HasArchVersion(ARMv8p7);
Library pseudocode for shared/functions/extension/HaveFlagFormatExt
// HaveFlagFormatExt() // =================== // Returns TRUE if flag format conversion instructions implemented. boolean HaveFlagFormatExt() return HasArchVersion(ARMv8p5);
Library pseudocode for shared/functions/extension/HaveFlagManipulateExt
// HaveFlagManipulateExt() // ======================= // Returns TRUE if flag manipulate instructions are implemented. boolean HaveFlagManipulateExt() return HasArchVersion(ARMv8p4);
Library pseudocode for shared/functions/extension/HaveFrintExt
// HaveFrintExt() // ============== // Returns TRUE if FRINT instructions are implemented. boolean HaveFrintExt() return HasArchVersion(ARMv8p5);
Library pseudocode for shared/functions/extension/HaveHCRXEL2Ext
// HaveHCRXEL2Ext() // ================ // Returns TRUE if HCRX_EL2 Trap Control register is implemented, // and FALSE otherwise. boolean HaveHCRXEL2Ext() return HasArchVersion(ARMv8p7);
Library pseudocode for shared/functions/extension/HaveHPMDExt
// HaveHPMDExt() // ============= boolean HaveHPMDExt() return HasArchVersion(ARMv8p1);
Library pseudocode for shared/functions/extension/HaveIDSExt
// HaveIDSExt() // ============ // Returns TRUE if ID register handling feature is implemented. boolean HaveIDSExt() return HasArchVersion(ARMv8p4);
Library pseudocode for shared/functions/extension/HaveIESB
// HaveIESB() // ========== boolean HaveIESB() return (HaveRASExt() && boolean IMPLEMENTATION_DEFINED "Has Implicit Error Synchronization Barrier");
Library pseudocode for shared/functions/extension/HaveInt8MatMulExt
// HaveInt8MatMulExt() // =================== // Returns TRUE if AArch64 8-bit integer matrix multiply instruction support // implemented, and FALSE otherwise. boolean HaveInt8MatMulExt() return HasArchVersion(ARMv8p6) || (HasArchVersion(ARMv8p2) && boolean IMPLEMENTATION_DEFINED "Has AArch64 Int8 Mat Mul extension");
Library pseudocode for shared/functions/extension/HaveLSE2Ext
// HaveLSE2Ext() // ============= // Returns TRUE if LSE2 is implemented, and FALSE otherwise. boolean HaveLSE2Ext() return HasArchVersion(ARMv8p4);
Library pseudocode for shared/functions/extension/HaveMPAMExt
// HaveMPAMExt() // ============= // Returns TRUE if MPAM is implemented, and FALSE otherwise. boolean HaveMPAMExt() return (HasArchVersion(ARMv8p2) && boolean IMPLEMENTATION_DEFINED "Has MPAM extension");
Library pseudocode for shared/functions/extension/HaveMTE2Ext
// HaveMTE2Ext() // ============= // Returns TRUE if MTE support is beyond EL0, and FALSE otherwise. boolean HaveMTE2Ext() if !HasArchVersion(ARMv8p5) then return FALSE; return boolean IMPLEMENTATION_DEFINED "Has MTE2 extension";
Library pseudocode for shared/functions/extension/HaveMTE3Ext
// HaveMTE3Ext() // ============= // Returns TRUE if MTE Asymmetric Fault Handling support is // implemented, and FALSE otherwise. boolean HaveMTE3Ext() return ((HasArchVersion(ARMv8p7) && HaveMTE2Ext()) || (HasArchVersion(ARMv8p5) && boolean IMPLEMENTATION_DEFINED "Has MTE3 extension"));
Library pseudocode for shared/functions/extension/HaveMTEExt
// HaveMTEExt() // ============ // Returns TRUE if MTE implemented, and FALSE otherwise. boolean HaveMTEExt() if !HasArchVersion(ARMv8p5) then return FALSE; return boolean IMPLEMENTATION_DEFINED "Has MTE extension";
Library pseudocode for shared/functions/extension/HaveNV2Ext
// HaveNV2Ext() // ============ // Returns TRUE if Enhanced Nested Virtualization is implemented. boolean HaveNV2Ext() return (HasArchVersion(ARMv8p4) && HaveNVExt() && boolean IMPLEMENTATION_DEFINED "Has support for Enhanced Nested Virtualization");
Library pseudocode for shared/functions/extension/HaveNVExt
// HaveNVExt() // =========== // Returns TRUE if Nested Virtualization is implemented. boolean HaveNVExt() return HasArchVersion(ARMv8p3) && boolean IMPLEMENTATION_DEFINED "Has Nested Virtualization";
Library pseudocode for shared/functions/extension/HaveNoSecurePMUDisableOverride
// HaveNoSecurePMUDisableOverride() // ================================ boolean HaveNoSecurePMUDisableOverride() return HasArchVersion(ARMv8p2);
Library pseudocode for shared/functions/extension/HaveNoninvasiveDebugAuth
// HaveNoninvasiveDebugAuth() // ========================== // Returns TRUE if the Non-invasive debug controls are implemented. boolean HaveNoninvasiveDebugAuth() return !HasArchVersion(ARMv8p4);
Library pseudocode for shared/functions/extension/HavePAN3Ext
// HavePAN3Ext() // ============= // Returns TRUE if SCTLR_EL1.EPAN and SCTLR_EL2.EPAN support is implemented, // and FALSE otherwise. boolean HavePAN3Ext() return HasArchVersion(ARMv8p7) || (HasArchVersion(ARMv8p1) && boolean IMPLEMENTATION_DEFINED "Has PAN3 extension");
Library pseudocode for shared/functions/extension/HavePANExt
// HavePANExt() // ============ boolean HavePANExt() return HasArchVersion(ARMv8p1);
Library pseudocode for shared/functions/extension/HavePMUv3p7
// HavePMUv3p7() // ============= // Returns TRUE if the PMUv3p7 extension is implemented, and FALSE otherwise. boolean HavePMUv3p7() return (HasArchVersion(ARMv8p7) && Havev85PMU() && boolean IMPLEMENTATION_DEFINED "Has PMUv3p7 extension");
Library pseudocode for shared/functions/extension/HavePageBasedHardwareAttributes
// HavePageBasedHardwareAttributes() // ================================= boolean HavePageBasedHardwareAttributes() return HasArchVersion(ARMv8p2);
Library pseudocode for shared/functions/extension/HavePrivATExt
// HavePrivATExt() // =============== boolean HavePrivATExt() return HasArchVersion(ARMv8p2);
Library pseudocode for shared/functions/extension/HaveQRDMLAHExt
// HaveQRDMLAHExt() // ================ boolean HaveQRDMLAHExt() return HasArchVersion(ARMv8p1); boolean HaveAccessFlagUpdateExt() return HasArchVersion(ARMv8p1); boolean HaveDirtyBitModifierExt() return HasArchVersion(ARMv8p1);
Library pseudocode for shared/functions/extension/HaveRASExt
// HaveRASExt() // ============ boolean HaveRASExt() return (HasArchVersion(ARMv8p2) || boolean IMPLEMENTATION_DEFINED "Has RAS extension");
Library pseudocode for shared/functions/extension/HaveRNG
// HaveRNG() // ========= // Returns TRUE if Random Number Generator extension // support is implemented and FALSE otherwise. boolean HaveRNG() return HasArchVersion(ARMv8p5) && boolean IMPLEMENTATION_DEFINED "Has RNG extension";
Library pseudocode for shared/functions/extension/HaveSBExt
// HaveSBExt() // =========== // Returns TRUE if support for SB is implemented, and FALSE otherwise. boolean HaveSBExt() return HasArchVersion(ARMv8p5) || boolean IMPLEMENTATION_DEFINED "Has SB extension";
Library pseudocode for shared/functions/extension/HaveSSBSExt
// HaveSSBSExt() // ============= // Returns TRUE if support for SSBS is implemented, and FALSE otherwise. boolean HaveSSBSExt() return HasArchVersion(ARMv8p5) || boolean IMPLEMENTATION_DEFINED "Has SSBS extension";
Library pseudocode for shared/functions/extension/HaveSecureEL2Ext
// HaveSecureEL2Ext() // ================== // Returns TRUE if Secure EL2 is implemented. boolean HaveSecureEL2Ext() return HasArchVersion(ARMv8p4);
Library pseudocode for shared/functions/extension/HaveSecureExtDebugView
// HaveSecureExtDebugView() // ======================== // Returns TRUE if support for Secure and Non-secure views of debug peripherals is implemented. boolean HaveSecureExtDebugView() return HasArchVersion(ARMv8p4);
Library pseudocode for shared/functions/extension/HaveSelfHostedTrace
// HaveSelfHostedTrace() // ===================== boolean HaveSelfHostedTrace() return HasArchVersion(ARMv8p4);
Library pseudocode for shared/functions/extension/HaveSmallTranslationTblExt
// HaveSmallTranslationTblExt() // ============================ // Returns TRUE if Small Translation Table Support is implemented. boolean HaveSmallTranslationTableExt() return HasArchVersion(ARMv8p4) && boolean IMPLEMENTATION_DEFINED "Has Small Translation Table extension";
Library pseudocode for shared/functions/extension/HaveStage2MemAttrControl
// HaveStage2MemAttrControl() // ========================== // Returns TRUE if support for Stage2 control of memory types and cacheability attributes is implemented. boolean HaveStage2MemAttrControl() return HasArchVersion(ARMv8p4);
Library pseudocode for shared/functions/extension/HaveStatisticalProfiling
// HaveStatisticalProfiling() // ========================== // Returns TRUE if Statistical Profiling Extension is implemented, // and FALSE otherwise. boolean HaveStatisticalProfiling() return HasArchVersion(ARMv8p2);
Library pseudocode for shared/functions/extension/HaveStatisticalProfilingv1p1
// HaveStatisticalProfilingv1p1() // ============================== // Returns TRUE if the SPEv1p1 extension is implemented, and FALSE otherwise. boolean HaveStatisticalProfilingv1p1() return (HasArchVersion(ARMv8p3) && boolean IMPLEMENTATION_DEFINED "Has SPEv1p1 extension");
Library pseudocode for shared/functions/extension/HaveStatisticalProfilingv1p2
// HaveStatisticalProfilingv1p2() // ============================== // Returns TRUE if the SPEv1p2 extension is implemented, and FALSE otherwise. boolean HaveStatisticalProfilingv1p2() return (HasArchVersion(ARMv8p7) && HaveStatisticalProfiling() && boolean IMPLEMENTATION_DEFINED "Has SPEv1p2 extension");
Library pseudocode for shared/functions/extension/HaveTWEDExt
// HaveTWEDExt() // ============= // Returns TRUE if Delayed Trapping of WFE instruction support is implemented, and FALSE otherwise. boolean HaveTWEDExt() return boolean IMPLEMENTATION_DEFINED "Has TWED extension";
Library pseudocode for shared/functions/extension/HaveTraceExt
// HaveTraceExt() // ============== // Returns TRUE if Trace functionality as described by the Trace Architecture // is implemented. boolean HaveTraceExt() return boolean IMPLEMENTATION_DEFINED "Has Trace Architecture functionality";
Library pseudocode for shared/functions/extension/HaveTrapLoadStoreMultipleDeviceExt
// HaveTrapLoadStoreMultipleDeviceExt() // ==================================== boolean HaveTrapLoadStoreMultipleDeviceExt() return HasArchVersion(ARMv8p2);
Library pseudocode for shared/functions/extension/HaveUAOExt
// HaveUAOExt() // ============ boolean HaveUAOExt() return HasArchVersion(ARMv8p2);
Library pseudocode for shared/functions/extension/HaveV82Debug
// HaveV82Debug() // ============== boolean HaveV82Debug() return HasArchVersion(ARMv8p2);
Library pseudocode for shared/functions/extension/HaveVirtHostExt
// HaveVirtHostExt() // ================= boolean HaveVirtHostExt() return HasArchVersion(ARMv8p1);
Library pseudocode for shared/functions/extension/Havev85PMU
// Havev85PMU() // ============ // Returns TRUE if v8.5-Performance Monitor Unit extension // support is implemented, and FALSE otherwise. boolean Havev85PMU() return HasArchVersion(ARMv8p5) && boolean IMPLEMENTATION_DEFINED "Has PMUv3p5 extension";
Library pseudocode for shared/functions/extension/Havev8p4Debug
// Havev8p4Debug() // =============== // Returns TRUE if support for the Debugv8p4 feature is implemented and FALSE otherwise. boolean Havev8p4Debug() return HasArchVersion(ARMv8p4);
Library pseudocode for shared/functions/extension/InsertIESBBeforeException
// If SCTLR_ELx.IESB is 1 when an exception is generated to ELx, any pending Unrecoverable // SError interrupt must be taken before executing any instructions in the exception handler. // However, this can be before the branch to the exception handler is made. boolean InsertIESBBeforeException(bits(2) el);