1 // SPDX-License-Identifier: GPL-2.0-only
3 * This file defines C prototypes for the low-level processor assembly functions
4 * and creates a reference for CFI. This needs to be done for every assembly
5 * processor ("proc") function that is called from C but does not have a
6 * corresponding C implementation.
8 * Processors are listed in the order they appear in the Makefile.
10 * Functions are listed if and only if they see use on the target CPU, and in
11 * the order they are defined in struct processor.
13 #include <asm/proc-fns.h>
15 #ifdef CONFIG_CPU_ARM7TDMI
16 void cpu_arm7tdmi_proc_init(void);
17 __ADDRESSABLE(cpu_arm7tdmi_proc_init
);
18 void cpu_arm7tdmi_proc_fin(void);
19 __ADDRESSABLE(cpu_arm7tdmi_proc_fin
);
20 void cpu_arm7tdmi_reset(unsigned long addr
, bool hvc
);
21 __ADDRESSABLE(cpu_arm7tdmi_reset
);
22 int cpu_arm7tdmi_do_idle(void);
23 __ADDRESSABLE(cpu_arm7tdmi_do_idle
);
24 void cpu_arm7tdmi_dcache_clean_area(void *addr
, int size
);
25 __ADDRESSABLE(cpu_arm7tdmi_dcache_clean_area
);
26 void cpu_arm7tdmi_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
27 __ADDRESSABLE(cpu_arm7tdmi_switch_mm
);
30 #ifdef CONFIG_CPU_ARM720T
31 void cpu_arm720_proc_init(void);
32 __ADDRESSABLE(cpu_arm720_proc_init
);
33 void cpu_arm720_proc_fin(void);
34 __ADDRESSABLE(cpu_arm720_proc_fin
);
35 void cpu_arm720_reset(unsigned long addr
, bool hvc
);
36 __ADDRESSABLE(cpu_arm720_reset
);
37 int cpu_arm720_do_idle(void);
38 __ADDRESSABLE(cpu_arm720_do_idle
);
39 void cpu_arm720_dcache_clean_area(void *addr
, int size
);
40 __ADDRESSABLE(cpu_arm720_dcache_clean_area
);
41 void cpu_arm720_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
42 __ADDRESSABLE(cpu_arm720_switch_mm
);
43 void cpu_arm720_set_pte_ext(pte_t
*ptep
, pte_t pte
, unsigned int ext
);
44 __ADDRESSABLE(cpu_arm720_set_pte_ext
);
47 #ifdef CONFIG_CPU_ARM740T
48 void cpu_arm740_proc_init(void);
49 __ADDRESSABLE(cpu_arm740_proc_init
);
50 void cpu_arm740_proc_fin(void);
51 __ADDRESSABLE(cpu_arm740_proc_fin
);
52 void cpu_arm740_reset(unsigned long addr
, bool hvc
);
53 __ADDRESSABLE(cpu_arm740_reset
);
54 int cpu_arm740_do_idle(void);
55 __ADDRESSABLE(cpu_arm740_do_idle
);
56 void cpu_arm740_dcache_clean_area(void *addr
, int size
);
57 __ADDRESSABLE(cpu_arm740_dcache_clean_area
);
58 void cpu_arm740_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
59 __ADDRESSABLE(cpu_arm740_switch_mm
);
62 #ifdef CONFIG_CPU_ARM9TDMI
63 void cpu_arm9tdmi_proc_init(void);
64 __ADDRESSABLE(cpu_arm9tdmi_proc_init
);
65 void cpu_arm9tdmi_proc_fin(void);
66 __ADDRESSABLE(cpu_arm9tdmi_proc_fin
);
67 void cpu_arm9tdmi_reset(unsigned long addr
, bool hvc
);
68 __ADDRESSABLE(cpu_arm9tdmi_reset
);
69 int cpu_arm9tdmi_do_idle(void);
70 __ADDRESSABLE(cpu_arm9tdmi_do_idle
);
71 void cpu_arm9tdmi_dcache_clean_area(void *addr
, int size
);
72 __ADDRESSABLE(cpu_arm9tdmi_dcache_clean_area
);
73 void cpu_arm9tdmi_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
74 __ADDRESSABLE(cpu_arm9tdmi_switch_mm
);
77 #ifdef CONFIG_CPU_ARM920T
78 void cpu_arm920_proc_init(void);
79 __ADDRESSABLE(cpu_arm920_proc_init
);
80 void cpu_arm920_proc_fin(void);
81 __ADDRESSABLE(cpu_arm920_proc_fin
);
82 void cpu_arm920_reset(unsigned long addr
, bool hvc
);
83 __ADDRESSABLE(cpu_arm920_reset
);
84 int cpu_arm920_do_idle(void);
85 __ADDRESSABLE(cpu_arm920_do_idle
);
86 void cpu_arm920_dcache_clean_area(void *addr
, int size
);
87 __ADDRESSABLE(cpu_arm920_dcache_clean_area
);
88 void cpu_arm920_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
89 __ADDRESSABLE(cpu_arm920_switch_mm
);
90 void cpu_arm920_set_pte_ext(pte_t
*ptep
, pte_t pte
, unsigned int ext
);
91 __ADDRESSABLE(cpu_arm920_set_pte_ext
);
92 #ifdef CONFIG_ARM_CPU_SUSPEND
93 void cpu_arm920_do_suspend(void *);
94 __ADDRESSABLE(cpu_arm920_do_suspend
);
95 void cpu_arm920_do_resume(void *);
96 __ADDRESSABLE(cpu_arm920_do_resume
);
97 #endif /* CONFIG_ARM_CPU_SUSPEND */
98 #endif /* CONFIG_CPU_ARM920T */
100 #ifdef CONFIG_CPU_ARM922T
101 void cpu_arm922_proc_init(void);
102 __ADDRESSABLE(cpu_arm922_proc_init
);
103 void cpu_arm922_proc_fin(void);
104 __ADDRESSABLE(cpu_arm922_proc_fin
);
105 void cpu_arm922_reset(unsigned long addr
, bool hvc
);
106 __ADDRESSABLE(cpu_arm922_reset
);
107 int cpu_arm922_do_idle(void);
108 __ADDRESSABLE(cpu_arm922_do_idle
);
109 void cpu_arm922_dcache_clean_area(void *addr
, int size
);
110 __ADDRESSABLE(cpu_arm922_dcache_clean_area
);
111 void cpu_arm922_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
112 __ADDRESSABLE(cpu_arm922_switch_mm
);
113 void cpu_arm922_set_pte_ext(pte_t
*ptep
, pte_t pte
, unsigned int ext
);
114 __ADDRESSABLE(cpu_arm922_set_pte_ext
);
117 #ifdef CONFIG_CPU_ARM925T
118 void cpu_arm925_proc_init(void);
119 __ADDRESSABLE(cpu_arm925_proc_init
);
120 void cpu_arm925_proc_fin(void);
121 __ADDRESSABLE(cpu_arm925_proc_fin
);
122 void cpu_arm925_reset(unsigned long addr
, bool hvc
);
123 __ADDRESSABLE(cpu_arm925_reset
);
124 int cpu_arm925_do_idle(void);
125 __ADDRESSABLE(cpu_arm925_do_idle
);
126 void cpu_arm925_dcache_clean_area(void *addr
, int size
);
127 __ADDRESSABLE(cpu_arm925_dcache_clean_area
);
128 void cpu_arm925_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
129 __ADDRESSABLE(cpu_arm925_switch_mm
);
130 void cpu_arm925_set_pte_ext(pte_t
*ptep
, pte_t pte
, unsigned int ext
);
131 __ADDRESSABLE(cpu_arm925_set_pte_ext
);
134 #ifdef CONFIG_CPU_ARM926T
135 void cpu_arm926_proc_init(void);
136 __ADDRESSABLE(cpu_arm926_proc_init
);
137 void cpu_arm926_proc_fin(void);
138 __ADDRESSABLE(cpu_arm926_proc_fin
);
139 void cpu_arm926_reset(unsigned long addr
, bool hvc
);
140 __ADDRESSABLE(cpu_arm926_reset
);
141 int cpu_arm926_do_idle(void);
142 __ADDRESSABLE(cpu_arm926_do_idle
);
143 void cpu_arm926_dcache_clean_area(void *addr
, int size
);
144 __ADDRESSABLE(cpu_arm926_dcache_clean_area
);
145 void cpu_arm926_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
146 __ADDRESSABLE(cpu_arm926_switch_mm
);
147 void cpu_arm926_set_pte_ext(pte_t
*ptep
, pte_t pte
, unsigned int ext
);
148 __ADDRESSABLE(cpu_arm926_set_pte_ext
);
149 #ifdef CONFIG_ARM_CPU_SUSPEND
150 void cpu_arm926_do_suspend(void *);
151 __ADDRESSABLE(cpu_arm926_do_suspend
);
152 void cpu_arm926_do_resume(void *);
153 __ADDRESSABLE(cpu_arm926_do_resume
);
154 #endif /* CONFIG_ARM_CPU_SUSPEND */
155 #endif /* CONFIG_CPU_ARM926T */
157 #ifdef CONFIG_CPU_ARM940T
158 void cpu_arm940_proc_init(void);
159 __ADDRESSABLE(cpu_arm940_proc_init
);
160 void cpu_arm940_proc_fin(void);
161 __ADDRESSABLE(cpu_arm940_proc_fin
);
162 void cpu_arm940_reset(unsigned long addr
, bool hvc
);
163 __ADDRESSABLE(cpu_arm940_reset
);
164 int cpu_arm940_do_idle(void);
165 __ADDRESSABLE(cpu_arm940_do_idle
);
166 void cpu_arm940_dcache_clean_area(void *addr
, int size
);
167 __ADDRESSABLE(cpu_arm940_dcache_clean_area
);
168 void cpu_arm940_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
169 __ADDRESSABLE(cpu_arm940_switch_mm
);
172 #ifdef CONFIG_CPU_ARM946E
173 void cpu_arm946_proc_init(void);
174 __ADDRESSABLE(cpu_arm946_proc_init
);
175 void cpu_arm946_proc_fin(void);
176 __ADDRESSABLE(cpu_arm946_proc_fin
);
177 void cpu_arm946_reset(unsigned long addr
, bool hvc
);
178 __ADDRESSABLE(cpu_arm946_reset
);
179 int cpu_arm946_do_idle(void);
180 __ADDRESSABLE(cpu_arm946_do_idle
);
181 void cpu_arm946_dcache_clean_area(void *addr
, int size
);
182 __ADDRESSABLE(cpu_arm946_dcache_clean_area
);
183 void cpu_arm946_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
184 __ADDRESSABLE(cpu_arm946_switch_mm
);
187 #ifdef CONFIG_CPU_FA526
188 void cpu_fa526_proc_init(void);
189 __ADDRESSABLE(cpu_fa526_proc_init
);
190 void cpu_fa526_proc_fin(void);
191 __ADDRESSABLE(cpu_fa526_proc_fin
);
192 void cpu_fa526_reset(unsigned long addr
, bool hvc
);
193 __ADDRESSABLE(cpu_fa526_reset
);
194 int cpu_fa526_do_idle(void);
195 __ADDRESSABLE(cpu_fa526_do_idle
);
196 void cpu_fa526_dcache_clean_area(void *addr
, int size
);
197 __ADDRESSABLE(cpu_fa526_dcache_clean_area
);
198 void cpu_fa526_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
199 __ADDRESSABLE(cpu_fa526_switch_mm
);
200 void cpu_fa526_set_pte_ext(pte_t
*ptep
, pte_t pte
, unsigned int ext
);
201 __ADDRESSABLE(cpu_fa526_set_pte_ext
);
204 #ifdef CONFIG_CPU_ARM1020
205 void cpu_arm1020_proc_init(void);
206 __ADDRESSABLE(cpu_arm1020_proc_init
);
207 void cpu_arm1020_proc_fin(void);
208 __ADDRESSABLE(cpu_arm1020_proc_fin
);
209 void cpu_arm1020_reset(unsigned long addr
, bool hvc
);
210 __ADDRESSABLE(cpu_arm1020_reset
);
211 int cpu_arm1020_do_idle(void);
212 __ADDRESSABLE(cpu_arm1020_do_idle
);
213 void cpu_arm1020_dcache_clean_area(void *addr
, int size
);
214 __ADDRESSABLE(cpu_arm1020_dcache_clean_area
);
215 void cpu_arm1020_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
216 __ADDRESSABLE(cpu_arm1020_switch_mm
);
217 void cpu_arm1020_set_pte_ext(pte_t
*ptep
, pte_t pte
, unsigned int ext
);
218 __ADDRESSABLE(cpu_arm1020_set_pte_ext
);
221 #ifdef CONFIG_CPU_ARM1020E
222 void cpu_arm1020e_proc_init(void);
223 __ADDRESSABLE(cpu_arm1020e_proc_init
);
224 void cpu_arm1020e_proc_fin(void);
225 __ADDRESSABLE(cpu_arm1020e_proc_fin
);
226 void cpu_arm1020e_reset(unsigned long addr
, bool hvc
);
227 __ADDRESSABLE(cpu_arm1020e_reset
);
228 int cpu_arm1020e_do_idle(void);
229 __ADDRESSABLE(cpu_arm1020e_do_idle
);
230 void cpu_arm1020e_dcache_clean_area(void *addr
, int size
);
231 __ADDRESSABLE(cpu_arm1020e_dcache_clean_area
);
232 void cpu_arm1020e_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
233 __ADDRESSABLE(cpu_arm1020e_switch_mm
);
234 void cpu_arm1020e_set_pte_ext(pte_t
*ptep
, pte_t pte
, unsigned int ext
);
235 __ADDRESSABLE(cpu_arm1020e_set_pte_ext
);
238 #ifdef CONFIG_CPU_ARM1022
239 void cpu_arm1022_proc_init(void);
240 __ADDRESSABLE(cpu_arm1022_proc_init
);
241 void cpu_arm1022_proc_fin(void);
242 __ADDRESSABLE(cpu_arm1022_proc_fin
);
243 void cpu_arm1022_reset(unsigned long addr
, bool hvc
);
244 __ADDRESSABLE(cpu_arm1022_reset
);
245 int cpu_arm1022_do_idle(void);
246 __ADDRESSABLE(cpu_arm1022_do_idle
);
247 void cpu_arm1022_dcache_clean_area(void *addr
, int size
);
248 __ADDRESSABLE(cpu_arm1022_dcache_clean_area
);
249 void cpu_arm1022_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
250 __ADDRESSABLE(cpu_arm1022_switch_mm
);
251 void cpu_arm1022_set_pte_ext(pte_t
*ptep
, pte_t pte
, unsigned int ext
);
252 __ADDRESSABLE(cpu_arm1022_set_pte_ext
);
255 #ifdef CONFIG_CPU_ARM1026
256 void cpu_arm1026_proc_init(void);
257 __ADDRESSABLE(cpu_arm1026_proc_init
);
258 void cpu_arm1026_proc_fin(void);
259 __ADDRESSABLE(cpu_arm1026_proc_fin
);
260 void cpu_arm1026_reset(unsigned long addr
, bool hvc
);
261 __ADDRESSABLE(cpu_arm1026_reset
);
262 int cpu_arm1026_do_idle(void);
263 __ADDRESSABLE(cpu_arm1026_do_idle
);
264 void cpu_arm1026_dcache_clean_area(void *addr
, int size
);
265 __ADDRESSABLE(cpu_arm1026_dcache_clean_area
);
266 void cpu_arm1026_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
267 __ADDRESSABLE(cpu_arm1026_switch_mm
);
268 void cpu_arm1026_set_pte_ext(pte_t
*ptep
, pte_t pte
, unsigned int ext
);
269 __ADDRESSABLE(cpu_arm1026_set_pte_ext
);
272 #ifdef CONFIG_CPU_SA110
273 void cpu_sa110_proc_init(void);
274 __ADDRESSABLE(cpu_sa110_proc_init
);
275 void cpu_sa110_proc_fin(void);
276 __ADDRESSABLE(cpu_sa110_proc_fin
);
277 void cpu_sa110_reset(unsigned long addr
, bool hvc
);
278 __ADDRESSABLE(cpu_sa110_reset
);
279 int cpu_sa110_do_idle(void);
280 __ADDRESSABLE(cpu_sa110_do_idle
);
281 void cpu_sa110_dcache_clean_area(void *addr
, int size
);
282 __ADDRESSABLE(cpu_sa110_dcache_clean_area
);
283 void cpu_sa110_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
284 __ADDRESSABLE(cpu_sa110_switch_mm
);
285 void cpu_sa110_set_pte_ext(pte_t
*ptep
, pte_t pte
, unsigned int ext
);
286 __ADDRESSABLE(cpu_sa110_set_pte_ext
);
289 #ifdef CONFIG_CPU_SA1100
290 void cpu_sa1100_proc_init(void);
291 __ADDRESSABLE(cpu_sa1100_proc_init
);
292 void cpu_sa1100_proc_fin(void);
293 __ADDRESSABLE(cpu_sa1100_proc_fin
);
294 void cpu_sa1100_reset(unsigned long addr
, bool hvc
);
295 __ADDRESSABLE(cpu_sa1100_reset
);
296 int cpu_sa1100_do_idle(void);
297 __ADDRESSABLE(cpu_sa1100_do_idle
);
298 void cpu_sa1100_dcache_clean_area(void *addr
, int size
);
299 __ADDRESSABLE(cpu_sa1100_dcache_clean_area
);
300 void cpu_sa1100_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
301 __ADDRESSABLE(cpu_sa1100_switch_mm
);
302 void cpu_sa1100_set_pte_ext(pte_t
*ptep
, pte_t pte
, unsigned int ext
);
303 __ADDRESSABLE(cpu_sa1100_set_pte_ext
);
304 #ifdef CONFIG_ARM_CPU_SUSPEND
305 void cpu_sa1100_do_suspend(void *);
306 __ADDRESSABLE(cpu_sa1100_do_suspend
);
307 void cpu_sa1100_do_resume(void *);
308 __ADDRESSABLE(cpu_sa1100_do_resume
);
309 #endif /* CONFIG_ARM_CPU_SUSPEND */
310 #endif /* CONFIG_CPU_SA1100 */
312 #ifdef CONFIG_CPU_XSCALE
313 void cpu_xscale_proc_init(void);
314 __ADDRESSABLE(cpu_xscale_proc_init
);
315 void cpu_xscale_proc_fin(void);
316 __ADDRESSABLE(cpu_xscale_proc_fin
);
317 void cpu_xscale_reset(unsigned long addr
, bool hvc
);
318 __ADDRESSABLE(cpu_xscale_reset
);
319 int cpu_xscale_do_idle(void);
320 __ADDRESSABLE(cpu_xscale_do_idle
);
321 void cpu_xscale_dcache_clean_area(void *addr
, int size
);
322 __ADDRESSABLE(cpu_xscale_dcache_clean_area
);
323 void cpu_xscale_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
324 __ADDRESSABLE(cpu_xscale_switch_mm
);
325 void cpu_xscale_set_pte_ext(pte_t
*ptep
, pte_t pte
, unsigned int ext
);
326 __ADDRESSABLE(cpu_xscale_set_pte_ext
);
327 #ifdef CONFIG_ARM_CPU_SUSPEND
328 void cpu_xscale_do_suspend(void *);
329 __ADDRESSABLE(cpu_xscale_do_suspend
);
330 void cpu_xscale_do_resume(void *);
331 __ADDRESSABLE(cpu_xscale_do_resume
);
332 #endif /* CONFIG_ARM_CPU_SUSPEND */
333 #endif /* CONFIG_CPU_XSCALE */
335 #ifdef CONFIG_CPU_XSC3
336 void cpu_xsc3_proc_init(void);
337 __ADDRESSABLE(cpu_xsc3_proc_init
);
338 void cpu_xsc3_proc_fin(void);
339 __ADDRESSABLE(cpu_xsc3_proc_fin
);
340 void cpu_xsc3_reset(unsigned long addr
, bool hvc
);
341 __ADDRESSABLE(cpu_xsc3_reset
);
342 int cpu_xsc3_do_idle(void);
343 __ADDRESSABLE(cpu_xsc3_do_idle
);
344 void cpu_xsc3_dcache_clean_area(void *addr
, int size
);
345 __ADDRESSABLE(cpu_xsc3_dcache_clean_area
);
346 void cpu_xsc3_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
347 __ADDRESSABLE(cpu_xsc3_switch_mm
);
348 void cpu_xsc3_set_pte_ext(pte_t
*ptep
, pte_t pte
, unsigned int ext
);
349 __ADDRESSABLE(cpu_xsc3_set_pte_ext
);
350 #ifdef CONFIG_ARM_CPU_SUSPEND
351 void cpu_xsc3_do_suspend(void *);
352 __ADDRESSABLE(cpu_xsc3_do_suspend
);
353 void cpu_xsc3_do_resume(void *);
354 __ADDRESSABLE(cpu_xsc3_do_resume
);
355 #endif /* CONFIG_ARM_CPU_SUSPEND */
356 #endif /* CONFIG_CPU_XSC3 */
358 #ifdef CONFIG_CPU_MOHAWK
359 void cpu_mohawk_proc_init(void);
360 __ADDRESSABLE(cpu_mohawk_proc_init
);
361 void cpu_mohawk_proc_fin(void);
362 __ADDRESSABLE(cpu_mohawk_proc_fin
);
363 void cpu_mohawk_reset(unsigned long addr
, bool hvc
);
364 __ADDRESSABLE(cpu_mohawk_reset
);
365 int cpu_mohawk_do_idle(void);
366 __ADDRESSABLE(cpu_mohawk_do_idle
);
367 void cpu_mohawk_dcache_clean_area(void *addr
, int size
);
368 __ADDRESSABLE(cpu_mohawk_dcache_clean_area
);
369 void cpu_mohawk_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
370 __ADDRESSABLE(cpu_mohawk_switch_mm
);
371 void cpu_mohawk_set_pte_ext(pte_t
*ptep
, pte_t pte
, unsigned int ext
);
372 __ADDRESSABLE(cpu_mohawk_set_pte_ext
);
373 #ifdef CONFIG_ARM_CPU_SUSPEND
374 void cpu_mohawk_do_suspend(void *);
375 __ADDRESSABLE(cpu_mohawk_do_suspend
);
376 void cpu_mohawk_do_resume(void *);
377 __ADDRESSABLE(cpu_mohawk_do_resume
);
378 #endif /* CONFIG_ARM_CPU_SUSPEND */
379 #endif /* CONFIG_CPU_MOHAWK */
381 #ifdef CONFIG_CPU_FEROCEON
382 void cpu_feroceon_proc_init(void);
383 __ADDRESSABLE(cpu_feroceon_proc_init
);
384 void cpu_feroceon_proc_fin(void);
385 __ADDRESSABLE(cpu_feroceon_proc_fin
);
386 void cpu_feroceon_reset(unsigned long addr
, bool hvc
);
387 __ADDRESSABLE(cpu_feroceon_reset
);
388 int cpu_feroceon_do_idle(void);
389 __ADDRESSABLE(cpu_feroceon_do_idle
);
390 void cpu_feroceon_dcache_clean_area(void *addr
, int size
);
391 __ADDRESSABLE(cpu_feroceon_dcache_clean_area
);
392 void cpu_feroceon_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
393 __ADDRESSABLE(cpu_feroceon_switch_mm
);
394 void cpu_feroceon_set_pte_ext(pte_t
*ptep
, pte_t pte
, unsigned int ext
);
395 __ADDRESSABLE(cpu_feroceon_set_pte_ext
);
396 #ifdef CONFIG_ARM_CPU_SUSPEND
397 void cpu_feroceon_do_suspend(void *);
398 __ADDRESSABLE(cpu_feroceon_do_suspend
);
399 void cpu_feroceon_do_resume(void *);
400 __ADDRESSABLE(cpu_feroceon_do_resume
);
401 #endif /* CONFIG_ARM_CPU_SUSPEND */
402 #endif /* CONFIG_CPU_FEROCEON */
404 #if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K)
405 void cpu_v6_proc_init(void);
406 __ADDRESSABLE(cpu_v6_proc_init
);
407 void cpu_v6_proc_fin(void);
408 __ADDRESSABLE(cpu_v6_proc_fin
);
409 void cpu_v6_reset(unsigned long addr
, bool hvc
);
410 __ADDRESSABLE(cpu_v6_reset
);
411 int cpu_v6_do_idle(void);
412 __ADDRESSABLE(cpu_v6_do_idle
);
413 void cpu_v6_dcache_clean_area(void *addr
, int size
);
414 __ADDRESSABLE(cpu_v6_dcache_clean_area
);
415 void cpu_v6_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
416 __ADDRESSABLE(cpu_v6_switch_mm
);
417 void cpu_v6_set_pte_ext(pte_t
*ptep
, pte_t pte
, unsigned int ext
);
418 __ADDRESSABLE(cpu_v6_set_pte_ext
);
419 #ifdef CONFIG_ARM_CPU_SUSPEND
420 void cpu_v6_do_suspend(void *);
421 __ADDRESSABLE(cpu_v6_do_suspend
);
422 void cpu_v6_do_resume(void *);
423 __ADDRESSABLE(cpu_v6_do_resume
);
424 #endif /* CONFIG_ARM_CPU_SUSPEND */
428 void cpu_v7_proc_init(void);
429 __ADDRESSABLE(cpu_v7_proc_init
);
430 void cpu_v7_proc_fin(void);
431 __ADDRESSABLE(cpu_v7_proc_fin
);
432 void cpu_v7_reset(unsigned long addr
, bool hvc
);
433 __ADDRESSABLE(cpu_v7_reset
);
434 int cpu_v7_do_idle(void);
435 __ADDRESSABLE(cpu_v7_do_idle
);
436 #ifdef CONFIG_PJ4B_ERRATA_4742
437 int cpu_pj4b_do_idle(void);
438 __ADDRESSABLE(cpu_pj4b_do_idle
);
440 void cpu_v7_dcache_clean_area(void *addr
, int size
);
441 __ADDRESSABLE(cpu_v7_dcache_clean_area
);
442 void cpu_v7_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
443 /* Special switch_mm() callbacks to work around bugs in v7 */
444 __ADDRESSABLE(cpu_v7_switch_mm
);
445 void cpu_v7_iciallu_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
446 __ADDRESSABLE(cpu_v7_iciallu_switch_mm
);
447 void cpu_v7_bpiall_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
448 __ADDRESSABLE(cpu_v7_bpiall_switch_mm
);
449 #ifdef CONFIG_ARM_LPAE
450 void cpu_v7_set_pte_ext(pte_t
*ptep
, pte_t pte
);
452 void cpu_v7_set_pte_ext(pte_t
*ptep
, pte_t pte
, unsigned int ext
);
454 __ADDRESSABLE(cpu_v7_set_pte_ext
);
455 #ifdef CONFIG_ARM_CPU_SUSPEND
456 void cpu_v7_do_suspend(void *);
457 __ADDRESSABLE(cpu_v7_do_suspend
);
458 void cpu_v7_do_resume(void *);
459 __ADDRESSABLE(cpu_v7_do_resume
);
460 /* Special versions of suspend and resume for the CA9MP cores */
461 void cpu_ca9mp_do_suspend(void *);
462 __ADDRESSABLE(cpu_ca9mp_do_suspend
);
463 void cpu_ca9mp_do_resume(void *);
464 __ADDRESSABLE(cpu_ca9mp_do_resume
);
465 /* Special versions of suspend and resume for the Marvell PJ4B cores */
466 #ifdef CONFIG_CPU_PJ4B
467 void cpu_pj4b_do_suspend(void *);
468 __ADDRESSABLE(cpu_pj4b_do_suspend
);
469 void cpu_pj4b_do_resume(void *);
470 __ADDRESSABLE(cpu_pj4b_do_resume
);
471 #endif /* CONFIG_CPU_PJ4B */
472 #endif /* CONFIG_ARM_CPU_SUSPEND */
473 #endif /* CONFIG_CPU_V7 */
475 #ifdef CONFIG_CPU_V7M
476 void cpu_v7m_proc_init(void);
477 __ADDRESSABLE(cpu_v7m_proc_init
);
478 void cpu_v7m_proc_fin(void);
479 __ADDRESSABLE(cpu_v7m_proc_fin
);
480 void cpu_v7m_reset(unsigned long addr
, bool hvc
);
481 __ADDRESSABLE(cpu_v7m_reset
);
482 int cpu_v7m_do_idle(void);
483 __ADDRESSABLE(cpu_v7m_do_idle
);
484 void cpu_v7m_dcache_clean_area(void *addr
, int size
);
485 __ADDRESSABLE(cpu_v7m_dcache_clean_area
);
486 void cpu_v7m_switch_mm(phys_addr_t pgd_phys
, struct mm_struct
*mm
);
487 __ADDRESSABLE(cpu_v7m_switch_mm
);
488 void cpu_v7m_set_pte_ext(pte_t
*ptep
, pte_t pte
, unsigned int ext
);
489 __ADDRESSABLE(cpu_v7m_set_pte_ext
);
490 #ifdef CONFIG_ARM_CPU_SUSPEND
491 void cpu_v7m_do_suspend(void *);
492 __ADDRESSABLE(cpu_v7m_do_suspend
);
493 void cpu_v7m_do_resume(void *);
494 __ADDRESSABLE(cpu_v7m_do_resume
);
495 #endif /* CONFIG_ARM_CPU_SUSPEND */
496 void cpu_cm7_proc_fin(void);
497 __ADDRESSABLE(cpu_cm7_proc_fin
);
498 void cpu_cm7_dcache_clean_area(void *addr
, int size
);
499 __ADDRESSABLE(cpu_cm7_dcache_clean_area
);
500 #endif /* CONFIG_CPU_V7M */