X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=ArmPkg%2FInclude%2FIndustryStandard%2FArmCache.h;fp=ArmPkg%2FInclude%2FIndustryStandard%2FArmCache.h;h=27a91fcda2d59a1365bf47be2bcc6ee2030e160d;hp=f9de46b5bffd9b1a91c1dde55869417ec3d5bbc3;hb=429309e0c6b74792d679681a8edd0d5ae0ff850c;hpb=7c2a6033c149625482a18cd51b65513c8fb8fe15 diff --git a/ArmPkg/Include/IndustryStandard/ArmCache.h b/ArmPkg/Include/IndustryStandard/ArmCache.h index f9de46b5bf..27a91fcda2 100644 --- a/ArmPkg/Include/IndustryStandard/ArmCache.h +++ b/ArmPkg/Include/IndustryStandard/ArmCache.h @@ -13,22 +13,21 @@ // The ARM Architecture Reference Manual for ARMv8-A defines up // to 7 levels of cache, L1 through L7. -#define MAX_ARM_CACHE_LEVEL 7 +#define MAX_ARM_CACHE_LEVEL 7 /// Defines the structure of the CSSELR (Cache Size Selection) register typedef union { struct { - UINT32 InD :1; ///< Instruction not Data bit - UINT32 Level :3; ///< Cache level (zero based) - UINT32 TnD :1; ///< Allocation not Data bit - UINT32 Reserved :27; ///< Reserved, RES0 - } Bits; ///< Bitfield definition of the register - UINT32 Data; ///< The entire 32-bit value + UINT32 InD : 1; ///< Instruction not Data bit + UINT32 Level : 3; ///< Cache level (zero based) + UINT32 TnD : 1; ///< Allocation not Data bit + UINT32 Reserved : 27; ///< Reserved, RES0 + } Bits; ///< Bitfield definition of the register + UINT32 Data; ///< The entire 32-bit value } CSSELR_DATA; /// The cache type values for the InD field of the CSSELR register -typedef enum -{ +typedef enum { /// Select the data or unified cache CsselrCacheTypeDataOrUnified = 0, /// Select the instruction cache @@ -39,35 +38,35 @@ typedef enum /// Defines the structure of the CCSIDR (Current Cache Size ID) register typedef union { struct { - UINT64 LineSize :3; ///< Line size (Log2(Num bytes in cache) - 4) - UINT64 Associativity :10; ///< Associativity - 1 - UINT64 NumSets :15; ///< Number of sets in the cache -1 - UINT64 Unknown :4; ///< Reserved, UNKNOWN - UINT64 Reserved :32; ///< Reserved, RES0 + UINT64 LineSize : 3; ///< Line size (Log2(Num bytes in cache) - 4) + UINT64 Associativity : 10; ///< Associativity - 1 + UINT64 NumSets : 15; ///< Number of sets in the cache -1 + UINT64 Unknown : 4; ///< Reserved, UNKNOWN + UINT64 Reserved : 32; ///< Reserved, RES0 } BitsNonCcidx; ///< Bitfield definition of the register when FEAT_CCIDX is not supported. struct { - UINT64 LineSize :3; ///< Line size (Log2(Num bytes in cache) - 4) - UINT64 Associativity :21; ///< Associativity - 1 - UINT64 Reserved1 :8; ///< Reserved, RES0 - UINT64 NumSets :24; ///< Number of sets in the cache -1 - UINT64 Reserved2 :8; ///< Reserved, RES0 + UINT64 LineSize : 3; ///< Line size (Log2(Num bytes in cache) - 4) + UINT64 Associativity : 21; ///< Associativity - 1 + UINT64 Reserved1 : 8; ///< Reserved, RES0 + UINT64 NumSets : 24; ///< Number of sets in the cache -1 + UINT64 Reserved2 : 8; ///< Reserved, RES0 } BitsCcidxAA64; ///< Bitfield definition of the register when FEAT_IDX is supported. struct { - UINT64 LineSize : 3; - UINT64 Associativity : 21; - UINT64 Reserved : 8; - UINT64 Unallocated : 32; + UINT64 LineSize : 3; + UINT64 Associativity : 21; + UINT64 Reserved : 8; + UINT64 Unallocated : 32; } BitsCcidxAA32; - UINT64 Data; ///< The entire 64-bit value + UINT64 Data; ///< The entire 64-bit value } CCSIDR_DATA; /// Defines the structure of the AARCH32 CCSIDR2 register. typedef union { struct { - UINT32 NumSets :24; ///< Number of sets in the cache - 1 - UINT32 Reserved :8; ///< Reserved, RES0 - } Bits; ///< Bitfield definition of the register - UINT32 Data; ///< The entire 32-bit value + UINT32 NumSets : 24; ///< Number of sets in the cache - 1 + UINT32 Reserved : 8; ///< Reserved, RES0 + } Bits; ///< Bitfield definition of the register + UINT32 Data; ///< The entire 32-bit value } CCSIDR2_DATA; /** Defines the structure of the CLIDR (Cache Level ID) register. @@ -77,19 +76,19 @@ typedef union { **/ typedef union { struct { - UINT32 Ctype1 : 3; ///< Level 1 cache type - UINT32 Ctype2 : 3; ///< Level 2 cache type - UINT32 Ctype3 : 3; ///< Level 3 cache type - UINT32 Ctype4 : 3; ///< Level 4 cache type - UINT32 Ctype5 : 3; ///< Level 5 cache type - UINT32 Ctype6 : 3; ///< Level 6 cache type - UINT32 Ctype7 : 3; ///< Level 7 cache type - UINT32 LoUIS : 3; ///< Level of Unification Inner Shareable - UINT32 LoC : 3; ///< Level of Coherency - UINT32 LoUU : 3; ///< Level of Unification Uniprocessor - UINT32 Icb : 3; ///< Inner Cache Boundary - } Bits; ///< Bitfield definition of the register - UINT32 Data; ///< The entire 32-bit value + UINT32 Ctype1 : 3; ///< Level 1 cache type + UINT32 Ctype2 : 3; ///< Level 2 cache type + UINT32 Ctype3 : 3; ///< Level 3 cache type + UINT32 Ctype4 : 3; ///< Level 4 cache type + UINT32 Ctype5 : 3; ///< Level 5 cache type + UINT32 Ctype6 : 3; ///< Level 6 cache type + UINT32 Ctype7 : 3; ///< Level 7 cache type + UINT32 LoUIS : 3; ///< Level of Unification Inner Shareable + UINT32 LoC : 3; ///< Level of Coherency + UINT32 LoUU : 3; ///< Level of Unification Uniprocessor + UINT32 Icb : 3; ///< Inner Cache Boundary + } Bits; ///< Bitfield definition of the register + UINT32 Data; ///< The entire 32-bit value } CLIDR_DATA; /// The cache types reported in the CLIDR register. @@ -107,6 +106,6 @@ typedef enum { ClidrCacheTypeMax } CLIDR_CACHE_TYPE; -#define CLIDR_GET_CACHE_TYPE(x, level) ((x >> (3 * (level))) & 0b111) +#define CLIDR_GET_CACHE_TYPE(x, level) ((x >> (3 * (level))) & 0b111) #endif /* ARM_CACHE_H_ */