1 //------------------------------------------------------------------------------
3 // Copyright (c) 2008-2009 Apple Inc. All rights reserved.
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
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.
13 //------------------------------------------------------------------------------
15 EXPORT ArmCleanInvalidateDataCache
16 EXPORT ArmCleanDataCache
17 EXPORT ArmInvalidateDataCache
18 EXPORT ArmInvalidateInstructionCache
19 EXPORT ArmInvalidateDataCacheEntryByMVA
20 EXPORT ArmCleanDataCacheEntryByMVA
21 EXPORT ArmCleanInvalidateDataCacheEntryByMVA
25 EXPORT ArmEnableDataCache
26 EXPORT ArmDisableDataCache
27 EXPORT ArmEnableInstructionCache
28 EXPORT ArmDisableInstructionCache
29 EXPORT ArmEnableBranchPrediction
30 EXPORT ArmDisableBranchPrediction
33 DC_ON EQU ( 0x1:SHL:2 )
34 IC_ON EQU ( 0x1:SHL:12 )
35 XP_ON EQU ( 0x1:SHL:23 )
38 AREA ArmCacheLib, CODE, READONLY
42 ArmInvalidateDataCacheEntryByMVA
43 mcr p15, 0, r0, c7, c6, 1 ; invalidate single data cache line
47 ArmCleanDataCacheEntryByMVA
48 mcr p15, 0, r0, c7, c10, 1 ; clean single data cache line
52 ArmCleanInvalidateDataCacheEntryByMVA
53 mcr p15, 0, r0, c7, c14, 1 ; clean and invalidate single data cache line
58 mcr p15, 0, r0, c7, c10, 0 ; clean entire data cache
62 ArmCleanInvalidateDataCache
63 mcr p15, 0, r0, c7, c14, 0 ; clean and invalidate entire data cache
67 ArmInvalidateDataCache
68 mcr p15, 0, r0, c7, c6, 0 ; invalidate entire data cache
72 ArmInvalidateInstructionCache
73 mcr p15, 0, r0, c7, c5, 0 ;invalidate entire instruction cache
75 mcr p15,0,R0,c7,c5,4 ;Flush Prefetch buffer
94 mcr p15,0,R0,c7,c10,4 ;Data synchronization barrier
96 mcr p15,0,R0,c7,c5,4 ;Flush Prefetch buffer
101 MRC p15,0,R0,c1,c0,0 ;Read control register configuration data
102 ORR R0,R0,R1 ;Set C bit
103 MCR p15,0,r0,c1,c0,0 ;Write control register configuration data
108 MRC p15,0,R0,c1,c0,0 ;Read control register configuration data
109 BIC R0,R0,R1 ;Clear C bit
110 MCR p15,0,r0,c1,c0,0 ;Write control register configuration data
113 ArmEnableInstructionCache
115 MRC p15,0,R0,c1,c0,0 ;Read control register configuration data
116 ORR R0,R0,R1 ;Set I bit
117 MCR p15,0,r0,c1,c0,0 ;Write control register configuration data
120 ArmDisableInstructionCache
122 MRC p15,0,R0,c1,c0,0 ;Read control register configuration data
123 BIC R0,R0,R1 ;Clear I bit.
124 MCR p15,0,r0,c1,c0,0 ;Write control register configuration data
127 ArmEnableBranchPrediction
128 mrc p15, 0, r0, c1, c0, 0
129 orr r0, r0, #0x00000800
130 mcr p15, 0, r0, c1, c0, 0
133 ArmDisableBranchPrediction
134 mrc p15, 0, r0, c1, c0, 0
135 bic r0, r0, #0x00000800
136 mcr p15, 0, r0, c1, c0, 0