Namespaces
Enumerations
enum X86Interrupt
| Name | Value |
|---|---|
| kDivideError | 0 |
| kDebug | 1 |
| kNmi | 2 |
| kBreakpoint | 3 |
| kOverflow | 4 |
| kBoundRangeExceeded | 5 |
| kInvalidOpcode | 6 |
| kDeviceNotAvailable | 7 |
| kDoubleFault | 8 |
| kCoprocessorSegmentOverrun | 9 |
| kInvalidTss | 10 |
| kSegmentNotPresent | 11 |
| kStackFaultException | 12 |
| kGeneralProtection | 13 |
| kPageFault | 14 |
| kX87FloatingPoint | 16 |
| kAlignmentCheck | 17 |
| kMachineCheck | 18 |
| kSimdFloatingPoint | 19 |
| kVirtualizatoin | 20 |
| kControlProtection | 21 |
| kFirstUserDefined | 32 |
| kLastUserDefined | 255 |
[intel/vol3]: 6.15 Exception and Interrupt Reference
Defined at line 15 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/interrupt.h
enum ArmL1ICachePolicy
| Name | Value |
|---|---|
| VPIPT | 0b00 |
| AIVIVT | 0b01 |
| VIPT | 0b10 |
| PIPT | 0b11 |
Defined at line 18 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/cache.h
enum RiscvFeature
| Name | Value |
|---|---|
| kSstc | 0 |
| kSvpbmt | 1 |
| kVector | 2 |
| kZicbom | 3 |
| kZicboz | 4 |
| kZicntr | 5 |
| kMax | 6 |
An enumeration of RISC-V features.
This is not intended to be exhaustive, but rather to include the features
that the kernel currently depends on.
Values should not be prescribed manually and are intended to automatically
increment from 0.
Defined at line 22 of file ../../zircon/kernel/lib/arch/include/lib/arch/riscv64/feature.h
enum ArmShareabilityAttribute
| Name | Value |
|---|---|
| kNone | 0b00 |
| kOuter | 0b10 |
| kInner | 0b11 |
The cache shareability attribute for memory regions, as defined by the
TCR_ELx.SHn fields.
[arm/v8]: D13.2.120 TCR_EL1, Translation Control Register (EL1)
[arm/v8]: D13.2.121 TCR_EL2, Translation Control Register (EL2)
Defined at line 27 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
enum X86PagingLevelCount
| Name | Value |
|---|---|
| k4 | 4 |
| k5 | 5 |
Defined at line 28 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
enum ArmSmcccConduit
| Name | Value |
|---|---|
| kSmc | 0xd4000003 |
| kHvc | 0xd4000002 |
[arm/smccc] 2.5.3: Conduits
An SMCCC call is invoked using one of two "conduit" instructions:
Defined at line 31 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/smccc.h
enum ArmPagingConfiguration
| Name | Value |
|---|---|
| k4k30Bit | 0 |
| k4k39Bit | 1 |
| k4k48Bit | 2 |
| k16k25Bit | 3 |
| k16k36Bit | 4 |
| k16k47Bit | 5 |
| k64k28Bit | 6 |
| k64k42Bit | 7 |
Defined at line 33 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/paging-traits.h
enum ArmCacheabilityAttribute
| Name | Value |
|---|---|
| kNonCacheable | 0b00 |
| kWriteBackReadWriteAllocate | 0b01 |
| kWriteThroughReadAllocate | 0b10 |
| kWriteBackReadAllocate | 0b11 |
The cacheability attribute of a normal memory regions, as defined by the
TCR_ELx.IRGNn and TCR_ELx.ORGNn fields.
[arm/v8]: D13.2.120 TCR_EL1, Translation Control Register (EL1)
[arm/v8]: D13.2.121 TCR_EL2, Translation Control Register (EL2)
Defined at line 39 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
enum X86PagingLevel
| Name | Value |
|---|---|
| kPml5Table | 0 |
| kPml4Table | 1 |
| kPageDirectoryPointerTable | 2 |
| kPageDirectory | 3 |
| kPageTable | 4 |
[intel/vol3]: Table 4-2. Paging Structures in the Different Paging Modes
[amd/vol2]: Figure 5-1. Virtual to Physical Address Translation ā Long Mode
Defined at line 49 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
enum ArmDeviceMemory
| Name | Value |
|---|---|
| kNonGatheringNonReorderingNoEarlyAck | 0b00 |
| kNonGatheringNonReorderingEarlyAck | 0b01 |
| kNonGatheringReorderingEarlyAck | 0b10 |
| kGatheringReorderingEarlyAck | 0b11 |
Types of ARM device memory.
Numeric values are as expected by MAIR_ELx attribute encodings for device
memory.
Defined at line 50 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/memory.h
enum ArmSmcccFunction
| Name | Value |
|---|---|
| kSmcccVersion | 0x8000'0000 |
| kSmcccArchFeatures | 0x8000'0001 |
| kSmcccArchSocId | 0x8000'0002 |
| kSmcccArchWorkaround1 | 0x8000'8000 |
| kSmcccArchWorkaround2 | 0x8000'7fff |
| kSmcccArchWorkaround3 | 0x8000'3fff |
| kPsciPsciVersion | 0x8400'0000 |
| kPsciCpuSuspend | 0xc400'0001 |
| kPsciCpuOff | 0x8400'0002 |
| kPsciCpuOn | 0xc400'0003 |
| kPsciAffinityInfo | 0xc400'0004 |
| kPsciMigrate | 0xc400'0005 |
| kPsciMigrateInfoType | 0x8400'0006 |
| kPsciMigrateInfoUpCpu | 0xc400'0007 |
| kPsciSystemOff | 0x8400'0008 |
| kPsciSystemReset | 0x8400'0009 |
| kPsciSystemReset2 | 0xc400'0012 |
| kPsciMemProtect | 0x8400'0013 |
| kPsciMemProtectCheckRange | 0xc400'0014 |
| kPsciPsciFeatures | 0x8400'000a |
| kPsciCpuFreeze | 0x8400'000b |
| kPsciCpuDefaultSuspend | 0x8400'000c |
| kPsciNodeHwState | 0x8400'000d |
| kPsciSystemSuspend | 0xc400'000e |
| kPsciPsciSetSuspendMode | 0x8400'000f |
| kPsciPsciStatResidency | 0xc400'0010 |
| kPsciPsciStatCount | 0xc400'0011 |
[arm/smccc] 6: Function Identifier Ranges
0x8000'0000 - 0x8000'ffff: Arm Architecture Calls
0x8100'0000 - 0x8100'ffff: CPU Service Calls
0x8200'0000 - 0x8200'ffff: SIP Service Calls
0x8300'0000 - 0x8300'ffff: OEM Service Calls
0x8400'0000 - 0x8400'ffff: Standard Secure Service Calls
Defined at line 55 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/smccc.h
enum X86Msr
| Name | Value |
|---|---|
| IA32_EFER | 0xc000'0080 |
| IA32_FS_BASE | 0xc000'0100 |
| IA32_GS_BASE | 0xc000'0101 |
| IA32_KERNEL_GS_BASE | 0xc000'0102 |
| IA32_SPEC_CTRL | 0x0000'0048 |
| IA32_PRED_CMD | 0x0000'0049 |
| IA32_ARCH_CAPABILITIES | 0x0000'010a |
| IA32_TSX_CTRL | 0x0000'0122 |
| IA32_MISC_ENABLE | 0x0000'01a0 |
| IA32_DEBUGCTL | 0x0000'01d9 |
| IA32_PERF_CAPABILITIES | 0x0000'0345 |
| MSR_LBR_SELECT | 0x0000'01c8 |
| MSR_LASTBRANCH_TOS | 0x0000'01c9 |
| MSR_LASTBRANCH_0_FROM_IP | 0x0000'0680 |
| MSR_LASTBRANCH_0_TO_IP | 0x0000'06c0 |
| MSR_LBR_INFO_0 | 0x0000'0dc0 |
| MSRC001_0015 | 0xc001'0015 |
| MSR_VIRT_SPEC_CTRL | 0xc001'011f |
| MSRC001_1020 | 0xc001'1020 |
| MSRC001_1028 | 0xc001'1028 |
| MSRC001_1029 | 0xc001'1029 |
| MSRC001_102D | 0xc001'102d |
MSR identifiers. These use the ALL_CAPS name style to be consistent with
the Intel manuals. The generated header
<lib
/arch/x86/msr-asm.h> contains
macros for `MSR_
<name
>` so these constants can be used in assembly code.
Defined at line 61 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/msr.h
enum VirtualAddressExtension
| Name | Value |
|---|---|
| kCanonical | 0 |
| k0 | 1 |
| k1 | 2 |
Parameterizes the unaddressable bits of a virtual address.
Defined at line 67 of file ../../zircon/kernel/lib/arch/include/lib/arch/paging.h
enum RiscvPagingLevel
| Name | Value |
|---|---|
| k4 | 4 |
| k3 | 3 |
| k2 | 2 |
| k1 | 1 |
| k0 | 0 |
Defined at line 75 of file ../../zircon/kernel/lib/arch/include/lib/arch/riscv64/paging-traits.h
enum ArmMaximumVirtualAddressWidth
| Name | Value |
|---|---|
| k48Bits | 48 |
| k52Bits | 52 |
[arm/v8]: D5.1.3 VMSA address types and address spaces
One of two possible maximum virtual address widths.
Defined at line 87 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/paging-traits.h
enum RiscvMemoryType
| Name | Value |
|---|---|
| kPma | 0 |
| kNc | 1 |
| kIo | 2 |
When the Svpbmt extension is available, a page table entry's pbmt field
determines the physical memory type being accessed. Without that extension,
those bits must be all zero, which is also the PMA type (meaning the memory
type is controlled by the Physical Memory Attributes specification instead).
Defined at line 87 of file ../../zircon/kernel/lib/arch/include/lib/arch/riscv64/paging-traits.h
enum Vendor
| Name | Value |
|---|---|
| kUnknown | 0 |
| kIntel | 1 |
| kAmd | 2 |
Defined at line 89 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/cpuid.h
enum ArmGranuleSize
| Name | Value |
|---|---|
| k4KiB | 12 |
| k16KiB | 14 |
| k64KiB | 16 |
[arm/v8]: D5.2.4 Memory translation granule size
Numeric value gives the base-2 logarithm of the size in bytes for
convenience in page-related arithmetic.
Defined at line 96 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/paging-traits.h
enum ArmSmcccReturnCode
| Name | Value |
|---|---|
| kArmSmcccSuccess | 0 |
| kArmSmcccNotSupported | -1u |
| kArmSmcccNotRequired | -2u |
| kArmSmcccInvalidParameter | -3u |
[arm/smccc] 7.1: Return Codes
These are the standard values for the Arm Architecture Calls' return
values in w0. Some calls return other values, hence this does not use
a scoped enum.
Defined at line 97 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/smccc.h
enum Microarchitecture
| Name | Value |
|---|---|
| kUnknown | 0 |
| kIntelCore2 | 1 |
| kIntelNehalem | 2 |
| kIntelWestmere | 3 |
| kIntelSandyBridge | 4 |
| kIntelIvyBridge | 5 |
| kIntelHaswell | 6 |
| kIntelBroadwell | 7 |
| kIntelSkylake | 8 |
| kIntelSkylakeServer | 9 |
| kIntelCannonLake | 10 |
| kIntelIceLake | 11 |
| kIntelTigerLake | 12 |
| kIntelAlderLake | 13 |
| kIntelRaptorLake | 14 |
| kIntelBonnell | 15 |
| kIntelSaltwell | 16 |
| kIntelSilvermont | 17 |
| kIntelAirmont | 18 |
| kIntelGoldmont | 19 |
| kIntelGoldmontPlus | 20 |
| kIntelTremont | 21 |
| kAmdFamilyBulldozer | 22 |
| kAmdFamilyJaguar | 23 |
| kAmdFamilyZen | 24 |
| kAmdFamilyZen3 | 25 |
The list is not exhaustive and is in chronological order within groupings.
Microarchictectures that use the same processor (and, say, differ only in
performance or SoC composition) are regarded as equivalent.
Defined at line 98 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/cpuid.h
enum ArmAddressTranslationLevel
| Name | Value |
|---|---|
| kMinus1 | 0 |
| k0 | 1 |
| k1 | 2 |
| k2 | 3 |
| k3 | 4 |
[arm/v8]: D5.2 The VMSAv8-64 address translation system
Defined at line 118 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/paging-traits.h
enum ArmVirtualAddressRange
| Name | Value |
|---|---|
| kLower | 0 |
| kUpper | 1 |
Specifies the upper or lower virtual address range (i.e., the
1- or 0- extended ranges, respectively), which are configured separately.
Defined at line 142 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/paging-traits.h
enum ArmTcrTg0Value
| Name | Value |
|---|---|
| k4KiB | 0b00 |
| k16KiB | 0b10 |
| k64KiB | 0b01 |
Granule size values for the TCR_EL1 and TCR_EL2 fields.
WARNING: The encodings for the TG0 field and TG1 field are different.
[arm/v8]: D13.2.120 TCR_EL1, Translation Control Register (EL1)
[arm/v8]: D13.2.121 TCR_EL2, Translation Control Register (EL2)
Defined at line 260 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/system.h
enum ArmTcrTg1Value
| Name | Value |
|---|---|
| k4KiB | 0b10 |
| k16KiB | 0b01 |
| k64KiB | 0b11 |
Defined at line 265 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/system.h
enum ArmAddressTranslationAccessPermissions
| Name | Value |
|---|---|
| kSupervisorReadWrite | 0b00 |
| kReadWrite | 0b01 |
| kSupervisorReadOnly | 0b10 |
| kReadOnly | 0b11 |
[arm/v8]: Table D5-29 Data access permissions for stage 1 translations
Access permission for page table entries.
Defined at line 285 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/paging-traits.h
enum ArmAddressTranslationTableAccessPermissions
| Name | Value |
|---|---|
| kNoEffect | 0b00 |
| kNoEl0Access | 0b01 |
| kNoWriteAccess | 0b10 |
| kNoWriteOrEl0Access | 0b11 |
Defined at line 292 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/paging-traits.h
enum ArmAddressTranslationDescriptorFormat
| Name | Value |
|---|---|
| kBlock | 0b0 |
| kTableOrPage | 0b1 |
[arm/v8]: D5.3.1 VMSAv8-64 translation table level 0, level 1, and level 2
descriptor formats.
[arm/v8]: D5.3.2 Armv8 translation table level 3 descriptor formats
Defined at line 304 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/paging-traits.h
enum X86CacheType
| Name | Value |
|---|---|
| kNull | 0 |
| kData | 1 |
| kInstruction | 2 |
| kUnified | 3 |
---------------------------------------------------------------------------//
Leaf/Function 0x4.
[intel/vol2]: Table 3-8. Information Returned by CPUID Instruction.
[amd/vol3]: E.3.3 Functions 2hā4hāReserved.
---------------------------------------------------------------------------//
Defined at line 321 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/cpuid.h
enum SpectreV2Mitigation
| Name | Value |
|---|---|
| kIbrs | 0 |
| kIbpbRetpoline | 1 |
| kIbpbRetpolineStibp | 2 |
An architecturally prescribed mitigation for Spectre v2.
Defined at line 446 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/bug.h
enum ArmAsidSize
| Name | Value |
|---|---|
| k8bits | 0b0000 |
| k16bits | 0b0010 |
ASID size.
Defined at line 486 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/feature.h
enum ArmPhysicalAddressSize
| Name | Value |
|---|---|
| k32Bits | 0b0000 |
| k36Bits | 0b0001 |
| k40Bits | 0b0010 |
| k42Bits | 0b0011 |
| k44Bits | 0b0100 |
| k48Bits | 0b0101 |
| k52Bits | 0b0110 |
| k56Bits | 0b0111 |
Physical address size.
The same encoding is used by several registers, including system registers TCR_EL1.IPS,
TCR_EL2.PS, and the feature register ID_AA64MMFR0_EL1.PARange.
[arm/v9]: D24.2.82 ID_AA64MMFR0_EL1, AArch64 Memory Model Feature Register 0
[arm/v9]: D24.2.182 Translation Control Register (EL1)
[arm/v9]: D24.2.183 Translation Control Register (EL2)
Defined at line 499 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/feature.h
enum CpuidL2L3Associativity
| Name | Value |
|---|---|
| kDisabled | 0x0 |
| kDirectMapped | 0x1 |
| k2Way | 0x2 |
| k3Way | 0x3 |
| k4Way | 0x4 |
| k6Way | 0x5 |
| k8Way | 0x6 |
| k16Way | 0x8 |
| kSeeLeaf0x8000001d | 0x9 |
| k32Way | 0xa |
| k48Way | 0xb |
| k64Way | 0xc |
| k96Way | 0xd |
| k128Way | 0xe |
| kFullyAssociative | 0xf |
---------------------------------------------------------------------------//
Leaf/Function 0x8000'0006
[amd/vol3]: E.4.5 Function 8000_0006hāL2 Cache and TLB and L3 Cache Information.
---------------------------------------------------------------------------//
Defined at line 977 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/cpuid.h
Records
-
class AccessPermissions -
class AlignedGdtRegister64 -
class AmdC0011028Msr -
class AmdC0011029Msr -
class AmdC001102dMsr -
class AmdHardwareConfigurationMsr -
class AmdLoadStoreConfigurationMsr -
class AmdVirtualSpeculationControlMsr -
class ApicIdDecoder -
class ArchCapabilitiesMsr -
class Arm64NopTraits -
class ArmAddressTranslationBlockDescriptor -
class ArmAddressTranslationDescriptor -
class ArmAddressTranslationPageDescriptor -
class ArmAddressTranslationTableDescriptor -
class ArmArchitecturalFeatureTrapRegister -
class ArmCacheTypeEl0 -
class ArmCnthctlEl2 -
class ArmCounterTimerHypervisorControl -
class ArmCptrEl2 -
class ArmCptrEl3 -
class ArmCurrentEl -
class ArmDaif -
class ArmDaifSetClr -
class ArmDataCacheZeroIdEl0 -
class ArmElrEl1 -
class ArmElrEl2 -
class ArmElrEl3 -
class ArmEsrEl1 -
class ArmEsrEl2 -
class ArmEsrEl3 -
class ArmExceptionSyndromeRegister -
class ArmExtendedHypervisorConfigurationRegister -
class ArmHcrEl2 -
class ArmHcrxEl2 -
class ArmHypervisorConfigurationRegister -
class ArmIccSreEl1 -
class ArmIccSreEl2 -
class ArmIccSreEl3 -
class ArmIdAa64IsaR0El1 -
class ArmIdAa64IsaR1El1 -
class ArmIdAa64IsaR2El1 -
class ArmIdAa64Mmfr0El1 -
class ArmIdAa64Mmfr1El1 -
class ArmIdAa64Mmfr2El1 -
class ArmIdAa64Mmfr3El1 -
class ArmIdAa64Mmfr4El1 -
class ArmIdAa64Pfr0El1 -
class ArmIdAa64Pfr1El1 -
class ArmInterruptControllerSystemRegisterEnableRegister -
class ArmMairEl1 -
class ArmMairEl2 -
class ArmMairNormalAttribute -
class ArmMemoryAttrIndirectionRegister -
class ArmMpidrEl1 -
class ArmMultiprocessorAffinityRegister -
class ArmNzcv -
class ArmPagingTraits -
class ArmSavedProgramStatusRegister -
class ArmScrEl3 -
class ArmSctlr2El1 -
class ArmSctlr2El2 -
class ArmSctlr2El3 -
class ArmSctlrEl1 -
class ArmSctlrEl2 -
class ArmSctlrEl3 -
class ArmSmcccVersion -
class ArmSpEl0 -
class ArmSpEl1 -
class ArmSpEl2 -
class ArmSpsrEl1 -
class ArmSpsrEl2 -
class ArmSpsrEl3 -
class ArmStackPointerRegister -
class ArmSystemControlRegister -
class ArmSystemControlRegister2 -
class ArmSystemPagingState -
class ArmTcr2El1 -
class ArmTcrEl1 -
class ArmTcrEl2 -
class ArmTranslationControlRegisterEl2Base -
class ArmTranslationTableBaseRegister -
class ArmTtbr0El1 -
class ArmTtbr0El2 -
class ArmTtbr0El3 -
class ArmTtbr1El1 -
class ArmTtbr1El2 -
class ArmVbarEl1 -
class ArmVbarEl2 -
class ArmVbarEl3 -
class ArmVectorBaseAddressRegister -
class ArmVectorExceptionLinkRegister -
class ArmVtcrEl2 -
class ArmVttbrEl2 -
class BootCpuidIo -
class CallFrame -
class CpuCacheInfo -
class CpuCacheLevelInfo -
class CpuidAddressSizeInfo -
class CpuidAdvancedPowerFeatureFlags -
class CpuidAmdFeatureFlagsC -
class CpuidAmdFeatureFlagsD -
class CpuidCacheTopologyA -
class CpuidCacheTopologyB -
class CpuidCacheTopologyC -
class CpuidCacheTopologyD -
class CpuidComputeUnitInfo -
class CpuidExtendedAmdFeatureFlagsB -
class CpuidExtendedApicId -
class CpuidExtendedFeatureFlagsB -
class CpuidExtendedFeatureFlagsC -
class CpuidExtendedFeatureFlagsD -
class CpuidExtendedSizeInfo -
class CpuidFeatureFlagsC -
class CpuidFeatureFlagsD -
class CpuidHypervisorNameB -
class CpuidHypervisorNameC -
class CpuidHypervisorNameD -
class CpuidIo -
class CpuidIoValue -
class CpuidIoValueBase -
class CpuidL1CacheInformation -
class CpuidL2CacheInformation -
class CpuidL3CacheInformation -
class CpuidMaximumExtendedLeaf -
class CpuidMaximumHypervisorLeaf -
class CpuidMaximumLeaf -
class CpuidMonitorMwaitA -
class CpuidMonitorMwaitB -
class CpuidMonitorMwaitC -
class CpuidMonitorMwaitD -
class CpuidNodeInfo -
class CpuidPerformanceMonitoringA -
class CpuidPerformanceMonitoringB -
class CpuidPerformanceMonitoringD -
class CpuidProcessorInfo -
class CpuidProcessorName2A -
class CpuidProcessorName2B -
class CpuidProcessorName2C -
class CpuidProcessorName2D -
class CpuidProcessorName3A -
class CpuidProcessorName3B -
class CpuidProcessorName3C -
class CpuidProcessorName3D -
class CpuidProcessorName4A -
class CpuidProcessorName4B -
class CpuidProcessorName4C -
class CpuidProcessorName4D -
class CpuidProcessorTraceMainB -
class CpuidProcessorTraceMainC -
class CpuidThermalAndPowerFeatureFlagsA -
class CpuidThermalAndPowerFeatureFlagsC -
class CpuidTopologyEnumerationA -
class CpuidTopologyEnumerationB -
class CpuidTopologyEnumerationC -
class CpuidTopologyEnumerationD -
class CpuidVendorB -
class CpuidVendorC -
class CpuidVendorD -
class CpuidVersionInfo -
class Desc32 -
class EarlyTicks -
class ExamplePagingTraits -
class FramePointerBacktrace -
class GdtRegister64 -
class GlobalCacheConsistencyContext -
class HypervisorName -
class MapError -
class MiscFeaturesMsr -
class Paging -
class PagingQueryResult -
class PredictionCommandMsr -
class ProcessorName -
class Random -
class Random -
class Random -
class RiscvFeatures -
class RiscvNopTraits -
class RiscvPagingTraits -
class RiscvPagingTraitsBase -
class RiscvSatp -
class RiscvScause -
class RiscvSstatus -
class RiscvStval -
class RiscvStvec -
class SegmentSelector -
class ShadowCallStackBacktrace -
class SpeculationControlMsr -
class SysReg -
class SysRegDerived -
class SysRegDerivedBase -
class SystemSegmentDesc64 -
class TaskStateSegment64 -
class TsxControlMsr -
class VirtualAddressBitRange -
class X86Cr0 -
class X86Cr2 -
class X86Cr3 -
class X86Cr3PCID -
class X86Cr4 -
class X86Cr8 -
class X86ExtendedFeatureEnableRegisterMsr -
class X86InterruptFrame -
class X86MsrBase -
class X86NopTraits -
class X86PagingTraits -
class X86PagingTraitsBase -
class X86StandardSegments -
class X86Xcr0
Functions
-
void ArmDropToEl1WithoutEl2Monitor ()If we are executing at an exception level higher than EL1, this disables EL2
monitoring, ensures would-be EL2 traps are routed to EL3, installs the
current stack in SP_EL1 (if any), and then drops to EL1. If we are already
at EL1, then this call is a no-op.
This function is safe to call in any context. Care is taken to avoid using
the stack and only uses scratch registers.
-
void LoadTaskRegister64 (SegmentSelector selector)Load the system Task Register.
`selector` should be an index in the GDT containing a SystemSegmentDesc64 entry of type
SegmentType::TSS_AVAILABLE.
Defined at line 19 of file ../../zircon/kernel/lib/arch/x86/include/lib/arch/x86/descriptor-regs.h
-
template <typename CpuidIoProvider>uint32_t GetApicId (CpuidIoProvider && io)Returns the APIC ID - x2APIC if supported - associated with the logical
processor in turn associated with the provided CpuidIoProvider.
Defined at line 19 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/apic-id.h
-
PagingConfiguration PagingConfigurationFromString (std::string_view name)Defined at line 23 of file ../../zircon/kernel/lib/arch/x86/include/lib/arch/paging-traits.h
-
template <typename CpuidIoProvider, typename MsrIoProvider>bool SetX86CpuTurboState (CpuidIoProvider && cpuid, MsrIoProvider && msr, bool enable)Sets the "Turbo" state, which allows the processor to dynamically adjust and
control its operating frequency. Turbo here collectively refers to the
analogous technologies of "Intel Turbo Boost" and "AMD Turbo Core". Returns
false if Turbo is unsupported; else returns true.
For more detail, see:
[intel/vol3]: 14.3.3 IntelĀ® Turbo Boost Technology.
[amd/vol2]: 17.2 Core Performance Boost.
Defined at line 24 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/power.h
-
void LoadGdt (const GdtRegister64 & gdt)Load the x86-64 GDT register to the given value.
Defined at line 29 of file ../../zircon/kernel/lib/arch/x86/include/lib/arch/x86/descriptor-regs.h
-
void Yield ()Yield the processor momentarily. This should be used in busy waits.
Defined at line 32 of file ../../zircon/kernel/lib/arch/x86/include/lib/arch/intrin.h
-
template <class Backtrace>size_t StoreBacktrace (Backtrace && bt, std::span<uintptr_t> pcs, void * raptr)The FramePointerBacktrace and ShadowCallStackBacktrace classes (see below)
provide container-like APIs for safely traversing a backtrace from either
source using forward iteration.
This stores a backtrace from either of those in a fixed-sized buffer, and
returns the number of frames stored there. The optional third argument can
be `__builtin_return_address(0)` in the function where the backtrace was
collected. This will be included as the innermost frame if the backtrace
doesn't already record it there, such as when the collecting function has
no frame pointer itself.
Defined at line 32 of file ../../zircon/kernel/lib/arch/include/lib/arch/backtrace.h
-
template <class Backtrace>size_t StoreBacktrace (Backtrace && bt, std::span<uintptr_t> pcs, void * raptr)The FramePointerBacktrace and ShadowCallStackBacktrace classes (see below)
provide container-like APIs for safely traversing a backtrace from either
source using forward iteration.
This stores a backtrace from either of those in a fixed-sized buffer, and
returns the number of frames stored there. The optional third argument can
be `__builtin_return_address(0)` in the function where the backtrace was
collected. This will be included as the innermost frame if the backtrace
doesn't already record it there, such as when the collecting function has
no frame pointer itself.
Defined at line 32 of file ../../zircon/kernel/lib/arch/include/lib/arch/backtrace.h
-
template <class Backtrace>size_t StoreBacktrace (Backtrace && bt, std::span<uintptr_t> pcs, void * raptr)The FramePointerBacktrace and ShadowCallStackBacktrace classes (see below)
provide container-like APIs for safely traversing a backtrace from either
source using forward iteration.
This stores a backtrace from either of those in a fixed-sized buffer, and
returns the number of frames stored there. The optional third argument can
be `__builtin_return_address(0)` in the function where the backtrace was
collected. This will be included as the innermost frame if the backtrace
doesn't already record it there, such as when the collecting function has
no frame pointer itself.
Defined at line 32 of file ../../zircon/kernel/lib/arch/include/lib/arch/backtrace.h
-
template <class Backtrace>size_t StoreBacktrace (Backtrace && bt, std::span<uintptr_t> pcs, void * raptr)The FramePointerBacktrace and ShadowCallStackBacktrace classes (see below)
provide container-like APIs for safely traversing a backtrace from either
source using forward iteration.
This stores a backtrace from either of those in a fixed-sized buffer, and
returns the number of frames stored there. The optional third argument can
be `__builtin_return_address(0)` in the function where the backtrace was
collected. This will be included as the innermost frame if the backtrace
doesn't already record it there, such as when the collecting function has
no frame pointer itself.
Defined at line 32 of file ../../zircon/kernel/lib/arch/include/lib/arch/backtrace.h
-
template <typename CpuidIoProvider>bool TsxIsSupported (CpuidIoProvider && cpuid)Defined at line 34 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/extension.h
-
X86PagingLevelCount X86PagingLevelCountFromString (std::string_view name)Associates a conventional string name with each x86 paging configuration.
Defined at line 34 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
-
X86PagingLevelCount X86PagingLevelCountFromString (std::string_view name)Associates a conventional string name with each x86 paging configuration.
Defined at line 34 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/paging-traits.h
-
void DeviceMemoryBarrier ()Synchronize all memory accesses of all kinds.
Defined at line 37 of file ../../zircon/kernel/lib/arch/x86/include/lib/arch/intrin.h
-
void LoadGdt (const AlignedGdtRegister64 & gdt)Defined at line 37 of file ../../zircon/kernel/lib/arch/x86/include/lib/arch/x86/descriptor-regs.h
-
void ThreadMemoryBarrier ()Synchronize the ordering of all memory accesses wrt other CPUs.
Defined at line 40 of file ../../zircon/kernel/lib/arch/x86/include/lib/arch/intrin.h
-
void LoadIdt (const GdtRegister64 & idt)Load the x86-64 IDT register to the given value.
Defined at line 40 of file ../../zircon/kernel/lib/arch/x86/include/lib/arch/x86/descriptor-regs.h
-
template <typename CpuidIoProvider, typename MsrIoProvider>bool DisableTsx (CpuidIoProvider && cpuid, MsrIoProvider && msr)Attempts to disable TSX and returns whether it was successful.
Defined at line 42 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/extension.h
-
void SerializeInstructions ()Force the processor to complete all modifications to register state and
memory by previous instructions (including draining any buffered writes)
before the next instruction is fetched.
Defined at line 45 of file ../../zircon/kernel/lib/arch/x86/include/lib/arch/intrin.h
-
template <typename NopTraits #if defined(__aarch64__) = Arm64NopTraits #elif defined(__x86_64__) || defined(__i386__) = X86NopTraits>void NopFill (std::span<std::byte> instructions)Defined at line 46 of file ../../zircon/kernel/lib/arch/include/lib/arch/nop.h
-
template <typename NopTraits #if defined(__aarch64__) = Arm64NopTraits #elif defined(__x86_64__) || defined(__i386__) = X86NopTraits>void NopFill (std::span<std::byte> instructions)Defined at line 46 of file ../../zircon/kernel/lib/arch/include/lib/arch/nop.h
-
void LoadIdt (const AlignedGdtRegister64 & idt)Defined at line 47 of file ../../zircon/kernel/lib/arch/x86/include/lib/arch/x86/descriptor-regs.h
-
bool X86InterruptHasErrorCode (arch::X86Interrupt vector)[intel/vol3]: 6.15 sections for each interrupt document whether it uses the
error code. Most do not, so that's the presumption for the reserved slots.
Defined at line 48 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/interrupt.h
-
ArmPagingConfiguration ArmPagingConfigurationFromString (std::string_view name)Associates a conventional string name with each arm64 paging configuration.
Defined at line 53 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/paging-traits.h
-
uint64_t Cycles ()Return the current CPU cycle count.
Defined at line 55 of file ../../zircon/kernel/lib/arch/x86/include/lib/arch/intrin.h
-
RiscvSatp::Mode RiscvSatpModeFromString (std::string_view name)Associates a conventional string name with each riscv64 paging configuration.
Defined at line 56 of file ../../zircon/kernel/lib/arch/include/lib/arch/riscv64/paging-traits.h
-
void LoadLdt (SegmentSelector selector)Load the Local Descriptor Table Register (LDTR).
`selector` can be null or a GDT selector for a valid ring 0 data segment.
If the selector is valid, the base address and limit for the LDT are loaded
from the GDT descriptor chosen by this selector. If the selector is null,
the LDT is disabled.
Defined at line 60 of file ../../zircon/kernel/lib/arch/x86/include/lib/arch/x86/descriptor-regs.h
-
std::string_view ToString (Vendor vendor)Defined at line 60 of file ../../zircon/kernel/lib/arch/cpuid.cc
-
void DisableLdt ()Disable the LDT. Any future use of segment selectors with the LDT bit set
produces an immediate #GP fault without examining any table in memory.
Defined at line 66 of file ../../zircon/kernel/lib/arch/x86/include/lib/arch/x86/descriptor-regs.h
-
std::string_view ToString (Microarchitecture microarch)Defined at line 72 of file ../../zircon/kernel/lib/arch/cpuid.cc
-
const char * X86InterruptName (arch::X86Interrupt vector)[intel/vol3]: 6.15 defines the two-letter "#" names for most of these.
Defined at line 78 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/interrupt.h
-
template <typename CpuidIoProvider>bool HasIbpb (CpuidIoProvider && cpuid)Whether the Indirect Branch Prediction Barrier (IBPB) is supported.
https://software.intel.com/security-software-guidance/deep-dives/deep-dive-indirect-branch-predictor-barrier.
Defined at line 92 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/speculation.h
-
ArmSmcccReturnCode ArmSmcccGetReturnCode (uint64_t x0)This takes a 64-bit result in x0 and gets the 32-bit standard return code.
Defined at line 105 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/smccc.h
-
template <typename TcrValueField>TcrValueField ArmGranuleSizeToTcr (arch::ArmGranuleSize granule)Convert from granule size to either arch::ArmTcrTg0Value or arch::ArmTcrTg1Value
Defined at line 106 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/paging-traits.h
-
template <typename CpuidIoProvider, typename MsrIoProvider>void IssueIbpb (CpuidIoProvider && cpuid, MsrIoProvider && msr)Issues an IBPB (Indirect Branch Prediction Barrier), which requires the
feature to be supported.
Defined at line 108 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/speculation.h
-
template <typename CpuidIoProvider>bool HasX86SwapgsBug (CpuidIoProvider && cpuid)Whether the CPU is susceptible to swapgs speculation attacks:
https://software.intel.com/security-software-guidance/advisory-guidance/speculative-behavior-swapgs-and-segment-registers
CVE-2019-1125.
Defined at line 110 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/bug.h
-
template <typename CpuidIoProvider, typename MsrIoProvider>bool HasIbrs (CpuidIoProvider && cpuid, MsrIoProvider && msr, bool always_on_mode)Whether Indirect Branch Restricted Speculation (IBRS) is supported. The
"always on" mode refers to an optimization in which IBRS need only be
enabled once; IBRS in this mode are also referred to as "enhanced".
https://software.intel.com/security-software-guidance/deep-dives/deep-dive-indirect-branch-restricted-speculation.
Defined at line 119 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/speculation.h
-
template <typename CpuidIoProvider, typename MsrIoProvider>bool HasX86MdsBugs (CpuidIoProvider && cpuid, MsrIoProvider && msr)Whether the CPU is susceptible to any of the Microarchitectural Data
Sampling (MDS) bugs.
CVE-2018-12126, CVE-2018-12127, CVE-2018-12130, CVE-2019-11091.
Defined at line 128 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/bug.h
-
template <typename CpuidIoProvider, typename MsrIoProvider>void EnableIbrs (CpuidIoProvider && cpuid, MsrIoProvider && msr)Enables IBRS, which requires the feature to be supported.
Defined at line 141 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/speculation.h
-
template <typename CpuidIoProvider>bool HasStibp (CpuidIoProvider && cpuid, bool always_on_mode)Whether Single Thread Indirect Branch Predictors (STIBP) are supported. The
"always on" mode refers to an optimization in which STIBP need only be
enabled once.
https://software.intel.com/security-software-guidance/deep-dives/deep-dive-single-thread-indirect-branch-predictors.
Defined at line 152 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/speculation.h
-
ArmSmcccVersion ArmSmcccVersionResult (uint64_t x0, ArmSmcccVersion not_supported)[arm/smccc] 7.2: SMCCC_VERSION
This interprets the return value from SMCCC_VERSION or PSCI_VERSION.
Defined at line 154 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/smccc.h
-
template <typename CpuidIoProvider>Vendor GetVendor (CpuidIoProvider && io)Defined at line 168 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/cpuid.h
-
template <typename CpuidIoProvider, typename MsrIoProvider>void EnableStibp (CpuidIoProvider && cpuid, MsrIoProvider && msr)Enables STIBP, which requires the feature to be supported.
Defined at line 171 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/speculation.h
-
template <typename CpuidIoProvider, typename MsrIoProvider>bool HasX86TaaBug (CpuidIoProvider && cpuid, MsrIoProvider && msr)Whether the CPU is susceptible to the TSX Asynchronous Abort (TAA) bug.
CVE-2019-11135.
Defined at line 172 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/bug.h
-
template <typename CpuidValue>auto BootCpuid ()Convenient accessor for BootCpuidIo data, e.g.
```
bool have_avx = arch::BootCpuid
<arch
::CpuidFeatureFlagsC>().avx();
```
Defined at line 186 of file ../../zircon/kernel/lib/arch/x86/include/lib/arch/x86/boot-cpuid.h
-
template <typename CpuidValue>bool BootCpuidSupports ()Whether the leaf assosiated with a CPUID value type is supported, according
to BootCpuidIo.
Defined at line 193 of file ../../zircon/kernel/lib/arch/x86/include/lib/arch/x86/boot-cpuid.h
-
template <typename CpuidIoProvider, typename MsrIoProvider>bool HasX86MdsTaaBugs (CpuidIoProvider && cpuid, MsrIoProvider && msr)Whether the CPU is susceptible to any of the MDS or TAA bugs, which are
closely related and similarly mitigated.
Defined at line 219 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/bug.h
-
template <typename CpuidIoProvider>Microarchitecture GetMicroarchitecture (CpuidIoProvider && io)Defined at line 221 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/cpuid.h
-
template <typename CpuidIoProvider>bool CanMitigateX86MdsTaaBugs (CpuidIoProvider && cpuid)Whether the MDS/TAA bugs can be mitigated, which all make use of the same
method (MD_CLEAR):
https://software.intel.com/security-software-guidance/deep-dives/deep-dive-intel-analysis-microarchitectural-data-sampling#mitigation4processors
Defined at line 227 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/bug.h
-
uintptr_t GetShadowCallStackPointer ()Defined at line 235 of file ../../zircon/kernel/lib/arch/include/lib/arch/backtrace.h
-
template <typename CpuidIoProvider, typename MsrIoProvider>bool HasX86SsbBug (CpuidIoProvider && cpuid, MsrIoProvider && msr)Whether the CPU is susceptible to the Speculative Store Bypass (SSB) bug:
https://software.intel.com/security-software-guidance/advisory-guidance/speculative-store-bypass
CVE-2018-3639.
Defined at line 236 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/bug.h
-
template <typename CpuidIoProvider>bool CanMitigateX86SsbBug (CpuidIoProvider && cpuid)Defined at line 327 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/bug.h
-
template <typename CpuidIoProvider, typename MsrIoProvider>bool HasX86MeltdownBug (CpuidIoProvider && cpuid, MsrIoProvider && msr)Whether the CPU is susceptible to the Rogue Data Cache Load (Meltdown) bug:
https://software.intel.com/security-software-guidance/advisory-guidance/rogue-data-cache-load.
CVE-2017-5754.
Defined at line 338 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/bug.h
-
template <typename CpuidIoProvider, typename MsrIoProvider>bool HasX86L1tfBug (CpuidIoProvider && cpuid, MsrIoProvider && msr)Whether the CPU is susceptible to the L1 Terminal Fault (L1TF) bug:
https://software.intel.com/security-software-guidance/advisory-guidance/l1-terminal-fault.
CVE-2018-3615, CVE-2018-3620, CVE-2018-3646.
Defined at line 396 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/bug.h
-
template <typename CpuidIoProvider, typename MsrIoProvider>SpectreV2Mitigation GetPreferredSpectreV2Mitigation (CpuidIoProvider && cpuid, MsrIoProvider && msr)Returns the preferred Spectre v2 mitigation strategy.
Defined at line 461 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/bug.h
-
template <typename CpuidIoProvider, typename MsrIoProvider>void ApplyX86ErrataWorkarounds (CpuidIoProvider && cpuid, MsrIoProvider && msr)Applies workarounds to processor-specific errata.
Defined at line 500 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/bug.h
-
void LoadCodeSegmentSelector (SegmentSelector code_segment)Activate the given code selector and data selector.
The two selectors should be indexes into the currently loaded GDT.
-
void InitializeBootCpuid ()Call this once early in startup, before any uses of arch::BootCpuIdIo. It
initializes all the CpuidIo values in link map by using the CPUID
instruction. See below for implementation details.
-
std::string_view ToString (X86CacheType type)Defined at line 260 of file ../../zircon/kernel/lib/arch/cpuid.cc
-
template <typename CpuidIoProvider, typename MsrIoProvider>bool MitigateX86SsbBug (CpuidIoProvider && cpuid, MsrIoProvider && msr)Attempt to mitigate the SSB bug. Return true if the bug was successfully
mitigated.
Defined at line 283 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/bug.h
-
std::string_view ToString (MapError::Type type)Defined at line 321 of file ../../zircon/kernel/lib/arch/include/lib/arch/paging.h
-
template <typename CpuidValueTypetypename CpuidIoProvider>bool CpuidSupports (CpuidIoProvider && cpuid)Whether the leaf associated with a given CPUID value type is supported.
Defined at line 1157 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/cpuid.h
Variables
const uint32_t kArmSmcccFunctionFast
Defined at line 41 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/smccc.h
const uint32_t kArmSmcccFunction64
Defined at line 46 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/smccc.h
const size_t kArmPsciRegisters
Defined at line 170 of file ../../zircon/kernel/lib/arch/include/lib/arch/arm64/smccc.h
const uintptr_t kAsmLabelAddress
Defined at line 296 of file ../../zircon/kernel/lib/arch/include/lib/arch/asm.h
const uintptr_t kAsmLabelAddress
Defined at line 296 of file ../../zircon/kernel/lib/arch/include/lib/arch/asm.h
const uintptr_t kAsmLabelAddress
Defined at line 296 of file ../../zircon/kernel/lib/arch/include/lib/arch/asm.h
const uintptr_t kAsmLabelAddress
Defined at line 296 of file ../../zircon/kernel/lib/arch/include/lib/arch/asm.h
const uintptr_t kAsmLabelAddress
Defined at line 296 of file ../../zircon/kernel/lib/arch/include/lib/arch/asm.h
const uintptr_t kAsmLabelAddress
Defined at line 296 of file ../../zircon/kernel/lib/arch/include/lib/arch/asm.h
const uintptr_t kAsmLabelAddress
Defined at line 297 of file ../../zircon/kernel/lib/arch/include/lib/arch/asm.h
const uintptr_t kAsmLabelSize
Defined at line 300 of file ../../zircon/kernel/lib/arch/include/lib/arch/asm.h
const uintptr_t kAsmLabelSize
Defined at line 300 of file ../../zircon/kernel/lib/arch/include/lib/arch/asm.h
const uintptr_t kAsmLabelSize
Defined at line 301 of file ../../zircon/kernel/lib/arch/include/lib/arch/asm.h