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