]> git.proxmox.com Git - mirror_edk2.git/blob - ArmPkg/Library/ArmLib/Arm9/Arm9CacheInformation.c
ArmPkg/ArmLib: Renamed Cp15CacheInfo into ArmCacheInfo
[mirror_edk2.git] / ArmPkg / Library / ArmLib / Arm9 / Arm9CacheInformation.c
1 /** @file
2
3 Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
4 Copyright (c) 2014, ARM Limited. All rights reserved.
5
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
10
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.
13
14 **/
15
16 #include <Library/ArmLib.h>
17 #include "ArmLibPrivate.h"
18
19 ARM_CACHE_TYPE
20 EFIAPI
21 ArmCacheType (
22 VOID
23 )
24 {
25 switch (CACHE_TYPE (ArmCacheInfo ()))
26 {
27 case CACHE_TYPE_WRITE_BACK: return ARM_CACHE_TYPE_WRITE_BACK;
28 default: return ARM_CACHE_TYPE_UNKNOWN;
29 }
30 }
31
32 ARM_CACHE_ARCHITECTURE
33 EFIAPI
34 ArmCacheArchitecture (
35 VOID
36 )
37 {
38 switch (CACHE_ARCHITECTURE (ArmCacheInfo ()))
39 {
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;
43 }
44 }
45
46 BOOLEAN
47 EFIAPI
48 ArmDataCachePresent (
49 VOID
50 )
51 {
52 switch (DATA_CACHE_PRESENT (ArmCacheInfo ()))
53 {
54 case CACHE_PRESENT: return TRUE;
55 case CACHE_NOT_PRESENT: return FALSE;
56 default: return FALSE;
57 }
58 }
59
60 UINTN
61 EFIAPI
62 ArmDataCacheSize (
63 VOID
64 )
65 {
66 switch (DATA_CACHE_SIZE (ArmCacheInfo ()))
67 {
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;
74 default: return 0;
75 }
76 }
77
78 UINTN
79 EFIAPI
80 ArmDataCacheAssociativity (
81 VOID
82 )
83 {
84 switch (DATA_CACHE_ASSOCIATIVITY (ArmCacheInfo ()))
85 {
86 case CACHE_ASSOCIATIVITY_4_WAY: return 4;
87 case CACHE_ASSOCIATIVITY_DIRECT: return 1;
88 default: return 0;
89 }
90 }
91
92 UINTN
93 EFIAPI
94 ArmDataCacheLineLength (
95 VOID
96 )
97 {
98 switch (DATA_CACHE_LINE_LENGTH (ArmCacheInfo ()))
99 {
100 case CACHE_LINE_LENGTH_32_BYTES: return 32;
101 default: return 0;
102 }
103 }
104
105 BOOLEAN
106 EFIAPI
107 ArmInstructionCachePresent (
108 VOID
109 )
110 {
111 switch (INSTRUCTION_CACHE_PRESENT (ArmCacheInfo ()))
112 {
113 case CACHE_PRESENT: return TRUE;
114 case CACHE_NOT_PRESENT: return FALSE;
115 default: return FALSE;
116 }
117 }
118
119 UINTN
120 EFIAPI
121 ArmInstructionCacheSize (
122 VOID
123 )
124 {
125 switch (INSTRUCTION_CACHE_SIZE (ArmCacheInfo ()))
126 {
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;
133 default: return 0;
134 }
135 }
136
137 UINTN
138 EFIAPI
139 ArmInstructionCacheAssociativity (
140 VOID
141 )
142 {
143 switch (INSTRUCTION_CACHE_ASSOCIATIVITY (ArmCacheInfo ()))
144 {
145 case CACHE_ASSOCIATIVITY_8_WAY: return 8;
146 case CACHE_ASSOCIATIVITY_4_WAY: return 4;
147 case CACHE_ASSOCIATIVITY_DIRECT: return 1;
148 default: return 0;
149 }
150 }
151
152 UINTN
153 EFIAPI
154 ArmInstructionCacheLineLength (
155 VOID
156 )
157 {
158 switch (INSTRUCTION_CACHE_LINE_LENGTH (ArmCacheInfo ()))
159 {
160 case CACHE_LINE_LENGTH_32_BYTES: return 32;
161 default: return 0;
162 }
163 }
164
165