cp15.h
6.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
/*****************************************************************************
* Copyright Statement:
* --------------------
* This software is protected by Copyright and the information contained
* herein is confidential. The software may not be copied and the information
* contained herein may not be used or disclosed except with the written
* permission of MediaTek Inc. (C) 2001
*
*****************************************************************************/
/*****************************************************************************
*
* Filename:
* ---------
* cp15.h
*
* Project:
* --------
* MAUI
*
* Description:
* ------------
* Header file for coprocessor(CP15) control.
*
* Author:
* -------
* -------
*
*============================================================================
* HISTORY
* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*------------------------------------------------------------------------------
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*------------------------------------------------------------------------------
* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*============================================================================
****************************************************************************/
#ifndef __CP15_H__
#define __CP15_H__
#if defined(__ARM9_MMU__) || defined(__ARM11_MMU__)
#include "kal_general_types.h"
/************************************
* I/D-TCM related.
***********************************/
extern kal_uint32 cp15_read_tcm_status(void);
extern kal_uint32 cp15_read_itcm_region(void);
extern kal_uint32 cp15_read_dtcm_region(void);
extern void cp15_enable_itcm(kal_uint32 addr);
extern void cp15_enable_dtcm(kal_uint32 addr);
#if defined(__ARM11_MMU__)
extern void cp15_tcm_select(kal_uint32 value);
extern kal_uint32 cp15_read_tcm_cache_size(void);
extern kal_uint32 cp15_tcm_status(void);
extern kal_uint32 cp15_read_itcm(void);
extern kal_uint32 cp15_read_dtcm(void);
extern void cp15_itcm_secure_access(kal_uint32 value);
extern void cp15_dtcm_secure_access(kal_uint32 value);
#endif /* __ARM11_MMU__ */
/************************************
* General (I/D-Cache) cache related.
***********************************/
extern kal_uint32 cp15_read_cache_type(void);
extern void cp15_invalidate_idcache_single(kal_uint32 mva);
extern void cp15_invalidate_idcache_region(kal_uint32 addr, kal_uint32 nr_cache);
extern void cp15_set_idcache_replacement_policy(void);
#if defined(__ARM11_MMU__)
extern void cp15_Cache_Behavior(void);
extern void cp15_switch_cache2RR(void);
#endif /* __ARM11_MMU__ */
/************************************
* I-Cache related.
***********************************/
extern void cp15_enable_icache(void);
extern void cp15_disable_icache(void);
extern void cp15_invalidate_icache(void);
extern void cp15_invalidate_icache_single(kal_uint32 mva);
extern void cp15_invalidate_icache_region(kal_uint32 addr, kal_uint32 nr_cache);
extern kal_uint32 cp15_is_icache_enabled(void);
extern void cp15_lockdown_icache(kal_uint32 L);
extern void cp15_prefetch_icache_line(kal_uint32 mva);
/************************************
* D-Cache related.
***********************************/
extern void cp15_enable_dcache(void);
extern void cp15_disable_dcache(void);
extern void cp15_invalidate_dcache(void);
extern void cp15_invalidate_dcache_single(kal_uint32 mva);
extern void cp15_clean_dcache_single(kal_uint32 mva);
extern void cp15_drain_write_buffer(void);
extern void cp15_invalidate_dcache_region(kal_uint32 addr, kal_uint32 nr_cache);
extern void cp15_clean_dcache_region(kal_uint32 addr, kal_uint32 nr_cache);
extern void cp15_clean_and_invalidate_dcache_region(kal_uint32 addr, kal_uint32 nr_cache);
extern void cp15_clean_dcache(void);
extern kal_uint32 cp15_is_dcache_enabled(void);
extern void cp15_lockdown_dcache(kal_uint32 L);
/************************************
* MMU related.
***********************************/
extern void cp15_lockdown_TLB_entry(unsigned int addr);
extern kal_uint32 cp15_read_tbbr(void);
extern void cp15_write_tbbr(kal_uint32 addr);
extern void cp15_enable_mmu(void);
extern void cp15_disable_mmu(void);
extern kal_uint32 cp15_read_domain_access(void);
extern void cp15_write_domain_access(kal_uint32 domain, kal_uint32 access);
extern kal_uint32 cp15_read_ifsr(void);
extern kal_uint32 cp15_read_dfsr(void);
extern kal_uint32 cp15_read_far(void);
extern void cp15_invalidate_tlb_single(kal_uint32 mva);
extern void cp15_invalidate_tlb(void);
extern void cp15_enable_rom_protect(void);
extern void cp15_disable_rom_protect(void);
extern void cp15_enable_sys_protect(void);
extern void cp15_disable_sys_protect(void);
extern void cp15_enable_alignment_fault(void);
extern void cp15_disable_alignment_fault(void);
#if defined(__ARM11_MMU__)
extern kal_uint32 cp15_read_tbbr(void);
extern kal_uint32 cp15_read_tbbr1(void);
extern void cp15_write_tbbr1(kal_uint32 tbbr);
extern kal_uint32 cp15_read_ifar(void);
extern void cp15_disable_ap_subpage(void);
extern void cp15_enable_unaligned_access(void);
#endif /* __ARM11_MMU__ */
/************************************
* Other cp15 feature related.
***********************************/
extern void cp15_enter_low_pwr_state(void);
#if defined(__ARM11_MMU__)
extern void cp15_enable_branch_prediction(void);
extern void cp15_read_ctrl_register(void);
extern void cp15_set_ns_bit(void);
extern void cp15_Non_Secure_Access(void);
extern void cp15_switch_big_endian(void);
extern void cp15_switch_little_endian(void);
extern void cp15_data_memory_barrier(void);
#endif /* __ARM11_MMU__ */
#else /* __ARM9_MMU__ || __ARM11_MMU__ */
/* define empty macro for backward compatible */
#define cp15_read_ifsr() 0
#define cp15_read_dfsr() 0
#define cp15_read_far() 0
#endif /* __ARM9_MMU__ || __ARM11_MMU__ */
#endif /* __CP15_H__ */