]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPkg/Include/Library/ArmLib.h
Sync up ArmPkg with patch from mailing list. Changed name of BdsLib.h to BdsUnixLib...
[mirror_edk2.git] / ArmPkg / Include / Library / ArmLib.h
CommitLineData
2ef2b01e
A
1/** @file
2
d6ebcab7 3 Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
2ef2b01e 4
d6ebcab7 5 This program and the accompanying materials
2ef2b01e
A
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#ifndef __ARM_LIB__
16#define __ARM_LIB__
17
18typedef enum {
19 ARM_CACHE_TYPE_WRITE_BACK,
20 ARM_CACHE_TYPE_UNKNOWN
21} ARM_CACHE_TYPE;
22
23typedef enum {
24 ARM_CACHE_ARCHITECTURE_UNIFIED,
25 ARM_CACHE_ARCHITECTURE_SEPARATE,
26 ARM_CACHE_ARCHITECTURE_UNKNOWN
27} ARM_CACHE_ARCHITECTURE;
28
29typedef struct {
30 ARM_CACHE_TYPE Type;
31 ARM_CACHE_ARCHITECTURE Architecture;
32 BOOLEAN DataCachePresent;
33 UINTN DataCacheSize;
34 UINTN DataCacheAssociativity;
35 UINTN DataCacheLineLength;
36 BOOLEAN InstructionCachePresent;
37 UINTN InstructionCacheSize;
38 UINTN InstructionCacheAssociativity;
39 UINTN InstructionCacheLineLength;
40} ARM_CACHE_INFO;
41
42typedef enum {
43 ARM_MEMORY_REGION_ATTRIBUTE_UNCACHED_UNBUFFERED,
44 ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK,
45 ARM_MEMORY_REGION_ATTRIBUTE_WRITE_THROUGH,
1bfda055 46 ARM_MEMORY_REGION_ATTRIBUTE_DEVICE,
47 ARM_MEMORY_REGION_ATTRIBUTE_SECURE_UNCACHED_UNBUFFERED,
48 ARM_MEMORY_REGION_ATTRIBUTE_SECURE_WRITE_BACK,
49 ARM_MEMORY_REGION_ATTRIBUTE_SECURE_WRITE_THROUGH,
50 ARM_MEMORY_REGION_ATTRIBUTE_SECURE_DEVICE
2ef2b01e
A
51} ARM_MEMORY_REGION_ATTRIBUTES;
52
53typedef struct {
54 UINT32 PhysicalBase;
55 UINT32 VirtualBase;
56 UINT32 Length;
57 ARM_MEMORY_REGION_ATTRIBUTES Attributes;
58} ARM_MEMORY_REGION_DESCRIPTOR;
59
60typedef VOID (*CACHE_OPERATION)(VOID);
61typedef VOID (*LINE_OPERATION)(UINTN);
62
63typedef enum {
64 ARM_PROCESSOR_MODE_USER = 0x10,
65 ARM_PROCESSOR_MODE_FIQ = 0x11,
66 ARM_PROCESSOR_MODE_IRQ = 0x12,
67 ARM_PROCESSOR_MODE_SUPERVISOR = 0x13,
68 ARM_PROCESSOR_MODE_ABORT = 0x17,
69 ARM_PROCESSOR_MODE_UNDEFINED = 0x1B,
70 ARM_PROCESSOR_MODE_SYSTEM = 0x1F,
71 ARM_PROCESSOR_MODE_MASK = 0x1F
72} ARM_PROCESSOR_MODE;
73
74ARM_CACHE_TYPE
75EFIAPI
76ArmCacheType (
77 VOID
78 );
79
80ARM_CACHE_ARCHITECTURE
81EFIAPI
82ArmCacheArchitecture (
83 VOID
84 );
85
86VOID
87EFIAPI
88ArmCacheInformation (
89 OUT ARM_CACHE_INFO *CacheInfo
90 );
91
92BOOLEAN
93EFIAPI
94ArmDataCachePresent (
95 VOID
96 );
97
98UINTN
99EFIAPI
100ArmDataCacheSize (
101 VOID
102 );
103
104UINTN
105EFIAPI
106ArmDataCacheAssociativity (
107 VOID
108 );
109
110UINTN
111EFIAPI
112ArmDataCacheLineLength (
113 VOID
114 );
115
116BOOLEAN
117EFIAPI
118ArmInstructionCachePresent (
119 VOID
120 );
121
122UINTN
123EFIAPI
124ArmInstructionCacheSize (
125 VOID
126 );
127
128UINTN
129EFIAPI
130ArmInstructionCacheAssociativity (
131 VOID
132 );
133
134UINTN
135EFIAPI
136ArmInstructionCacheLineLength (
137 VOID
138 );
139
140UINT32
141EFIAPI
142Cp15IdCode (
143 VOID
144 );
145
146UINT32
147EFIAPI
148Cp15CacheInfo (
149 VOID
150 );
151
1bfda055 152BOOLEAN
153EFIAPI
154ArmIsMPCore (
155 VOID
156 );
157
2ef2b01e
A
158VOID
159EFIAPI
160ArmInvalidateDataCache (
161 VOID
162 );
163
f45ce9d9 164
2ef2b01e
A
165VOID
166EFIAPI
167ArmCleanInvalidateDataCache (
168 VOID
169 );
170
171VOID
172EFIAPI
173ArmCleanDataCache (
174 VOID
175 );
176
177VOID
178EFIAPI
179ArmInvalidateInstructionCache (
180 VOID
181 );
182
183VOID
184EFIAPI
185ArmInvalidateDataCacheEntryByMVA (
186 IN UINTN Address
187 );
188
189VOID
190EFIAPI
191ArmCleanDataCacheEntryByMVA (
192 IN UINTN Address
193 );
194
195VOID
196EFIAPI
197ArmCleanInvalidateDataCacheEntryByMVA (
198 IN UINTN Address
199 );
200
201VOID
202EFIAPI
203ArmEnableDataCache (
204 VOID
205 );
206
207VOID
208EFIAPI
209ArmDisableDataCache (
210 VOID
211 );
212
213VOID
214EFIAPI
215ArmEnableInstructionCache (
216 VOID
217 );
218
219VOID
220EFIAPI
221ArmDisableInstructionCache (
222 VOID
223 );
224
225VOID
226EFIAPI
227ArmEnableMmu (
228 VOID
229 );
230
231VOID
232EFIAPI
233ArmDisableMmu (
234 VOID
235 );
236
1bfda055 237VOID
238EFIAPI
239ArmDisableCachesAndMmu (
240 VOID
241 );
242
2ef2b01e
A
243VOID
244EFIAPI
245ArmEnableInterrupts (
246 VOID
247 );
248
249UINTN
250EFIAPI
251ArmDisableInterrupts (
252 VOID
253 );
254
255BOOLEAN
256EFIAPI
257ArmGetInterruptState (
258 VOID
259 );
1bfda055 260
0416278c 261VOID
262EFIAPI
263ArmEnableFiq (
264 VOID
265 );
266
267UINTN
268EFIAPI
269ArmDisableFiq (
270 VOID
271 );
272
273BOOLEAN
274EFIAPI
275ArmGetFiqState (
276 VOID
277 );
2ef2b01e
A
278
279VOID
280EFIAPI
281ArmInvalidateTlb (
282 VOID
283 );
284
6f72e28d 285VOID
286EFIAPI
287ArmUpdateTranslationTableEntry (
bb02cb80 288 IN VOID *TranslationTableEntry,
289 IN VOID *Mva
6f72e28d 290 );
291
2ef2b01e
A
292VOID
293EFIAPI
294ArmSetDomainAccessControl (
295 IN UINT32 Domain
296 );
297
298VOID
299EFIAPI
1bfda055 300ArmSetTTBR0 (
2ef2b01e
A
301 IN VOID *TranslationTableBase
302 );
303
f45ce9d9
A
304VOID *
305EFIAPI
1bfda055 306ArmGetTTBR0BaseAddress (
f659880b 307 VOID
f45ce9d9
A
308 );
309
2ef2b01e
A
310VOID
311EFIAPI
312ArmConfigureMmu (
313 IN ARM_MEMORY_REGION_DESCRIPTOR *MemoryTable,
314 OUT VOID **TranslationTableBase OPTIONAL,
315 OUT UINTN *TranslationTableSize OPTIONAL
316 );
317
f45ce9d9
A
318BOOLEAN
319EFIAPI
320ArmMmuEnabled (
321 VOID
322 );
323
2ef2b01e
A
324VOID
325EFIAPI
326ArmSwitchProcessorMode (
327 IN ARM_PROCESSOR_MODE Mode
328 );
329
330ARM_PROCESSOR_MODE
331EFIAPI
332ArmProcessorMode (
333 VOID
334 );
335
336VOID
337EFIAPI
338ArmEnableBranchPrediction (
339 VOID
340 );
341
342VOID
343EFIAPI
344ArmDisableBranchPrediction (
345 VOID
346 );
026c3d34 347
348VOID
349EFIAPI
350ArmDataMemoryBarrier (
351 VOID
352 );
353
354VOID
355EFIAPI
356ArmDataSyncronizationBarrier (
357 VOID
358 );
359
360VOID
361EFIAPI
362ArmInstructionSynchronizationBarrier (
363 VOID
364 );
365
bb02cb80 366
2ef2b01e 367#endif // __ARM_LIB__