]> git.proxmox.com Git - mirror_edk2.git/blob - ArmPkg/Include/Chipset/ArmV7.h
ArmPkg/ArmV7: Fix TT_DESCRIPTOR_LARGEPAGE_CACHE_POLICY_MASK mask
[mirror_edk2.git] / ArmPkg / Include / Chipset / ArmV7.h
1 /** @file
2
3 Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
4
5 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 #ifndef __ARM_V7_H__
16 #define __ARM_V7_H__
17
18 // Domain Access Control Register
19 #define DOMAIN_ACCESS_CONTROL_MASK(a) (3UL << (2 * (a)))
20 #define DOMAIN_ACCESS_CONTROL_NONE(a) (0UL << (2 * (a)))
21 #define DOMAIN_ACCESS_CONTROL_CLIENT(a) (1UL << (2 * (a)))
22 #define DOMAIN_ACCESS_CONTROL_RESERVED(a) (2UL << (2 * (a)))
23 #define DOMAIN_ACCESS_CONTROL_MANAGER(a) (3UL << (2 * (a)))
24
25 #define TTBR_NOT_OUTER_SHAREABLE BIT5
26 #define TTBR_RGN_OUTER_NON_CACHEABLE 0
27 #define TTBR_RGN_OUTER_WRITE_BACK_ALLOC BIT3
28 #define TTBR_RGN_OUTER_WRITE_THROUGH BIT4
29 #define TTBR_RGN_OUTER_WRITE_BACK_NO_ALLOC (BIT3|BIT4)
30 #define TTBR_SHAREABLE BIT1
31 #define TTBR_NON_SHAREABLE 0
32 #define TTBR_INNER_CACHEABLE BIT0
33 #define TTBR_NON_INNER_CACHEABLE BIT0
34 #define TTBR_RGN_INNER_NON_CACHEABLE 0
35 #define TTBR_RGN_INNER_WRITE_BACK_ALLOC BIT6
36 #define TTBR_RGN_INNER_WRITE_THROUGH BIT0
37 #define TTBR_RGN_INNER_WRITE_BACK_NO_ALLOC (BIT0|BIT6)
38
39 #define TTBR_WRITE_THROUGH_NO_ALLOC ( TTBR_RGN_OUTER_WRITE_BACK_ALLOC | TTBR_RGN_INNER_WRITE_BACK_ALLOC )
40 #define TTBR_WRITE_BACK_NO_ALLOC ( TTBR_RGN_OUTER_WRITE_BACK_NO_ALLOC | TTBR_RGN_INNER_WRITE_BACK_NO_ALLOC )
41 #define TTBR_NON_CACHEABLE ( TTBR_RGN_OUTER_NON_CACHEABLE | TTBR_RGN_INNER_NON_CACHEABLE )
42 #define TTBR_WRITE_BACK_ALLOC ( TTBR_RGN_OUTER_WRITE_BACK_ALLOC | TTBR_RGN_INNER_WRITE_BACK_ALLOC )
43
44
45 #define TRANSLATION_TABLE_SECTION_COUNT 4096
46 #define TRANSLATION_TABLE_SECTION_SIZE (sizeof(UINT32) * TRANSLATION_TABLE_SECTION_COUNT)
47 #define TRANSLATION_TABLE_SECTION_ALIGNMENT (sizeof(UINT32) * TRANSLATION_TABLE_SECTION_COUNT)
48 #define TRANSLATION_TABLE_SECTION_ALIGNMENT_MASK (TRANSLATION_TABLE_SECTION_ALIGNMENT - 1)
49
50 #define TRANSLATION_TABLE_PAGE_COUNT 256
51 #define TRANSLATION_TABLE_PAGE_SIZE (sizeof(UINT32) * TRANSLATION_TABLE_PAGE_COUNT)
52 #define TRANSLATION_TABLE_PAGE_ALIGNMENT (sizeof(UINT32) * TRANSLATION_TABLE_PAGE_COUNT)
53 #define TRANSLATION_TABLE_PAGE_ALIGNMENT_MASK (TRANSLATION_TABLE_PAGE_ALIGNMENT - 1)
54
55 #define TRANSLATION_TABLE_ENTRY_FOR_VIRTUAL_ADDRESS(table, address) ((UINT32 *)(table) + (((UINTN)(address)) >> 20))
56
57 // Translation table descriptor types
58 #define TT_DESCRIPTOR_SECTION_TYPE_MASK ((1UL << 18) | (3UL << 0))
59 #define TT_DESCRIPTOR_SECTION_TYPE_FAULT (0UL << 0)
60 #define TT_DESCRIPTOR_SECTION_TYPE_PAGE_TABLE (1UL << 0)
61 #define TT_DESCRIPTOR_SECTION_TYPE_SECTION ((0UL << 18) | (2UL << 0))
62 #define TT_DESCRIPTOR_SECTION_TYPE_SUPERSECTION ((1UL << 18) | (2UL << 0))
63 #define TT_DESCRIPTOR_SECTION_TYPE_IS_PAGE_TABLE(Desc) (((Desc) & 3UL) == TT_DESCRIPTOR_SECTION_TYPE_PAGE_TABLE)
64
65 // Translation table descriptor types
66 #define TT_DESCRIPTOR_PAGE_TYPE_MASK (3UL << 0)
67 #define TT_DESCRIPTOR_PAGE_TYPE_FAULT (0UL << 0)
68 #define TT_DESCRIPTOR_PAGE_TYPE_PAGE (2UL << 0)
69 #define TT_DESCRIPTOR_PAGE_TYPE_PAGE_XN (3UL << 0)
70 #define TT_DESCRIPTOR_PAGE_TYPE_LARGEPAGE (1UL << 0)
71
72 // Section descriptor definitions
73 #define TT_DESCRIPTOR_SECTION_SIZE (0x00100000)
74
75 #define TT_DESCRIPTOR_SECTION_NS_MASK (1UL << 19)
76 #define TT_DESCRIPTOR_SECTION_NS_SECURE (0UL << 19)
77 #define TT_DESCRIPTOR_SECTION_NS_NON_SECURE (1UL << 19)
78
79 #define TT_DESCRIPTOR_SECTION_NG_MASK (1UL << 17)
80 #define TT_DESCRIPTOR_SECTION_NG_GLOBAL (0UL << 17)
81 #define TT_DESCRIPTOR_SECTION_NG_LOCAL (1UL << 17)
82
83 #define TT_DESCRIPTOR_PAGE_NG_MASK (1UL << 11)
84 #define TT_DESCRIPTOR_PAGE_NG_GLOBAL (0UL << 11)
85 #define TT_DESCRIPTOR_PAGE_NG_LOCAL (1UL << 11)
86
87 #define TT_DESCRIPTOR_SECTION_S_MASK (1UL << 16)
88 #define TT_DESCRIPTOR_SECTION_S_NOT_SHARED (0UL << 16)
89 #define TT_DESCRIPTOR_SECTION_S_SHARED (1UL << 16)
90
91 #define TT_DESCRIPTOR_PAGE_S_MASK (1UL << 10)
92 #define TT_DESCRIPTOR_PAGE_S_NOT_SHARED (0UL << 10)
93 #define TT_DESCRIPTOR_PAGE_S_SHARED (1UL << 10)
94
95 #define TT_DESCRIPTOR_SECTION_AP_MASK ((1UL << 15) | (3UL << 10))
96 #define TT_DESCRIPTOR_SECTION_AP_NO_NO ((0UL << 15) | (0UL << 10))
97 #define TT_DESCRIPTOR_SECTION_AP_RW_NO ((0UL << 15) | (1UL << 10))
98 #define TT_DESCRIPTOR_SECTION_AP_RW_RO ((0UL << 15) | (2UL << 10))
99 #define TT_DESCRIPTOR_SECTION_AP_RW_RW ((0UL << 15) | (3UL << 10))
100 #define TT_DESCRIPTOR_SECTION_AP_RO_NO ((1UL << 15) | (1UL << 10))
101 #define TT_DESCRIPTOR_SECTION_AP_RO_RO ((1UL << 15) | (3UL << 10))
102
103 #define TT_DESCRIPTOR_PAGE_AP_MASK ((1UL << 9) | (3UL << 4))
104 #define TT_DESCRIPTOR_PAGE_AP_NO_NO ((0UL << 9) | (0UL << 4))
105 #define TT_DESCRIPTOR_PAGE_AP_RW_NO ((0UL << 9) | (1UL << 4))
106 #define TT_DESCRIPTOR_PAGE_AP_RW_RO ((0UL << 9) | (2UL << 4))
107 #define TT_DESCRIPTOR_PAGE_AP_RW_RW ((0UL << 9) | (3UL << 4))
108 #define TT_DESCRIPTOR_PAGE_AP_RO_NO ((1UL << 9) | (1UL << 4))
109 #define TT_DESCRIPTOR_PAGE_AP_RO_RO ((1UL << 9) | (3UL << 4))
110
111 #define TT_DESCRIPTOR_SECTION_XN_MASK (0x1UL << 4)
112 #define TT_DESCRIPTOR_PAGE_XN_MASK (0x1UL << 0)
113 #define TT_DESCRIPTOR_LARGEPAGE_XN_MASK (0x1UL << 15)
114
115 #define TT_DESCRIPTOR_SECTION_CACHE_POLICY_MASK ((3UL << 12) | (1UL << 3) | (1UL << 2))
116 #define TT_DESCRIPTOR_SECTION_CACHEABLE_MASK (1UL << 3)
117 #define TT_DESCRIPTOR_SECTION_CACHE_POLICY_STRONGLY_ORDERED ((0UL << 12) | (0UL << 3) | (0UL << 2))
118 #define TT_DESCRIPTOR_SECTION_CACHE_POLICY_SHAREABLE_DEVICE ((0UL << 12) | (0UL << 3) | (1UL << 2))
119 #define TT_DESCRIPTOR_SECTION_CACHE_POLICY_WRITE_THROUGH_NO_ALLOC ((0UL << 12) | (1UL << 3) | (0UL << 2))
120 #define TT_DESCRIPTOR_SECTION_CACHE_POLICY_WRITE_BACK_NO_ALLOC ((0UL << 12) | (1UL << 3) | (1UL << 2))
121 #define TT_DESCRIPTOR_SECTION_CACHE_POLICY_NON_CACHEABLE ((1UL << 12) | (0UL << 3) | (0UL << 2))
122 #define TT_DESCRIPTOR_SECTION_CACHE_POLICY_WRITE_BACK_ALLOC ((1UL << 12) | (1UL << 3) | (1UL << 2))
123 #define TT_DESCRIPTOR_SECTION_CACHE_POLICY_NON_SHAREABLE_DEVICE ((2UL << 12) | (0UL << 3) | (0UL << 2))
124
125 #define TT_DESCRIPTOR_PAGE_SIZE (0x00001000)
126
127 #define TT_DESCRIPTOR_PAGE_CACHE_POLICY_MASK ((3UL << 6) | (1UL << 3) | (1UL << 2))
128 #define TT_DESCRIPTOR_PAGE_CACHEABLE_MASK (1UL << 3)
129 #define TT_DESCRIPTOR_PAGE_CACHE_POLICY_STRONGLY_ORDERED ((0UL << 6) | (0UL << 3) | (0UL << 2))
130 #define TT_DESCRIPTOR_PAGE_CACHE_POLICY_SHAREABLE_DEVICE ((0UL << 6) | (0UL << 3) | (1UL << 2))
131 #define TT_DESCRIPTOR_PAGE_CACHE_POLICY_WRITE_THROUGH_NO_ALLOC ((0UL << 6) | (1UL << 3) | (0UL << 2))
132 #define TT_DESCRIPTOR_PAGE_CACHE_POLICY_WRITE_BACK_NO_ALLOC ((0UL << 6) | (1UL << 3) | (1UL << 2))
133 #define TT_DESCRIPTOR_PAGE_CACHE_POLICY_NON_CACHEABLE ((1UL << 6) | (0UL << 3) | (0UL << 2))
134 #define TT_DESCRIPTOR_PAGE_CACHE_POLICY_WRITE_BACK_ALLOC ((1UL << 6) | (1UL << 3) | (1UL << 2))
135 #define TT_DESCRIPTOR_PAGE_CACHE_POLICY_NON_SHAREABLE_DEVICE ((2UL << 6) | (0UL << 3) | (0UL << 2))
136
137 #define TT_DESCRIPTOR_LARGEPAGE_CACHE_POLICY_MASK ((3UL << 12) | (1UL << 3) | (1UL << 2))
138 #define TT_DESCRIPTOR_LARGEPAGE_CACHE_POLICY_STRONGLY_ORDERED ((0UL << 12) | (0UL << 3) | (0UL << 2))
139 #define TT_DESCRIPTOR_LARGEPAGE_CACHE_POLICY_SHAREABLE_DEVICE ((0UL << 12) | (0UL << 3) | (1UL << 2))
140 #define TT_DESCRIPTOR_LARGEPAGE_CACHE_POLICY_WRITE_THROUGH_NO_ALLOC ((0UL << 12) | (1UL << 3) | (0UL << 2))
141 #define TT_DESCRIPTOR_LARGEPAGE_CACHE_POLICY_WRITE_BACK_NO_ALLOC ((0UL << 12) | (1UL << 3) | (1UL << 2))
142 #define TT_DESCRIPTOR_LARGEPAGE_CACHE_POLICY_NON_CACHEABLE ((1UL << 12) | (0UL << 3) | (0UL << 2))
143 #define TT_DESCRIPTOR_LARGEPAGE_CACHE_POLICY_WRITE_BACK_ALLOC ((1UL << 12) | (1UL << 3) | (1UL << 2))
144 #define TT_DESCRIPTOR_LARGEPAGE_CACHE_POLICY_NON_SHAREABLE_DEVICE ((2UL << 12) | (0UL << 3) | (0UL << 2))
145
146 #define TT_DESCRIPTOR_CONVERT_TO_PAGE_AP(Desc) ((((Desc) & TT_DESCRIPTOR_SECTION_AP_MASK) >> 6) & TT_DESCRIPTOR_PAGE_AP_MASK)
147 #define TT_DESCRIPTOR_CONVERT_TO_PAGE_NG(Desc) ((((Desc) & TT_DESCRIPTOR_SECTION_NG_MASK) >> 6) & TT_DESCRIPTOR_PAGE_NG_MASK)
148 #define TT_DESCRIPTOR_CONVERT_TO_PAGE_S(Desc) ((((Desc) & TT_DESCRIPTOR_SECTION_S_MASK) >> 6) & TT_DESCRIPTOR_PAGE_S_MASK)
149 #define TT_DESCRIPTOR_CONVERT_TO_PAGE_XN(Desc,IsLargePage) ((IsLargePage)? \
150 ((((Desc) & TT_DESCRIPTOR_SECTION_XN_MASK) >> 4) & TT_DESCRIPTOR_LARGEPAGE_XN_MASK): \
151 ((((Desc) & TT_DESCRIPTOR_SECTION_XN_MASK) << 11) & TT_DESCRIPTOR_PAGE_XN_MASK))
152 #define TT_DESCRIPTOR_CONVERT_TO_PAGE_CACHE_POLICY(Desc,IsLargePage) (IsLargePage? \
153 (((Desc) & TT_DESCRIPTOR_SECTION_CACHE_POLICY_MASK) & TT_DESCRIPTOR_LARGEPAGE_CACHE_POLICY_MASK): \
154 (((((Desc) & (0x3 << 12)) >> 6) | (Desc & (0x3 << 2)))))
155
156 #define TT_DESCRIPTOR_CONVERT_TO_SECTION_AP(Desc) ((((Desc) & TT_DESCRIPTOR_PAGE_AP_MASK) << 6) & TT_DESCRIPTOR_SECTION_AP_MASK)
157
158 #define TT_DESCRIPTOR_CONVERT_TO_SECTION_CACHE_POLICY(Desc,IsLargePage) (IsLargePage? \
159 (((Desc) & TT_DESCRIPTOR_LARGEPAGE_CACHE_POLICY_MASK) & TT_DESCRIPTOR_SECTION_CACHE_POLICY_MASK): \
160 (((((Desc) & (0x3 << 6)) << 6) | (Desc & (0x3 << 2)))))
161
162
163 #define TT_DESCRIPTOR_SECTION_DOMAIN_MASK (0x0FUL << 5)
164 #define TT_DESCRIPTOR_SECTION_DOMAIN(a) (((a) & 0x0FUL) << 5)
165
166 #define TT_DESCRIPTOR_SECTION_BASE_ADDRESS_MASK (0xFFF00000)
167 #define TT_DESCRIPTOR_SECTION_PAGETABLE_ADDRESS_MASK (0xFFFFFC00)
168 #define TT_DESCRIPTOR_SECTION_BASE_ADDRESS(a) ((a) & TT_DESCRIPTOR_SECTION_BASE_ADDRESS_MASK)
169 #define TT_DESCRIPTOR_SECTION_BASE_SHIFT 20
170
171 #define TT_DESCRIPTOR_PAGE_BASE_ADDRESS_MASK (0xFFFFF000)
172 #define TT_DESCRIPTOR_PAGE_INDEX_MASK (0x000FF000)
173 #define TT_DESCRIPTOR_PAGE_BASE_ADDRESS(a) ((a) & TT_DESCRIPTOR_PAGE_BASE_ADDRESS_MASK)
174 #define TT_DESCRIPTOR_PAGE_BASE_SHIFT 12
175
176 #define TT_DESCRIPTOR_SECTION_WRITE_BACK(Secure) (TT_DESCRIPTOR_SECTION_TYPE_SECTION | \
177 ((Secure) ? TT_DESCRIPTOR_SECTION_NS_SECURE : TT_DESCRIPTOR_SECTION_NS_NON_SECURE ) | \
178 TT_DESCRIPTOR_SECTION_NG_GLOBAL | \
179 TT_DESCRIPTOR_SECTION_S_NOT_SHARED | \
180 TT_DESCRIPTOR_SECTION_DOMAIN(0) | \
181 TT_DESCRIPTOR_SECTION_AP_RW_RW | \
182 TT_DESCRIPTOR_SECTION_CACHE_POLICY_WRITE_BACK_ALLOC)
183 #define TT_DESCRIPTOR_SECTION_WRITE_THROUGH(Secure) (TT_DESCRIPTOR_SECTION_TYPE_SECTION | \
184 ((Secure) ? TT_DESCRIPTOR_SECTION_NS_SECURE : TT_DESCRIPTOR_SECTION_NS_NON_SECURE ) | \
185 TT_DESCRIPTOR_SECTION_NG_GLOBAL | \
186 TT_DESCRIPTOR_SECTION_S_NOT_SHARED | \
187 TT_DESCRIPTOR_SECTION_DOMAIN(0) | \
188 TT_DESCRIPTOR_SECTION_AP_RW_RW | \
189 TT_DESCRIPTOR_SECTION_CACHE_POLICY_WRITE_THROUGH_NO_ALLOC)
190 #define TT_DESCRIPTOR_SECTION_DEVICE(Secure) (TT_DESCRIPTOR_SECTION_TYPE_SECTION | \
191 ((Secure) ? TT_DESCRIPTOR_SECTION_NS_SECURE : TT_DESCRIPTOR_SECTION_NS_NON_SECURE ) | \
192 TT_DESCRIPTOR_SECTION_NG_GLOBAL | \
193 TT_DESCRIPTOR_SECTION_S_NOT_SHARED | \
194 TT_DESCRIPTOR_SECTION_DOMAIN(0) | \
195 TT_DESCRIPTOR_SECTION_AP_RW_RW | \
196 TT_DESCRIPTOR_SECTION_CACHE_POLICY_SHAREABLE_DEVICE)
197 #define TT_DESCRIPTOR_SECTION_UNCACHED(Secure) (TT_DESCRIPTOR_SECTION_TYPE_SECTION | \
198 ((Secure) ? TT_DESCRIPTOR_SECTION_NS_SECURE : TT_DESCRIPTOR_SECTION_NS_NON_SECURE ) | \
199 TT_DESCRIPTOR_SECTION_NG_GLOBAL | \
200 TT_DESCRIPTOR_SECTION_S_NOT_SHARED | \
201 TT_DESCRIPTOR_SECTION_DOMAIN(0) | \
202 TT_DESCRIPTOR_SECTION_AP_RW_RW | \
203 TT_DESCRIPTOR_SECTION_CACHE_POLICY_NON_CACHEABLE)
204
205 #define TT_DESCRIPTOR_PAGE_WRITE_BACK (TT_DESCRIPTOR_PAGE_TYPE_PAGE | \
206 TT_DESCRIPTOR_PAGE_NG_GLOBAL | \
207 TT_DESCRIPTOR_PAGE_S_NOT_SHARED | \
208 TT_DESCRIPTOR_PAGE_AP_RW_RW | \
209 TT_DESCRIPTOR_PAGE_CACHE_POLICY_WRITE_BACK_ALLOC)
210 #define TT_DESCRIPTOR_PAGE_WRITE_THROUGH (TT_DESCRIPTOR_PAGE_TYPE_PAGE | \
211 TT_DESCRIPTOR_PAGE_NG_GLOBAL | \
212 TT_DESCRIPTOR_PAGE_S_NOT_SHARED | \
213 TT_DESCRIPTOR_PAGE_AP_RW_RW | \
214 TT_DESCRIPTOR_PAGE_CACHE_POLICY_WRITE_THROUGH_NO_ALLOC)
215 #define TT_DESCRIPTOR_PAGE_DEVICE (TT_DESCRIPTOR_PAGE_TYPE_PAGE | \
216 TT_DESCRIPTOR_PAGE_NG_GLOBAL | \
217 TT_DESCRIPTOR_PAGE_S_NOT_SHARED | \
218 TT_DESCRIPTOR_PAGE_AP_RW_RW | \
219 TT_DESCRIPTOR_PAGE_CACHE_POLICY_SHAREABLE_DEVICE)
220 #define TT_DESCRIPTOR_PAGE_UNCACHED (TT_DESCRIPTOR_PAGE_TYPE_PAGE | \
221 TT_DESCRIPTOR_PAGE_NG_GLOBAL | \
222 TT_DESCRIPTOR_PAGE_S_NOT_SHARED | \
223 TT_DESCRIPTOR_PAGE_AP_RW_RW | \
224 TT_DESCRIPTOR_PAGE_CACHE_POLICY_NON_CACHEABLE)
225
226 // Cortex A9 feature bit definitions
227 #define A9_FEATURE_PARITY (1<<9)
228 #define A9_FEATURE_AOW (1<<8)
229 #define A9_FEATURE_EXCL (1<<7)
230 #define A9_FEATURE_SMP (1<<6)
231 #define A9_FEATURE_FOZ (1<<3)
232 #define A9_FEATURE_DPREF (1<<2)
233 #define A9_FEATURE_HINT (1<<1)
234 #define A9_FEATURE_FWD (1<<0)
235
236 // SCU register offsets & masks
237 #define SCU_CONTROL_OFFSET 0x0
238 #define SCU_CONFIG_OFFSET 0x4
239 #define SCU_INVALL_OFFSET 0xC
240 #define SCU_FILT_START_OFFSET 0x40
241 #define SCU_FILT_END_OFFSET 0x44
242 #define SCU_SACR_OFFSET 0x50
243 #define SCU_SSACR_OFFSET 0x54
244
245 #define SMP_GIC_CPUIF_BASE 0x100
246 #define SMP_GIC_DIST_BASE 0x1000
247
248 // CPACR - Coprocessor Access Control Register defintions
249 #define CPACR_CP_DENIED(cp) 0x00
250 #define CPACR_CP_PRIV(cp) ((0x1 << ((cp) << 1)) & 0x0FFFFFFF)
251 #define CPACR_CP_FULL(cp) ((0x3 << ((cp) << 1)) & 0x0FFFFFFF)
252 #define CPACR_ASEDIS (1 << 31)
253 #define CPACR_D32DIS (1 << 30)
254 #define CPACR_CP_FULL_ACCESS 0x0FFFFFFF
255
256 // NSACR - Non-Secure Access Control Register defintions
257 #define NSACR_CP(cp) ((1 << (cp)) & 0x3FFF)
258 #define NSACR_NSD32DIS (1 << 14)
259 #define NSACR_NSASEDIS (1 << 15)
260 #define NSACR_PLE (1 << 16)
261 #define NSACR_TL (1 << 17)
262 #define NSACR_NS_SMP (1 << 18)
263 #define NSACR_RFR (1 << 19)
264
265 // SCR - Secure Configuration Register defintions
266 #define SCR_NS (1 << 0)
267 #define SCR_IRQ (1 << 1)
268 #define SCR_FIQ (1 << 2)
269 #define SCR_EA (1 << 3)
270 #define SCR_FW (1 << 4)
271 #define SCR_AW (1 << 5)
272
273 VOID
274 EFIAPI
275 ArmEnableSWPInstruction (
276 VOID
277 );
278
279 VOID
280 EFIAPI
281 ArmWriteNsacr (
282 IN UINT32 SetWayFormat
283 );
284
285 VOID
286 EFIAPI
287 ArmWriteScr (
288 IN UINT32 SetWayFormat
289 );
290
291 VOID
292 EFIAPI
293 ArmWriteVMBar (
294 IN UINT32 SetWayFormat
295 );
296
297 VOID
298 EFIAPI
299 ArmWriteVBar (
300 IN UINT32 SetWayFormat
301 );
302
303 UINT32
304 EFIAPI
305 ArmReadVBar (
306 VOID
307 );
308
309 VOID
310 EFIAPI
311 ArmWriteCPACR (
312 IN UINT32 SetWayFormat
313 );
314
315 VOID
316 EFIAPI
317 ArmEnableVFP (
318 VOID
319 );
320
321 VOID
322 EFIAPI
323 ArmCallWFI (
324 VOID
325 );
326
327 VOID
328 EFIAPI
329 ArmInvalidScu (
330 VOID
331 );
332
333
334 UINTN
335 EFIAPI
336 ArmGetScuBaseAddress (
337 VOID
338 );
339
340 UINT32
341 EFIAPI
342 ArmIsScuEnable(
343 VOID
344 );
345
346 VOID
347 EFIAPI
348 ArmWriteAuxCr (
349 IN UINT32 Bit
350 );
351
352 UINT32
353 EFIAPI
354 ArmReadAuxCr (
355 VOID
356 );
357
358 VOID
359 EFIAPI
360 ArmSetAuxCrBit (
361 IN UINT32 Bits
362 );
363
364 VOID
365 EFIAPI
366 ArmSetupSmpNonSecure (
367 IN UINTN CoreId
368 );
369
370
371 UINTN
372 EFIAPI
373 ArmReadCbar(
374 VOID
375 );
376
377 VOID
378 EFIAPI
379 ArmInvalidateInstructionAndDataTlb(
380 VOID
381 );
382
383
384 UINTN
385 EFIAPI
386 ArmReadMpidr(
387 VOID
388 );
389
390
391 #endif // __ARM_V7_H__