]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPkg/Library/ArmLib/Arm9/Arm9CacheInformation.c
ArmPkg/ArmLib: Renamed Cp15CacheInfo into ArmCacheInfo
[mirror_edk2.git] / ArmPkg / Library / ArmLib / Arm9 / Arm9CacheInformation.c
CommitLineData
2ef2b01e
A
1/** @file\r
2\r
d6ebcab7 3 Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
64751727
OM
4 Copyright (c) 2014, ARM Limited. All rights reserved.\r
5\r
d6ebcab7 6 This program and the accompanying materials\r
2ef2b01e
A
7 are licensed and made available under the terms and conditions of the BSD License\r
8 which accompanies this distribution. The full text of the license may be found at\r
9 http://opensource.org/licenses/bsd-license.php\r
10\r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13\r
14**/\r
15\r
16#include <Library/ArmLib.h>\r
17#include "ArmLibPrivate.h"\r
18\r
19ARM_CACHE_TYPE\r
20EFIAPI\r
21ArmCacheType (\r
22 VOID\r
23 )\r
24{\r
64751727 25 switch (CACHE_TYPE (ArmCacheInfo ()))\r
2ef2b01e
A
26 {\r
27 case CACHE_TYPE_WRITE_BACK: return ARM_CACHE_TYPE_WRITE_BACK;\r
28 default: return ARM_CACHE_TYPE_UNKNOWN;\r
29 }\r
30}\r
31\r
32ARM_CACHE_ARCHITECTURE\r
33EFIAPI\r
34ArmCacheArchitecture (\r
35 VOID\r
36 )\r
37{\r
64751727 38 switch (CACHE_ARCHITECTURE (ArmCacheInfo ()))\r
2ef2b01e
A
39 {\r
40 case CACHE_ARCHITECTURE_UNIFIED: return ARM_CACHE_ARCHITECTURE_UNIFIED;\r
41 case CACHE_ARCHITECTURE_SEPARATE: return ARM_CACHE_ARCHITECTURE_SEPARATE;\r
42 default: return ARM_CACHE_ARCHITECTURE_UNKNOWN;\r
43 }\r
44}\r
45\r
46BOOLEAN\r
47EFIAPI\r
48ArmDataCachePresent (\r
49 VOID\r
50 )\r
51{\r
64751727 52 switch (DATA_CACHE_PRESENT (ArmCacheInfo ()))\r
2ef2b01e
A
53 {\r
54 case CACHE_PRESENT: return TRUE;\r
55 case CACHE_NOT_PRESENT: return FALSE;\r
56 default: return FALSE;\r
57 }\r
58}\r
59 \r
60UINTN\r
61EFIAPI\r
62ArmDataCacheSize (\r
63 VOID\r
64 )\r
65{\r
64751727 66 switch (DATA_CACHE_SIZE (ArmCacheInfo ()))\r
2ef2b01e
A
67 {\r
68 case CACHE_SIZE_4_KB: return 4 * 1024; \r
69 case CACHE_SIZE_8_KB: return 8 * 1024;\r
70 case CACHE_SIZE_16_KB: return 16 * 1024; \r
71 case CACHE_SIZE_32_KB: return 32 * 1024;\r
72 case CACHE_SIZE_64_KB: return 64 * 1024;\r
73 case CACHE_SIZE_128_KB: return 128 * 1024;\r
74 default: return 0;\r
75 }\r
76}\r
77 \r
78UINTN\r
79EFIAPI\r
80ArmDataCacheAssociativity (\r
81 VOID\r
82 )\r
83{\r
64751727 84 switch (DATA_CACHE_ASSOCIATIVITY (ArmCacheInfo ()))\r
2ef2b01e
A
85 {\r
86 case CACHE_ASSOCIATIVITY_4_WAY: return 4;\r
87 case CACHE_ASSOCIATIVITY_DIRECT: return 1;\r
88 default: return 0;\r
89 }\r
90}\r
91 \r
92UINTN\r
93EFIAPI\r
94ArmDataCacheLineLength (\r
95 VOID\r
96 )\r
97{\r
64751727 98 switch (DATA_CACHE_LINE_LENGTH (ArmCacheInfo ()))\r
2ef2b01e
A
99 {\r
100 case CACHE_LINE_LENGTH_32_BYTES: return 32;\r
101 default: return 0;\r
102 }\r
103}\r
104 \r
105BOOLEAN\r
106EFIAPI\r
107ArmInstructionCachePresent (\r
108 VOID\r
109 )\r
110{\r
64751727 111 switch (INSTRUCTION_CACHE_PRESENT (ArmCacheInfo ()))\r
2ef2b01e
A
112 {\r
113 case CACHE_PRESENT: return TRUE;\r
114 case CACHE_NOT_PRESENT: return FALSE;\r
115 default: return FALSE;\r
116 }\r
117}\r
118 \r
119UINTN\r
120EFIAPI\r
121ArmInstructionCacheSize (\r
122 VOID\r
123 )\r
124{\r
64751727 125 switch (INSTRUCTION_CACHE_SIZE (ArmCacheInfo ()))\r
2ef2b01e
A
126 {\r
127 case CACHE_SIZE_4_KB: return 4 * 1024; \r
128 case CACHE_SIZE_8_KB: return 8 * 1024;\r
129 case CACHE_SIZE_16_KB: return 16 * 1024; \r
130 case CACHE_SIZE_32_KB: return 32 * 1024;\r
131 case CACHE_SIZE_64_KB: return 64 * 1024;\r
132 case CACHE_SIZE_128_KB: return 128 * 1024;\r
133 default: return 0;\r
134 }\r
135}\r
136 \r
137UINTN\r
138EFIAPI\r
139ArmInstructionCacheAssociativity (\r
140 VOID\r
141 )\r
142{\r
64751727 143 switch (INSTRUCTION_CACHE_ASSOCIATIVITY (ArmCacheInfo ()))\r
2ef2b01e
A
144 {\r
145 case CACHE_ASSOCIATIVITY_8_WAY: return 8;\r
146 case CACHE_ASSOCIATIVITY_4_WAY: return 4;\r
147 case CACHE_ASSOCIATIVITY_DIRECT: return 1;\r
148 default: return 0;\r
149 }\r
150}\r
151 \r
152UINTN\r
153EFIAPI\r
154ArmInstructionCacheLineLength (\r
155 VOID\r
156 )\r
157{\r
64751727 158 switch (INSTRUCTION_CACHE_LINE_LENGTH (ArmCacheInfo ()))\r
2ef2b01e
A
159 {\r
160 case CACHE_LINE_LENGTH_32_BYTES: return 32;\r
161 default: return 0;\r
162 }\r
163}\r
164\r
165\r