1193326Sed// SPDX-License-Identifier: GPL-2.0-only
2193326Sed/*
3193326Sed * This file defines C prototypes for the low-level processor assembly functions
4193326Sed * and creates a reference for CFI. This needs to be done for every assembly
5193326Sed * processor ("proc") function that is called from C but does not have a
6193326Sed * corresponding C implementation.
7193326Sed *
8193326Sed * Processors are listed in the order they appear in the Makefile.
9193326Sed *
10193326Sed * Functions are listed if and only if they see use on the target CPU, and in
11193326Sed * the order they are defined in struct processor.
12193326Sed */
13193326Sed#include <asm/proc-fns.h>
14193326Sed
15193326Sed#ifdef CONFIG_CPU_ARM7TDMI
16193326Sedvoid cpu_arm7tdmi_proc_init(void);
17193326Sed__ADDRESSABLE(cpu_arm7tdmi_proc_init);
18193326Sedvoid cpu_arm7tdmi_proc_fin(void);
19193326Sed__ADDRESSABLE(cpu_arm7tdmi_proc_fin);
20198092Srdivackyvoid cpu_arm7tdmi_reset(void);
21193326Sed__ADDRESSABLE(cpu_arm7tdmi_reset);
22193326Sedint cpu_arm7tdmi_do_idle(void);
23193326Sed__ADDRESSABLE(cpu_arm7tdmi_do_idle);
24193326Sedvoid cpu_arm7tdmi_dcache_clean_area(void *addr, int size);
25193326Sed__ADDRESSABLE(cpu_arm7tdmi_dcache_clean_area);
26193326Sedvoid cpu_arm7tdmi_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
27218893Sdim__ADDRESSABLE(cpu_arm7tdmi_switch_mm);
28218893Sdim#endif
29218893Sdim
30218893Sdim#ifdef CONFIG_CPU_ARM720T
31218893Sdimvoid cpu_arm720_proc_init(void);
32193326Sed__ADDRESSABLE(cpu_arm720_proc_init);
33193326Sedvoid cpu_arm720_proc_fin(void);
34218893Sdim__ADDRESSABLE(cpu_arm720_proc_fin);
35226633Sdimvoid cpu_arm720_reset(void);
36224145Sdim__ADDRESSABLE(cpu_arm720_reset);
37193326Sedint cpu_arm720_do_idle(void);
38193326Sed__ADDRESSABLE(cpu_arm720_do_idle);
39193326Sedvoid cpu_arm720_dcache_clean_area(void *addr, int size);
40193326Sed__ADDRESSABLE(cpu_arm720_dcache_clean_area);
41198092Srdivackyvoid cpu_arm720_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
42193326Sed__ADDRESSABLE(cpu_arm720_switch_mm);
43193326Sedvoid cpu_arm720_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
44193326Sed__ADDRESSABLE(cpu_arm720_set_pte_ext);
45193326Sed#endif
46218893Sdim
47218893Sdim#ifdef CONFIG_CPU_ARM740T
48218893Sdimvoid cpu_arm740_proc_init(void);
49218893Sdim__ADDRESSABLE(cpu_arm740_proc_init);
50193326Sedvoid cpu_arm740_proc_fin(void);
51193326Sed__ADDRESSABLE(cpu_arm740_proc_fin);
52193326Sedvoid cpu_arm740_reset(void);
53198092Srdivacky__ADDRESSABLE(cpu_arm740_reset);
54193326Sedint cpu_arm740_do_idle(void);
55198092Srdivacky__ADDRESSABLE(cpu_arm740_do_idle);
56193326Sedvoid cpu_arm740_dcache_clean_area(void *addr, int size);
57193326Sed__ADDRESSABLE(cpu_arm740_dcache_clean_area);
58193326Sedvoid cpu_arm740_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
59193326Sed__ADDRESSABLE(cpu_arm740_switch_mm);
60198092Srdivacky#endif
61193326Sed
62193326Sed#ifdef CONFIG_CPU_ARM9TDMI
63void cpu_arm9tdmi_proc_init(void);
64__ADDRESSABLE(cpu_arm9tdmi_proc_init);
65void cpu_arm9tdmi_proc_fin(void);
66__ADDRESSABLE(cpu_arm9tdmi_proc_fin);
67void cpu_arm9tdmi_reset(void);
68__ADDRESSABLE(cpu_arm9tdmi_reset);
69int cpu_arm9tdmi_do_idle(void);
70__ADDRESSABLE(cpu_arm9tdmi_do_idle);
71void cpu_arm9tdmi_dcache_clean_area(void *addr, int size);
72__ADDRESSABLE(cpu_arm9tdmi_dcache_clean_area);
73void cpu_arm9tdmi_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
74__ADDRESSABLE(cpu_arm9tdmi_switch_mm);
75#endif
76
77#ifdef CONFIG_CPU_ARM920T
78void cpu_arm920_proc_init(void);
79__ADDRESSABLE(cpu_arm920_proc_init);
80void cpu_arm920_proc_fin(void);
81__ADDRESSABLE(cpu_arm920_proc_fin);
82void cpu_arm920_reset(void);
83__ADDRESSABLE(cpu_arm920_reset);
84int cpu_arm920_do_idle(void);
85__ADDRESSABLE(cpu_arm920_do_idle);
86void cpu_arm920_dcache_clean_area(void *addr, int size);
87__ADDRESSABLE(cpu_arm920_dcache_clean_area);
88void cpu_arm920_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
89__ADDRESSABLE(cpu_arm920_switch_mm);
90void 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
93void cpu_arm920_do_suspend(void *);
94__ADDRESSABLE(cpu_arm920_do_suspend);
95void cpu_arm920_do_resume(void *);
96__ADDRESSABLE(cpu_arm920_do_resume);
97#endif /* CONFIG_ARM_CPU_SUSPEND */
98#endif /* CONFIG_CPU_ARM920T */
99
100#ifdef CONFIG_CPU_ARM922T
101void cpu_arm922_proc_init(void);
102__ADDRESSABLE(cpu_arm922_proc_init);
103void cpu_arm922_proc_fin(void);
104__ADDRESSABLE(cpu_arm922_proc_fin);
105void cpu_arm922_reset(void);
106__ADDRESSABLE(cpu_arm922_reset);
107int cpu_arm922_do_idle(void);
108__ADDRESSABLE(cpu_arm922_do_idle);
109void cpu_arm922_dcache_clean_area(void *addr, int size);
110__ADDRESSABLE(cpu_arm922_dcache_clean_area);
111void cpu_arm922_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
112__ADDRESSABLE(cpu_arm922_switch_mm);
113void cpu_arm922_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
114__ADDRESSABLE(cpu_arm922_set_pte_ext);
115#endif
116
117#ifdef CONFIG_CPU_ARM925T
118void cpu_arm925_proc_init(void);
119__ADDRESSABLE(cpu_arm925_proc_init);
120void cpu_arm925_proc_fin(void);
121__ADDRESSABLE(cpu_arm925_proc_fin);
122void cpu_arm925_reset(void);
123__ADDRESSABLE(cpu_arm925_reset);
124int cpu_arm925_do_idle(void);
125__ADDRESSABLE(cpu_arm925_do_idle);
126void cpu_arm925_dcache_clean_area(void *addr, int size);
127__ADDRESSABLE(cpu_arm925_dcache_clean_area);
128void cpu_arm925_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
129__ADDRESSABLE(cpu_arm925_switch_mm);
130void cpu_arm925_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
131__ADDRESSABLE(cpu_arm925_set_pte_ext);
132#endif
133
134#ifdef CONFIG_CPU_ARM926T
135void cpu_arm926_proc_init(void);
136__ADDRESSABLE(cpu_arm926_proc_init);
137void cpu_arm926_proc_fin(void);
138__ADDRESSABLE(cpu_arm926_proc_fin);
139void cpu_arm926_reset(unsigned long addr, bool hvc);
140__ADDRESSABLE(cpu_arm926_reset);
141int cpu_arm926_do_idle(void);
142__ADDRESSABLE(cpu_arm926_do_idle);
143void cpu_arm926_dcache_clean_area(void *addr, int size);
144__ADDRESSABLE(cpu_arm926_dcache_clean_area);
145void cpu_arm926_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
146__ADDRESSABLE(cpu_arm926_switch_mm);
147void 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
150void cpu_arm926_do_suspend(void *);
151__ADDRESSABLE(cpu_arm926_do_suspend);
152void cpu_arm926_do_resume(void *);
153__ADDRESSABLE(cpu_arm926_do_resume);
154#endif /* CONFIG_ARM_CPU_SUSPEND */
155#endif /* CONFIG_CPU_ARM926T */
156
157#ifdef CONFIG_CPU_ARM940T
158void cpu_arm940_proc_init(void);
159__ADDRESSABLE(cpu_arm940_proc_init);
160void cpu_arm940_proc_fin(void);
161__ADDRESSABLE(cpu_arm940_proc_fin);
162void cpu_arm940_reset(void);
163__ADDRESSABLE(cpu_arm940_reset);
164int cpu_arm940_do_idle(void);
165__ADDRESSABLE(cpu_arm940_do_idle);
166void cpu_arm940_dcache_clean_area(void *addr, int size);
167__ADDRESSABLE(cpu_arm940_dcache_clean_area);
168void cpu_arm940_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
169__ADDRESSABLE(cpu_arm940_switch_mm);
170#endif
171
172#ifdef CONFIG_CPU_ARM946E
173void cpu_arm946_proc_init(void);
174__ADDRESSABLE(cpu_arm946_proc_init);
175void cpu_arm946_proc_fin(void);
176__ADDRESSABLE(cpu_arm946_proc_fin);
177void cpu_arm946_reset(void);
178__ADDRESSABLE(cpu_arm946_reset);
179int cpu_arm946_do_idle(void);
180__ADDRESSABLE(cpu_arm946_do_idle);
181void cpu_arm946_dcache_clean_area(void *addr, int size);
182__ADDRESSABLE(cpu_arm946_dcache_clean_area);
183void cpu_arm946_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
184__ADDRESSABLE(cpu_arm946_switch_mm);
185#endif
186
187#ifdef CONFIG_CPU_FA526
188void cpu_fa526_proc_init(void);
189__ADDRESSABLE(cpu_fa526_proc_init);
190void cpu_fa526_proc_fin(void);
191__ADDRESSABLE(cpu_fa526_proc_fin);
192void cpu_fa526_reset(unsigned long addr, bool hvc);
193__ADDRESSABLE(cpu_fa526_reset);
194int cpu_fa526_do_idle(void);
195__ADDRESSABLE(cpu_fa526_do_idle);
196void cpu_fa526_dcache_clean_area(void *addr, int size);
197__ADDRESSABLE(cpu_fa526_dcache_clean_area);
198void cpu_fa526_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
199__ADDRESSABLE(cpu_fa526_switch_mm);
200void cpu_fa526_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
201__ADDRESSABLE(cpu_fa526_set_pte_ext);
202#endif
203
204#ifdef CONFIG_CPU_ARM1020
205void cpu_arm1020_proc_init(void);
206__ADDRESSABLE(cpu_arm1020_proc_init);
207void cpu_arm1020_proc_fin(void);
208__ADDRESSABLE(cpu_arm1020_proc_fin);
209void cpu_arm1020_reset(unsigned long addr, bool hvc);
210__ADDRESSABLE(cpu_arm1020_reset);
211int cpu_arm1020_do_idle(void);
212__ADDRESSABLE(cpu_arm1020_do_idle);
213void cpu_arm1020_dcache_clean_area(void *addr, int size);
214__ADDRESSABLE(cpu_arm1020_dcache_clean_area);
215void cpu_arm1020_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
216__ADDRESSABLE(cpu_arm1020_switch_mm);
217void cpu_arm1020_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
218__ADDRESSABLE(cpu_arm1020_set_pte_ext);
219#endif
220
221#ifdef CONFIG_CPU_ARM1020E
222void cpu_arm1020e_proc_init(void);
223__ADDRESSABLE(cpu_arm1020e_proc_init);
224void cpu_arm1020e_proc_fin(void);
225__ADDRESSABLE(cpu_arm1020e_proc_fin);
226void cpu_arm1020e_reset(unsigned long addr, bool hvc);
227__ADDRESSABLE(cpu_arm1020e_reset);
228int cpu_arm1020e_do_idle(void);
229__ADDRESSABLE(cpu_arm1020e_do_idle);
230void cpu_arm1020e_dcache_clean_area(void *addr, int size);
231__ADDRESSABLE(cpu_arm1020e_dcache_clean_area);
232void cpu_arm1020e_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
233__ADDRESSABLE(cpu_arm1020e_switch_mm);
234void cpu_arm1020e_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
235__ADDRESSABLE(cpu_arm1020e_set_pte_ext);
236#endif
237
238#ifdef CONFIG_CPU_ARM1022
239void cpu_arm1022_proc_init(void);
240__ADDRESSABLE(cpu_arm1022_proc_init);
241void cpu_arm1022_proc_fin(void);
242__ADDRESSABLE(cpu_arm1022_proc_fin);
243void cpu_arm1022_reset(unsigned long addr, bool hvc);
244__ADDRESSABLE(cpu_arm1022_reset);
245int cpu_arm1022_do_idle(void);
246__ADDRESSABLE(cpu_arm1022_do_idle);
247void cpu_arm1022_dcache_clean_area(void *addr, int size);
248__ADDRESSABLE(cpu_arm1022_dcache_clean_area);
249void cpu_arm1022_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
250__ADDRESSABLE(cpu_arm1022_switch_mm);
251void cpu_arm1022_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
252__ADDRESSABLE(cpu_arm1022_set_pte_ext);
253#endif
254
255#ifdef CONFIG_CPU_ARM1026
256void cpu_arm1026_proc_init(void);
257__ADDRESSABLE(cpu_arm1026_proc_init);
258void cpu_arm1026_proc_fin(void);
259__ADDRESSABLE(cpu_arm1026_proc_fin);
260void cpu_arm1026_reset(unsigned long addr, bool hvc);
261__ADDRESSABLE(cpu_arm1026_reset);
262int cpu_arm1026_do_idle(void);
263__ADDRESSABLE(cpu_arm1026_do_idle);
264void cpu_arm1026_dcache_clean_area(void *addr, int size);
265__ADDRESSABLE(cpu_arm1026_dcache_clean_area);
266void cpu_arm1026_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
267__ADDRESSABLE(cpu_arm1026_switch_mm);
268void cpu_arm1026_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
269__ADDRESSABLE(cpu_arm1026_set_pte_ext);
270#endif
271
272#ifdef CONFIG_CPU_SA110
273void cpu_sa110_proc_init(void);
274__ADDRESSABLE(cpu_sa110_proc_init);
275void cpu_sa110_proc_fin(void);
276__ADDRESSABLE(cpu_sa110_proc_fin);
277void cpu_sa110_reset(unsigned long addr, bool hvc);
278__ADDRESSABLE(cpu_sa110_reset);
279int cpu_sa110_do_idle(void);
280__ADDRESSABLE(cpu_sa110_do_idle);
281void cpu_sa110_dcache_clean_area(void *addr, int size);
282__ADDRESSABLE(cpu_sa110_dcache_clean_area);
283void cpu_sa110_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
284__ADDRESSABLE(cpu_sa110_switch_mm);
285void cpu_sa110_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
286__ADDRESSABLE(cpu_sa110_set_pte_ext);
287#endif
288
289#ifdef CONFIG_CPU_SA1100
290void cpu_sa1100_proc_init(void);
291__ADDRESSABLE(cpu_sa1100_proc_init);
292void cpu_sa1100_proc_fin(void);
293__ADDRESSABLE(cpu_sa1100_proc_fin);
294void cpu_sa1100_reset(unsigned long addr, bool hvc);
295__ADDRESSABLE(cpu_sa1100_reset);
296int cpu_sa1100_do_idle(void);
297__ADDRESSABLE(cpu_sa1100_do_idle);
298void cpu_sa1100_dcache_clean_area(void *addr, int size);
299__ADDRESSABLE(cpu_sa1100_dcache_clean_area);
300void cpu_sa1100_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
301__ADDRESSABLE(cpu_sa1100_switch_mm);
302void 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
305void cpu_sa1100_do_suspend(void *);
306__ADDRESSABLE(cpu_sa1100_do_suspend);
307void cpu_sa1100_do_resume(void *);
308__ADDRESSABLE(cpu_sa1100_do_resume);
309#endif /* CONFIG_ARM_CPU_SUSPEND */
310#endif /* CONFIG_CPU_SA1100 */
311
312#ifdef CONFIG_CPU_XSCALE
313void cpu_xscale_proc_init(void);
314__ADDRESSABLE(cpu_xscale_proc_init);
315void cpu_xscale_proc_fin(void);
316__ADDRESSABLE(cpu_xscale_proc_fin);
317void cpu_xscale_reset(unsigned long addr, bool hvc);
318__ADDRESSABLE(cpu_xscale_reset);
319int cpu_xscale_do_idle(void);
320__ADDRESSABLE(cpu_xscale_do_idle);
321void cpu_xscale_dcache_clean_area(void *addr, int size);
322__ADDRESSABLE(cpu_xscale_dcache_clean_area);
323void cpu_xscale_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
324__ADDRESSABLE(cpu_xscale_switch_mm);
325void 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
328void cpu_xscale_do_suspend(void *);
329__ADDRESSABLE(cpu_xscale_do_suspend);
330void cpu_xscale_do_resume(void *);
331__ADDRESSABLE(cpu_xscale_do_resume);
332#endif /* CONFIG_ARM_CPU_SUSPEND */
333#endif /* CONFIG_CPU_XSCALE */
334
335#ifdef CONFIG_CPU_XSC3
336void cpu_xsc3_proc_init(void);
337__ADDRESSABLE(cpu_xsc3_proc_init);
338void cpu_xsc3_proc_fin(void);
339__ADDRESSABLE(cpu_xsc3_proc_fin);
340void cpu_xsc3_reset(unsigned long addr, bool hvc);
341__ADDRESSABLE(cpu_xsc3_reset);
342int cpu_xsc3_do_idle(void);
343__ADDRESSABLE(cpu_xsc3_do_idle);
344void cpu_xsc3_dcache_clean_area(void *addr, int size);
345__ADDRESSABLE(cpu_xsc3_dcache_clean_area);
346void cpu_xsc3_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
347__ADDRESSABLE(cpu_xsc3_switch_mm);
348void 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
351void cpu_xsc3_do_suspend(void *);
352__ADDRESSABLE(cpu_xsc3_do_suspend);
353void cpu_xsc3_do_resume(void *);
354__ADDRESSABLE(cpu_xsc3_do_resume);
355#endif /* CONFIG_ARM_CPU_SUSPEND */
356#endif /* CONFIG_CPU_XSC3 */
357
358#ifdef CONFIG_CPU_MOHAWK
359void cpu_mohawk_proc_init(void);
360__ADDRESSABLE(cpu_mohawk_proc_init);
361void cpu_mohawk_proc_fin(void);
362__ADDRESSABLE(cpu_mohawk_proc_fin);
363void cpu_mohawk_reset(unsigned long addr, bool hvc);
364__ADDRESSABLE(cpu_mohawk_reset);
365int cpu_mohawk_do_idle(void);
366__ADDRESSABLE(cpu_mohawk_do_idle);
367void cpu_mohawk_dcache_clean_area(void *addr, int size);
368__ADDRESSABLE(cpu_mohawk_dcache_clean_area);
369void cpu_mohawk_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
370__ADDRESSABLE(cpu_mohawk_switch_mm);
371void 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
374void cpu_mohawk_do_suspend(void *);
375__ADDRESSABLE(cpu_mohawk_do_suspend);
376void cpu_mohawk_do_resume(void *);
377__ADDRESSABLE(cpu_mohawk_do_resume);
378#endif /* CONFIG_ARM_CPU_SUSPEND */
379#endif /* CONFIG_CPU_MOHAWK */
380
381#ifdef CONFIG_CPU_FEROCEON
382void cpu_feroceon_proc_init(void);
383__ADDRESSABLE(cpu_feroceon_proc_init);
384void cpu_feroceon_proc_fin(void);
385__ADDRESSABLE(cpu_feroceon_proc_fin);
386void cpu_feroceon_reset(unsigned long addr, bool hvc);
387__ADDRESSABLE(cpu_feroceon_reset);
388int cpu_feroceon_do_idle(void);
389__ADDRESSABLE(cpu_feroceon_do_idle);
390void cpu_feroceon_dcache_clean_area(void *addr, int size);
391__ADDRESSABLE(cpu_feroceon_dcache_clean_area);
392void cpu_feroceon_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
393__ADDRESSABLE(cpu_feroceon_switch_mm);
394void 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
397void cpu_feroceon_do_suspend(void *);
398__ADDRESSABLE(cpu_feroceon_do_suspend);
399void cpu_feroceon_do_resume(void *);
400__ADDRESSABLE(cpu_feroceon_do_resume);
401#endif /* CONFIG_ARM_CPU_SUSPEND */
402#endif /* CONFIG_CPU_FEROCEON */
403
404#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K)
405void cpu_v6_proc_init(void);
406__ADDRESSABLE(cpu_v6_proc_init);
407void cpu_v6_proc_fin(void);
408__ADDRESSABLE(cpu_v6_proc_fin);
409void cpu_v6_reset(unsigned long addr, bool hvc);
410__ADDRESSABLE(cpu_v6_reset);
411int cpu_v6_do_idle(void);
412__ADDRESSABLE(cpu_v6_do_idle);
413void cpu_v6_dcache_clean_area(void *addr, int size);
414__ADDRESSABLE(cpu_v6_dcache_clean_area);
415void cpu_v6_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
416__ADDRESSABLE(cpu_v6_switch_mm);
417void 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
420void cpu_v6_do_suspend(void *);
421__ADDRESSABLE(cpu_v6_do_suspend);
422void cpu_v6_do_resume(void *);
423__ADDRESSABLE(cpu_v6_do_resume);
424#endif /* CONFIG_ARM_CPU_SUSPEND */
425#endif /* CPU_V6 */
426
427#ifdef CONFIG_CPU_V7
428void cpu_v7_proc_init(void);
429__ADDRESSABLE(cpu_v7_proc_init);
430void cpu_v7_proc_fin(void);
431__ADDRESSABLE(cpu_v7_proc_fin);
432void cpu_v7_reset(void);
433__ADDRESSABLE(cpu_v7_reset);
434int cpu_v7_do_idle(void);
435__ADDRESSABLE(cpu_v7_do_idle);
436#ifdef CONFIG_PJ4B_ERRATA_4742
437int cpu_pj4b_do_idle(void);
438__ADDRESSABLE(cpu_pj4b_do_idle);
439#endif
440void cpu_v7_dcache_clean_area(void *addr, int size);
441__ADDRESSABLE(cpu_v7_dcache_clean_area);
442void 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);
445void cpu_v7_iciallu_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
446__ADDRESSABLE(cpu_v7_iciallu_switch_mm);
447void 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
450void cpu_v7_set_pte_ext(pte_t *ptep, pte_t pte);
451#else
452void cpu_v7_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
453#endif
454__ADDRESSABLE(cpu_v7_set_pte_ext);
455#ifdef CONFIG_ARM_CPU_SUSPEND
456void cpu_v7_do_suspend(void *);
457__ADDRESSABLE(cpu_v7_do_suspend);
458void cpu_v7_do_resume(void *);
459__ADDRESSABLE(cpu_v7_do_resume);
460/* Special versions of suspend and resume for the CA9MP cores */
461void cpu_ca9mp_do_suspend(void *);
462__ADDRESSABLE(cpu_ca9mp_do_suspend);
463void 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
467void cpu_pj4b_do_suspend(void *);
468__ADDRESSABLE(cpu_pj4b_do_suspend);
469void 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 */
474
475#ifdef CONFIG_CPU_V7M
476void cpu_v7m_proc_init(void);
477__ADDRESSABLE(cpu_v7m_proc_init);
478void cpu_v7m_proc_fin(void);
479__ADDRESSABLE(cpu_v7m_proc_fin);
480void cpu_v7m_reset(unsigned long addr, bool hvc);
481__ADDRESSABLE(cpu_v7m_reset);
482int cpu_v7m_do_idle(void);
483__ADDRESSABLE(cpu_v7m_do_idle);
484void cpu_v7m_dcache_clean_area(void *addr, int size);
485__ADDRESSABLE(cpu_v7m_dcache_clean_area);
486void cpu_v7m_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
487__ADDRESSABLE(cpu_v7m_switch_mm);
488void 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
491void cpu_v7m_do_suspend(void *);
492__ADDRESSABLE(cpu_v7m_do_suspend);
493void cpu_v7m_do_resume(void *);
494__ADDRESSABLE(cpu_v7m_do_resume);
495#endif /* CONFIG_ARM_CPU_SUSPEND */
496void cpu_cm7_proc_fin(void);
497__ADDRESSABLE(cpu_cm7_proc_fin);
498void cpu_cm7_dcache_clean_area(void *addr, int size);
499__ADDRESSABLE(cpu_cm7_dcache_clean_area);
500#endif /* CONFIG_CPU_V7M */
501