3 Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
4 Copyright (c) 2014, ARM Limited. All rights reserved.
6 This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
16 #include <Library/ArmLib.h>
17 #include "ArmLibPrivate.h"
25 switch (CACHE_TYPE (ArmCacheInfo ()))
27 case CACHE_TYPE_WRITE_BACK
: return ARM_CACHE_TYPE_WRITE_BACK
;
28 default: return ARM_CACHE_TYPE_UNKNOWN
;
32 ARM_CACHE_ARCHITECTURE
34 ArmCacheArchitecture (
38 switch (CACHE_ARCHITECTURE (ArmCacheInfo ()))
40 case CACHE_ARCHITECTURE_UNIFIED
: return ARM_CACHE_ARCHITECTURE_UNIFIED
;
41 case CACHE_ARCHITECTURE_SEPARATE
: return ARM_CACHE_ARCHITECTURE_SEPARATE
;
42 default: return ARM_CACHE_ARCHITECTURE_UNKNOWN
;
52 switch (DATA_CACHE_PRESENT (ArmCacheInfo ()))
54 case CACHE_PRESENT
: return TRUE
;
55 case CACHE_NOT_PRESENT
: return FALSE
;
56 default: return FALSE
;
66 switch (DATA_CACHE_SIZE (ArmCacheInfo ()))
68 case CACHE_SIZE_4_KB
: return 4 * 1024;
69 case CACHE_SIZE_8_KB
: return 8 * 1024;
70 case CACHE_SIZE_16_KB
: return 16 * 1024;
71 case CACHE_SIZE_32_KB
: return 32 * 1024;
72 case CACHE_SIZE_64_KB
: return 64 * 1024;
73 case CACHE_SIZE_128_KB
: return 128 * 1024;
80 ArmDataCacheAssociativity (
84 switch (DATA_CACHE_ASSOCIATIVITY (ArmCacheInfo ()))
86 case CACHE_ASSOCIATIVITY_4_WAY
: return 4;
87 case CACHE_ASSOCIATIVITY_DIRECT
: return 1;
94 ArmDataCacheLineLength (
98 switch (DATA_CACHE_LINE_LENGTH (ArmCacheInfo ()))
100 case CACHE_LINE_LENGTH_32_BYTES
: return 32;
107 ArmInstructionCachePresent (
111 switch (INSTRUCTION_CACHE_PRESENT (ArmCacheInfo ()))
113 case CACHE_PRESENT
: return TRUE
;
114 case CACHE_NOT_PRESENT
: return FALSE
;
115 default: return FALSE
;
121 ArmInstructionCacheSize (
125 switch (INSTRUCTION_CACHE_SIZE (ArmCacheInfo ()))
127 case CACHE_SIZE_4_KB
: return 4 * 1024;
128 case CACHE_SIZE_8_KB
: return 8 * 1024;
129 case CACHE_SIZE_16_KB
: return 16 * 1024;
130 case CACHE_SIZE_32_KB
: return 32 * 1024;
131 case CACHE_SIZE_64_KB
: return 64 * 1024;
132 case CACHE_SIZE_128_KB
: return 128 * 1024;
139 ArmInstructionCacheAssociativity (
143 switch (INSTRUCTION_CACHE_ASSOCIATIVITY (ArmCacheInfo ()))
145 case CACHE_ASSOCIATIVITY_8_WAY
: return 8;
146 case CACHE_ASSOCIATIVITY_4_WAY
: return 4;
147 case CACHE_ASSOCIATIVITY_DIRECT
: return 1;
154 ArmInstructionCacheLineLength (
158 switch (INSTRUCTION_CACHE_LINE_LENGTH (ArmCacheInfo ()))
160 case CACHE_LINE_LENGTH_32_BYTES
: return 32;