3 Copyright (c) 2008-2009, Apple Inc. All rights reserved.
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
15 #include <Library/ArmLib.h>
16 #include "ArmLibPrivate.h"
24 switch (CACHE_TYPE(Cp15CacheInfo()))
26 case CACHE_TYPE_WRITE_BACK
: return ARM_CACHE_TYPE_WRITE_BACK
;
27 default: return ARM_CACHE_TYPE_UNKNOWN
;
31 ARM_CACHE_ARCHITECTURE
33 ArmCacheArchitecture (
37 switch (CACHE_ARCHITECTURE(Cp15CacheInfo()))
39 case CACHE_ARCHITECTURE_UNIFIED
: return ARM_CACHE_ARCHITECTURE_UNIFIED
;
40 case CACHE_ARCHITECTURE_SEPARATE
: return ARM_CACHE_ARCHITECTURE_SEPARATE
;
41 default: return ARM_CACHE_ARCHITECTURE_UNKNOWN
;
51 switch (DATA_CACHE_PRESENT(Cp15CacheInfo()))
53 case CACHE_PRESENT
: return TRUE
;
54 case CACHE_NOT_PRESENT
: return FALSE
;
55 default: return FALSE
;
65 switch (DATA_CACHE_SIZE(Cp15CacheInfo()))
67 case CACHE_SIZE_4_KB
: return 4 * 1024;
68 case CACHE_SIZE_8_KB
: return 8 * 1024;
69 case CACHE_SIZE_16_KB
: return 16 * 1024;
70 case CACHE_SIZE_32_KB
: return 32 * 1024;
71 case CACHE_SIZE_64_KB
: return 64 * 1024;
72 case CACHE_SIZE_128_KB
: return 128 * 1024;
79 ArmDataCacheAssociativity (
83 switch (DATA_CACHE_ASSOCIATIVITY(Cp15CacheInfo()))
85 case CACHE_ASSOCIATIVITY_4_WAY
: return 4;
86 case CACHE_ASSOCIATIVITY_DIRECT
: return 1;
93 ArmDataCacheLineLength (
97 switch (DATA_CACHE_LINE_LENGTH(Cp15CacheInfo()))
99 case CACHE_LINE_LENGTH_32_BYTES
: return 32;
106 ArmInstructionCachePresent (
110 switch (INSTRUCTION_CACHE_PRESENT(Cp15CacheInfo()))
112 case CACHE_PRESENT
: return TRUE
;
113 case CACHE_NOT_PRESENT
: return FALSE
;
114 default: return FALSE
;
120 ArmInstructionCacheSize (
124 switch (INSTRUCTION_CACHE_SIZE(Cp15CacheInfo()))
126 case CACHE_SIZE_4_KB
: return 4 * 1024;
127 case CACHE_SIZE_8_KB
: return 8 * 1024;
128 case CACHE_SIZE_16_KB
: return 16 * 1024;
129 case CACHE_SIZE_32_KB
: return 32 * 1024;
130 case CACHE_SIZE_64_KB
: return 64 * 1024;
131 case CACHE_SIZE_128_KB
: return 128 * 1024;
138 ArmInstructionCacheAssociativity (
142 switch (INSTRUCTION_CACHE_ASSOCIATIVITY(Cp15CacheInfo()))
144 case CACHE_ASSOCIATIVITY_8_WAY
: return 8;
145 case CACHE_ASSOCIATIVITY_4_WAY
: return 4;
146 case CACHE_ASSOCIATIVITY_DIRECT
: return 1;
153 ArmInstructionCacheLineLength (
157 switch (INSTRUCTION_CACHE_LINE_LENGTH(Cp15CacheInfo()))
159 case CACHE_LINE_LENGTH_32_BYTES
: return 32;