3 Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
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
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.
19 ARM_CACHE_TYPE_WRITE_BACK
,
20 ARM_CACHE_TYPE_UNKNOWN
24 ARM_CACHE_ARCHITECTURE_UNIFIED
,
25 ARM_CACHE_ARCHITECTURE_SEPARATE
,
26 ARM_CACHE_ARCHITECTURE_UNKNOWN
27 } ARM_CACHE_ARCHITECTURE
;
31 ARM_CACHE_ARCHITECTURE Architecture
;
32 BOOLEAN DataCachePresent
;
34 UINTN DataCacheAssociativity
;
35 UINTN DataCacheLineLength
;
36 BOOLEAN InstructionCachePresent
;
37 UINTN InstructionCacheSize
;
38 UINTN InstructionCacheAssociativity
;
39 UINTN InstructionCacheLineLength
;
43 ARM_MEMORY_REGION_ATTRIBUTE_UNCACHED_UNBUFFERED
= 0,
44 ARM_MEMORY_REGION_ATTRIBUTE_SECURE_UNCACHED_UNBUFFERED
,
45 ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK
,
46 ARM_MEMORY_REGION_ATTRIBUTE_SECURE_WRITE_BACK
,
47 ARM_MEMORY_REGION_ATTRIBUTE_WRITE_THROUGH
,
48 ARM_MEMORY_REGION_ATTRIBUTE_SECURE_WRITE_THROUGH
,
49 ARM_MEMORY_REGION_ATTRIBUTE_DEVICE
,
50 ARM_MEMORY_REGION_ATTRIBUTE_SECURE_DEVICE
51 } ARM_MEMORY_REGION_ATTRIBUTES
;
53 #define IS_ARM_MEMORY_REGION_ATTRIBUTES_SECURE(attr) ((UINT32)(attr) & 1)
59 ARM_MEMORY_REGION_ATTRIBUTES Attributes
;
60 } ARM_MEMORY_REGION_DESCRIPTOR
;
62 typedef VOID (*CACHE_OPERATION
)(VOID
);
63 typedef VOID (*LINE_OPERATION
)(UINTN
);
66 ARM_PROCESSOR_MODE_USER
= 0x10,
67 ARM_PROCESSOR_MODE_FIQ
= 0x11,
68 ARM_PROCESSOR_MODE_IRQ
= 0x12,
69 ARM_PROCESSOR_MODE_SUPERVISOR
= 0x13,
70 ARM_PROCESSOR_MODE_ABORT
= 0x17,
71 ARM_PROCESSOR_MODE_UNDEFINED
= 0x1B,
72 ARM_PROCESSOR_MODE_SYSTEM
= 0x1F,
73 ARM_PROCESSOR_MODE_MASK
= 0x1F
82 ARM_CACHE_ARCHITECTURE
84 ArmCacheArchitecture (
91 OUT ARM_CACHE_INFO
*CacheInfo
108 ArmDataCacheAssociativity (
114 ArmDataCacheLineLength (
120 ArmInstructionCachePresent (
126 ArmInstructionCacheSize (
132 ArmInstructionCacheAssociativity (
138 ArmInstructionCacheLineLength (
162 ArmInvalidateDataCache (
169 ArmCleanInvalidateDataCache (
181 ArmInvalidateInstructionCache (
187 ArmInvalidateDataCacheEntryByMVA (
193 ArmCleanDataCacheEntryByMVA (
199 ArmCleanInvalidateDataCacheEntryByMVA (
211 ArmDisableDataCache (
217 ArmEnableInstructionCache (
223 ArmDisableInstructionCache (
241 ArmDisableCachesAndMmu (
247 ArmEnableInterrupts (
253 ArmDisableInterrupts (
259 ArmGetInterruptState (
289 ArmUpdateTranslationTableEntry (
290 IN VOID
*TranslationTableEntry
,
296 ArmSetDomainAccessControl (
303 IN VOID
*TranslationTableBase
308 ArmGetTTBR0BaseAddress (
315 IN ARM_MEMORY_REGION_DESCRIPTOR
*MemoryTable
,
316 OUT VOID
**TranslationTableBase OPTIONAL
,
317 OUT UINTN
*TranslationTableSize OPTIONAL
328 ArmSwitchProcessorMode (
329 IN ARM_PROCESSOR_MODE Mode
340 ArmEnableBranchPrediction (
346 ArmDisableBranchPrediction (
364 ArmDataMemoryBarrier (
370 ArmDataSyncronizationBarrier (
376 ArmInstructionSynchronizationBarrier (
381 #endif // __ARM_LIB__