xref: /linux/arch/arm/mm/proc.c (revision 01a620d491592ead12eca039fe1c9e74908c35cf)
1393999faSLinus Walleij // SPDX-License-Identifier: GPL-2.0-only
2393999faSLinus Walleij /*
3393999faSLinus Walleij  * This file defines C prototypes for the low-level processor assembly functions
4393999faSLinus Walleij  * and creates a reference for CFI. This needs to be done for every assembly
5393999faSLinus Walleij  * processor ("proc") function that is called from C but does not have a
6393999faSLinus Walleij  * corresponding C implementation.
7393999faSLinus Walleij  *
8393999faSLinus Walleij  * Processors are listed in the order they appear in the Makefile.
9393999faSLinus Walleij  *
10393999faSLinus Walleij  * Functions are listed if and only if they see use on the target CPU, and in
11393999faSLinus Walleij  * the order they are defined in struct processor.
12393999faSLinus Walleij  */
13393999faSLinus Walleij #include <asm/proc-fns.h>
14393999faSLinus Walleij 
15393999faSLinus Walleij #ifdef CONFIG_CPU_ARM7TDMI
16393999faSLinus Walleij void cpu_arm7tdmi_proc_init(void);
17393999faSLinus Walleij __ADDRESSABLE(cpu_arm7tdmi_proc_init);
18393999faSLinus Walleij void cpu_arm7tdmi_proc_fin(void);
19393999faSLinus Walleij __ADDRESSABLE(cpu_arm7tdmi_proc_fin);
20*657a292dSLinus Walleij void cpu_arm7tdmi_reset(unsigned long addr, bool hvc);
21393999faSLinus Walleij __ADDRESSABLE(cpu_arm7tdmi_reset);
22393999faSLinus Walleij int cpu_arm7tdmi_do_idle(void);
23393999faSLinus Walleij __ADDRESSABLE(cpu_arm7tdmi_do_idle);
24393999faSLinus Walleij void cpu_arm7tdmi_dcache_clean_area(void *addr, int size);
25393999faSLinus Walleij __ADDRESSABLE(cpu_arm7tdmi_dcache_clean_area);
26393999faSLinus Walleij void cpu_arm7tdmi_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
27393999faSLinus Walleij __ADDRESSABLE(cpu_arm7tdmi_switch_mm);
28393999faSLinus Walleij #endif
29393999faSLinus Walleij 
30393999faSLinus Walleij #ifdef CONFIG_CPU_ARM720T
31393999faSLinus Walleij void cpu_arm720_proc_init(void);
32393999faSLinus Walleij __ADDRESSABLE(cpu_arm720_proc_init);
33393999faSLinus Walleij void cpu_arm720_proc_fin(void);
34393999faSLinus Walleij __ADDRESSABLE(cpu_arm720_proc_fin);
35*657a292dSLinus Walleij void cpu_arm720_reset(unsigned long addr, bool hvc);
36393999faSLinus Walleij __ADDRESSABLE(cpu_arm720_reset);
37393999faSLinus Walleij int cpu_arm720_do_idle(void);
38393999faSLinus Walleij __ADDRESSABLE(cpu_arm720_do_idle);
39393999faSLinus Walleij void cpu_arm720_dcache_clean_area(void *addr, int size);
40393999faSLinus Walleij __ADDRESSABLE(cpu_arm720_dcache_clean_area);
41393999faSLinus Walleij void cpu_arm720_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
42393999faSLinus Walleij __ADDRESSABLE(cpu_arm720_switch_mm);
43393999faSLinus Walleij void cpu_arm720_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
44393999faSLinus Walleij __ADDRESSABLE(cpu_arm720_set_pte_ext);
45393999faSLinus Walleij #endif
46393999faSLinus Walleij 
47393999faSLinus Walleij #ifdef CONFIG_CPU_ARM740T
48393999faSLinus Walleij void cpu_arm740_proc_init(void);
49393999faSLinus Walleij __ADDRESSABLE(cpu_arm740_proc_init);
50393999faSLinus Walleij void cpu_arm740_proc_fin(void);
51393999faSLinus Walleij __ADDRESSABLE(cpu_arm740_proc_fin);
52*657a292dSLinus Walleij void cpu_arm740_reset(unsigned long addr, bool hvc);
53393999faSLinus Walleij __ADDRESSABLE(cpu_arm740_reset);
54393999faSLinus Walleij int cpu_arm740_do_idle(void);
55393999faSLinus Walleij __ADDRESSABLE(cpu_arm740_do_idle);
56393999faSLinus Walleij void cpu_arm740_dcache_clean_area(void *addr, int size);
57393999faSLinus Walleij __ADDRESSABLE(cpu_arm740_dcache_clean_area);
58393999faSLinus Walleij void cpu_arm740_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
59393999faSLinus Walleij __ADDRESSABLE(cpu_arm740_switch_mm);
60393999faSLinus Walleij #endif
61393999faSLinus Walleij 
62393999faSLinus Walleij #ifdef CONFIG_CPU_ARM9TDMI
63393999faSLinus Walleij void cpu_arm9tdmi_proc_init(void);
64393999faSLinus Walleij __ADDRESSABLE(cpu_arm9tdmi_proc_init);
65393999faSLinus Walleij void cpu_arm9tdmi_proc_fin(void);
66393999faSLinus Walleij __ADDRESSABLE(cpu_arm9tdmi_proc_fin);
67*657a292dSLinus Walleij void cpu_arm9tdmi_reset(unsigned long addr, bool hvc);
68393999faSLinus Walleij __ADDRESSABLE(cpu_arm9tdmi_reset);
69393999faSLinus Walleij int cpu_arm9tdmi_do_idle(void);
70393999faSLinus Walleij __ADDRESSABLE(cpu_arm9tdmi_do_idle);
71393999faSLinus Walleij void cpu_arm9tdmi_dcache_clean_area(void *addr, int size);
72393999faSLinus Walleij __ADDRESSABLE(cpu_arm9tdmi_dcache_clean_area);
73393999faSLinus Walleij void cpu_arm9tdmi_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
74393999faSLinus Walleij __ADDRESSABLE(cpu_arm9tdmi_switch_mm);
75393999faSLinus Walleij #endif
76393999faSLinus Walleij 
77393999faSLinus Walleij #ifdef CONFIG_CPU_ARM920T
78393999faSLinus Walleij void cpu_arm920_proc_init(void);
79393999faSLinus Walleij __ADDRESSABLE(cpu_arm920_proc_init);
80393999faSLinus Walleij void cpu_arm920_proc_fin(void);
81393999faSLinus Walleij __ADDRESSABLE(cpu_arm920_proc_fin);
82*657a292dSLinus Walleij void cpu_arm920_reset(unsigned long addr, bool hvc);
83393999faSLinus Walleij __ADDRESSABLE(cpu_arm920_reset);
84393999faSLinus Walleij int cpu_arm920_do_idle(void);
85393999faSLinus Walleij __ADDRESSABLE(cpu_arm920_do_idle);
86393999faSLinus Walleij void cpu_arm920_dcache_clean_area(void *addr, int size);
87393999faSLinus Walleij __ADDRESSABLE(cpu_arm920_dcache_clean_area);
88393999faSLinus Walleij void cpu_arm920_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
89393999faSLinus Walleij __ADDRESSABLE(cpu_arm920_switch_mm);
90393999faSLinus Walleij void cpu_arm920_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
91393999faSLinus Walleij __ADDRESSABLE(cpu_arm920_set_pte_ext);
92393999faSLinus Walleij #ifdef CONFIG_ARM_CPU_SUSPEND
93393999faSLinus Walleij void cpu_arm920_do_suspend(void *);
94393999faSLinus Walleij __ADDRESSABLE(cpu_arm920_do_suspend);
95393999faSLinus Walleij void cpu_arm920_do_resume(void *);
96393999faSLinus Walleij __ADDRESSABLE(cpu_arm920_do_resume);
97393999faSLinus Walleij #endif /* CONFIG_ARM_CPU_SUSPEND */
98393999faSLinus Walleij #endif /* CONFIG_CPU_ARM920T */
99393999faSLinus Walleij 
100393999faSLinus Walleij #ifdef CONFIG_CPU_ARM922T
101393999faSLinus Walleij void cpu_arm922_proc_init(void);
102393999faSLinus Walleij __ADDRESSABLE(cpu_arm922_proc_init);
103393999faSLinus Walleij void cpu_arm922_proc_fin(void);
104393999faSLinus Walleij __ADDRESSABLE(cpu_arm922_proc_fin);
105*657a292dSLinus Walleij void cpu_arm922_reset(unsigned long addr, bool hvc);
106393999faSLinus Walleij __ADDRESSABLE(cpu_arm922_reset);
107393999faSLinus Walleij int cpu_arm922_do_idle(void);
108393999faSLinus Walleij __ADDRESSABLE(cpu_arm922_do_idle);
109393999faSLinus Walleij void cpu_arm922_dcache_clean_area(void *addr, int size);
110393999faSLinus Walleij __ADDRESSABLE(cpu_arm922_dcache_clean_area);
111393999faSLinus Walleij void cpu_arm922_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
112393999faSLinus Walleij __ADDRESSABLE(cpu_arm922_switch_mm);
113393999faSLinus Walleij void cpu_arm922_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
114393999faSLinus Walleij __ADDRESSABLE(cpu_arm922_set_pte_ext);
115393999faSLinus Walleij #endif
116393999faSLinus Walleij 
117393999faSLinus Walleij #ifdef CONFIG_CPU_ARM925T
118393999faSLinus Walleij void cpu_arm925_proc_init(void);
119393999faSLinus Walleij __ADDRESSABLE(cpu_arm925_proc_init);
120393999faSLinus Walleij void cpu_arm925_proc_fin(void);
121393999faSLinus Walleij __ADDRESSABLE(cpu_arm925_proc_fin);
122*657a292dSLinus Walleij void cpu_arm925_reset(unsigned long addr, bool hvc);
123393999faSLinus Walleij __ADDRESSABLE(cpu_arm925_reset);
124393999faSLinus Walleij int cpu_arm925_do_idle(void);
125393999faSLinus Walleij __ADDRESSABLE(cpu_arm925_do_idle);
126393999faSLinus Walleij void cpu_arm925_dcache_clean_area(void *addr, int size);
127393999faSLinus Walleij __ADDRESSABLE(cpu_arm925_dcache_clean_area);
128393999faSLinus Walleij void cpu_arm925_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
129393999faSLinus Walleij __ADDRESSABLE(cpu_arm925_switch_mm);
130393999faSLinus Walleij void cpu_arm925_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
131393999faSLinus Walleij __ADDRESSABLE(cpu_arm925_set_pte_ext);
132393999faSLinus Walleij #endif
133393999faSLinus Walleij 
134393999faSLinus Walleij #ifdef CONFIG_CPU_ARM926T
135393999faSLinus Walleij void cpu_arm926_proc_init(void);
136393999faSLinus Walleij __ADDRESSABLE(cpu_arm926_proc_init);
137393999faSLinus Walleij void cpu_arm926_proc_fin(void);
138393999faSLinus Walleij __ADDRESSABLE(cpu_arm926_proc_fin);
139393999faSLinus Walleij void cpu_arm926_reset(unsigned long addr, bool hvc);
140393999faSLinus Walleij __ADDRESSABLE(cpu_arm926_reset);
141393999faSLinus Walleij int cpu_arm926_do_idle(void);
142393999faSLinus Walleij __ADDRESSABLE(cpu_arm926_do_idle);
143393999faSLinus Walleij void cpu_arm926_dcache_clean_area(void *addr, int size);
144393999faSLinus Walleij __ADDRESSABLE(cpu_arm926_dcache_clean_area);
145393999faSLinus Walleij void cpu_arm926_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
146393999faSLinus Walleij __ADDRESSABLE(cpu_arm926_switch_mm);
147393999faSLinus Walleij void cpu_arm926_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
148393999faSLinus Walleij __ADDRESSABLE(cpu_arm926_set_pte_ext);
149393999faSLinus Walleij #ifdef CONFIG_ARM_CPU_SUSPEND
150393999faSLinus Walleij void cpu_arm926_do_suspend(void *);
151393999faSLinus Walleij __ADDRESSABLE(cpu_arm926_do_suspend);
152393999faSLinus Walleij void cpu_arm926_do_resume(void *);
153393999faSLinus Walleij __ADDRESSABLE(cpu_arm926_do_resume);
154393999faSLinus Walleij #endif /* CONFIG_ARM_CPU_SUSPEND */
155393999faSLinus Walleij #endif /* CONFIG_CPU_ARM926T */
156393999faSLinus Walleij 
157393999faSLinus Walleij #ifdef CONFIG_CPU_ARM940T
158393999faSLinus Walleij void cpu_arm940_proc_init(void);
159393999faSLinus Walleij __ADDRESSABLE(cpu_arm940_proc_init);
160393999faSLinus Walleij void cpu_arm940_proc_fin(void);
161393999faSLinus Walleij __ADDRESSABLE(cpu_arm940_proc_fin);
162*657a292dSLinus Walleij void cpu_arm940_reset(unsigned long addr, bool hvc);
163393999faSLinus Walleij __ADDRESSABLE(cpu_arm940_reset);
164393999faSLinus Walleij int cpu_arm940_do_idle(void);
165393999faSLinus Walleij __ADDRESSABLE(cpu_arm940_do_idle);
166393999faSLinus Walleij void cpu_arm940_dcache_clean_area(void *addr, int size);
167393999faSLinus Walleij __ADDRESSABLE(cpu_arm940_dcache_clean_area);
168393999faSLinus Walleij void cpu_arm940_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
169393999faSLinus Walleij __ADDRESSABLE(cpu_arm940_switch_mm);
170393999faSLinus Walleij #endif
171393999faSLinus Walleij 
172393999faSLinus Walleij #ifdef CONFIG_CPU_ARM946E
173393999faSLinus Walleij void cpu_arm946_proc_init(void);
174393999faSLinus Walleij __ADDRESSABLE(cpu_arm946_proc_init);
175393999faSLinus Walleij void cpu_arm946_proc_fin(void);
176393999faSLinus Walleij __ADDRESSABLE(cpu_arm946_proc_fin);
177*657a292dSLinus Walleij void cpu_arm946_reset(unsigned long addr, bool hvc);
178393999faSLinus Walleij __ADDRESSABLE(cpu_arm946_reset);
179393999faSLinus Walleij int cpu_arm946_do_idle(void);
180393999faSLinus Walleij __ADDRESSABLE(cpu_arm946_do_idle);
181393999faSLinus Walleij void cpu_arm946_dcache_clean_area(void *addr, int size);
182393999faSLinus Walleij __ADDRESSABLE(cpu_arm946_dcache_clean_area);
183393999faSLinus Walleij void cpu_arm946_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
184393999faSLinus Walleij __ADDRESSABLE(cpu_arm946_switch_mm);
185393999faSLinus Walleij #endif
186393999faSLinus Walleij 
187393999faSLinus Walleij #ifdef CONFIG_CPU_FA526
188393999faSLinus Walleij void cpu_fa526_proc_init(void);
189393999faSLinus Walleij __ADDRESSABLE(cpu_fa526_proc_init);
190393999faSLinus Walleij void cpu_fa526_proc_fin(void);
191393999faSLinus Walleij __ADDRESSABLE(cpu_fa526_proc_fin);
192393999faSLinus Walleij void cpu_fa526_reset(unsigned long addr, bool hvc);
193393999faSLinus Walleij __ADDRESSABLE(cpu_fa526_reset);
194393999faSLinus Walleij int cpu_fa526_do_idle(void);
195393999faSLinus Walleij __ADDRESSABLE(cpu_fa526_do_idle);
196393999faSLinus Walleij void cpu_fa526_dcache_clean_area(void *addr, int size);
197393999faSLinus Walleij __ADDRESSABLE(cpu_fa526_dcache_clean_area);
198393999faSLinus Walleij void cpu_fa526_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
199393999faSLinus Walleij __ADDRESSABLE(cpu_fa526_switch_mm);
200393999faSLinus Walleij void cpu_fa526_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
201393999faSLinus Walleij __ADDRESSABLE(cpu_fa526_set_pte_ext);
202393999faSLinus Walleij #endif
203393999faSLinus Walleij 
204393999faSLinus Walleij #ifdef CONFIG_CPU_ARM1020
205393999faSLinus Walleij void cpu_arm1020_proc_init(void);
206393999faSLinus Walleij __ADDRESSABLE(cpu_arm1020_proc_init);
207393999faSLinus Walleij void cpu_arm1020_proc_fin(void);
208393999faSLinus Walleij __ADDRESSABLE(cpu_arm1020_proc_fin);
209393999faSLinus Walleij void cpu_arm1020_reset(unsigned long addr, bool hvc);
210393999faSLinus Walleij __ADDRESSABLE(cpu_arm1020_reset);
211393999faSLinus Walleij int cpu_arm1020_do_idle(void);
212393999faSLinus Walleij __ADDRESSABLE(cpu_arm1020_do_idle);
213393999faSLinus Walleij void cpu_arm1020_dcache_clean_area(void *addr, int size);
214393999faSLinus Walleij __ADDRESSABLE(cpu_arm1020_dcache_clean_area);
215393999faSLinus Walleij void cpu_arm1020_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
216393999faSLinus Walleij __ADDRESSABLE(cpu_arm1020_switch_mm);
217393999faSLinus Walleij void cpu_arm1020_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
218393999faSLinus Walleij __ADDRESSABLE(cpu_arm1020_set_pte_ext);
219393999faSLinus Walleij #endif
220393999faSLinus Walleij 
221393999faSLinus Walleij #ifdef CONFIG_CPU_ARM1020E
222393999faSLinus Walleij void cpu_arm1020e_proc_init(void);
223393999faSLinus Walleij __ADDRESSABLE(cpu_arm1020e_proc_init);
224393999faSLinus Walleij void cpu_arm1020e_proc_fin(void);
225393999faSLinus Walleij __ADDRESSABLE(cpu_arm1020e_proc_fin);
226393999faSLinus Walleij void cpu_arm1020e_reset(unsigned long addr, bool hvc);
227393999faSLinus Walleij __ADDRESSABLE(cpu_arm1020e_reset);
228393999faSLinus Walleij int cpu_arm1020e_do_idle(void);
229393999faSLinus Walleij __ADDRESSABLE(cpu_arm1020e_do_idle);
230393999faSLinus Walleij void cpu_arm1020e_dcache_clean_area(void *addr, int size);
231393999faSLinus Walleij __ADDRESSABLE(cpu_arm1020e_dcache_clean_area);
232393999faSLinus Walleij void cpu_arm1020e_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
233393999faSLinus Walleij __ADDRESSABLE(cpu_arm1020e_switch_mm);
234393999faSLinus Walleij void cpu_arm1020e_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
235393999faSLinus Walleij __ADDRESSABLE(cpu_arm1020e_set_pte_ext);
236393999faSLinus Walleij #endif
237393999faSLinus Walleij 
238393999faSLinus Walleij #ifdef CONFIG_CPU_ARM1022
239393999faSLinus Walleij void cpu_arm1022_proc_init(void);
240393999faSLinus Walleij __ADDRESSABLE(cpu_arm1022_proc_init);
241393999faSLinus Walleij void cpu_arm1022_proc_fin(void);
242393999faSLinus Walleij __ADDRESSABLE(cpu_arm1022_proc_fin);
243393999faSLinus Walleij void cpu_arm1022_reset(unsigned long addr, bool hvc);
244393999faSLinus Walleij __ADDRESSABLE(cpu_arm1022_reset);
245393999faSLinus Walleij int cpu_arm1022_do_idle(void);
246393999faSLinus Walleij __ADDRESSABLE(cpu_arm1022_do_idle);
247393999faSLinus Walleij void cpu_arm1022_dcache_clean_area(void *addr, int size);
248393999faSLinus Walleij __ADDRESSABLE(cpu_arm1022_dcache_clean_area);
249393999faSLinus Walleij void cpu_arm1022_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
250393999faSLinus Walleij __ADDRESSABLE(cpu_arm1022_switch_mm);
251393999faSLinus Walleij void cpu_arm1022_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
252393999faSLinus Walleij __ADDRESSABLE(cpu_arm1022_set_pte_ext);
253393999faSLinus Walleij #endif
254393999faSLinus Walleij 
255393999faSLinus Walleij #ifdef CONFIG_CPU_ARM1026
256393999faSLinus Walleij void cpu_arm1026_proc_init(void);
257393999faSLinus Walleij __ADDRESSABLE(cpu_arm1026_proc_init);
258393999faSLinus Walleij void cpu_arm1026_proc_fin(void);
259393999faSLinus Walleij __ADDRESSABLE(cpu_arm1026_proc_fin);
260393999faSLinus Walleij void cpu_arm1026_reset(unsigned long addr, bool hvc);
261393999faSLinus Walleij __ADDRESSABLE(cpu_arm1026_reset);
262393999faSLinus Walleij int cpu_arm1026_do_idle(void);
263393999faSLinus Walleij __ADDRESSABLE(cpu_arm1026_do_idle);
264393999faSLinus Walleij void cpu_arm1026_dcache_clean_area(void *addr, int size);
265393999faSLinus Walleij __ADDRESSABLE(cpu_arm1026_dcache_clean_area);
266393999faSLinus Walleij void cpu_arm1026_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
267393999faSLinus Walleij __ADDRESSABLE(cpu_arm1026_switch_mm);
268393999faSLinus Walleij void cpu_arm1026_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
269393999faSLinus Walleij __ADDRESSABLE(cpu_arm1026_set_pte_ext);
270393999faSLinus Walleij #endif
271393999faSLinus Walleij 
272393999faSLinus Walleij #ifdef CONFIG_CPU_SA110
273393999faSLinus Walleij void cpu_sa110_proc_init(void);
274393999faSLinus Walleij __ADDRESSABLE(cpu_sa110_proc_init);
275393999faSLinus Walleij void cpu_sa110_proc_fin(void);
276393999faSLinus Walleij __ADDRESSABLE(cpu_sa110_proc_fin);
277393999faSLinus Walleij void cpu_sa110_reset(unsigned long addr, bool hvc);
278393999faSLinus Walleij __ADDRESSABLE(cpu_sa110_reset);
279393999faSLinus Walleij int cpu_sa110_do_idle(void);
280393999faSLinus Walleij __ADDRESSABLE(cpu_sa110_do_idle);
281393999faSLinus Walleij void cpu_sa110_dcache_clean_area(void *addr, int size);
282393999faSLinus Walleij __ADDRESSABLE(cpu_sa110_dcache_clean_area);
283393999faSLinus Walleij void cpu_sa110_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
284393999faSLinus Walleij __ADDRESSABLE(cpu_sa110_switch_mm);
285393999faSLinus Walleij void cpu_sa110_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
286393999faSLinus Walleij __ADDRESSABLE(cpu_sa110_set_pte_ext);
287393999faSLinus Walleij #endif
288393999faSLinus Walleij 
289393999faSLinus Walleij #ifdef CONFIG_CPU_SA1100
290393999faSLinus Walleij void cpu_sa1100_proc_init(void);
291393999faSLinus Walleij __ADDRESSABLE(cpu_sa1100_proc_init);
292393999faSLinus Walleij void cpu_sa1100_proc_fin(void);
293393999faSLinus Walleij __ADDRESSABLE(cpu_sa1100_proc_fin);
294393999faSLinus Walleij void cpu_sa1100_reset(unsigned long addr, bool hvc);
295393999faSLinus Walleij __ADDRESSABLE(cpu_sa1100_reset);
296393999faSLinus Walleij int cpu_sa1100_do_idle(void);
297393999faSLinus Walleij __ADDRESSABLE(cpu_sa1100_do_idle);
298393999faSLinus Walleij void cpu_sa1100_dcache_clean_area(void *addr, int size);
299393999faSLinus Walleij __ADDRESSABLE(cpu_sa1100_dcache_clean_area);
300393999faSLinus Walleij void cpu_sa1100_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
301393999faSLinus Walleij __ADDRESSABLE(cpu_sa1100_switch_mm);
302393999faSLinus Walleij void cpu_sa1100_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
303393999faSLinus Walleij __ADDRESSABLE(cpu_sa1100_set_pte_ext);
304393999faSLinus Walleij #ifdef CONFIG_ARM_CPU_SUSPEND
305393999faSLinus Walleij void cpu_sa1100_do_suspend(void *);
306393999faSLinus Walleij __ADDRESSABLE(cpu_sa1100_do_suspend);
307393999faSLinus Walleij void cpu_sa1100_do_resume(void *);
308393999faSLinus Walleij __ADDRESSABLE(cpu_sa1100_do_resume);
309393999faSLinus Walleij #endif /* CONFIG_ARM_CPU_SUSPEND */
310393999faSLinus Walleij #endif /* CONFIG_CPU_SA1100 */
311393999faSLinus Walleij 
312393999faSLinus Walleij #ifdef CONFIG_CPU_XSCALE
313393999faSLinus Walleij void cpu_xscale_proc_init(void);
314393999faSLinus Walleij __ADDRESSABLE(cpu_xscale_proc_init);
315393999faSLinus Walleij void cpu_xscale_proc_fin(void);
316393999faSLinus Walleij __ADDRESSABLE(cpu_xscale_proc_fin);
317393999faSLinus Walleij void cpu_xscale_reset(unsigned long addr, bool hvc);
318393999faSLinus Walleij __ADDRESSABLE(cpu_xscale_reset);
319393999faSLinus Walleij int cpu_xscale_do_idle(void);
320393999faSLinus Walleij __ADDRESSABLE(cpu_xscale_do_idle);
321393999faSLinus Walleij void cpu_xscale_dcache_clean_area(void *addr, int size);
322393999faSLinus Walleij __ADDRESSABLE(cpu_xscale_dcache_clean_area);
323393999faSLinus Walleij void cpu_xscale_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
324393999faSLinus Walleij __ADDRESSABLE(cpu_xscale_switch_mm);
325393999faSLinus Walleij void cpu_xscale_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
326393999faSLinus Walleij __ADDRESSABLE(cpu_xscale_set_pte_ext);
327393999faSLinus Walleij #ifdef CONFIG_ARM_CPU_SUSPEND
328393999faSLinus Walleij void cpu_xscale_do_suspend(void *);
329393999faSLinus Walleij __ADDRESSABLE(cpu_xscale_do_suspend);
330393999faSLinus Walleij void cpu_xscale_do_resume(void *);
331393999faSLinus Walleij __ADDRESSABLE(cpu_xscale_do_resume);
332393999faSLinus Walleij #endif /* CONFIG_ARM_CPU_SUSPEND */
333393999faSLinus Walleij #endif /* CONFIG_CPU_XSCALE */
334393999faSLinus Walleij 
335393999faSLinus Walleij #ifdef CONFIG_CPU_XSC3
336393999faSLinus Walleij void cpu_xsc3_proc_init(void);
337393999faSLinus Walleij __ADDRESSABLE(cpu_xsc3_proc_init);
338393999faSLinus Walleij void cpu_xsc3_proc_fin(void);
339393999faSLinus Walleij __ADDRESSABLE(cpu_xsc3_proc_fin);
340393999faSLinus Walleij void cpu_xsc3_reset(unsigned long addr, bool hvc);
341393999faSLinus Walleij __ADDRESSABLE(cpu_xsc3_reset);
342393999faSLinus Walleij int cpu_xsc3_do_idle(void);
343393999faSLinus Walleij __ADDRESSABLE(cpu_xsc3_do_idle);
344393999faSLinus Walleij void cpu_xsc3_dcache_clean_area(void *addr, int size);
345393999faSLinus Walleij __ADDRESSABLE(cpu_xsc3_dcache_clean_area);
346393999faSLinus Walleij void cpu_xsc3_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
347393999faSLinus Walleij __ADDRESSABLE(cpu_xsc3_switch_mm);
348393999faSLinus Walleij void cpu_xsc3_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
349393999faSLinus Walleij __ADDRESSABLE(cpu_xsc3_set_pte_ext);
350393999faSLinus Walleij #ifdef CONFIG_ARM_CPU_SUSPEND
351393999faSLinus Walleij void cpu_xsc3_do_suspend(void *);
352393999faSLinus Walleij __ADDRESSABLE(cpu_xsc3_do_suspend);
353393999faSLinus Walleij void cpu_xsc3_do_resume(void *);
354393999faSLinus Walleij __ADDRESSABLE(cpu_xsc3_do_resume);
355393999faSLinus Walleij #endif /* CONFIG_ARM_CPU_SUSPEND */
356393999faSLinus Walleij #endif /* CONFIG_CPU_XSC3 */
357393999faSLinus Walleij 
358393999faSLinus Walleij #ifdef CONFIG_CPU_MOHAWK
359393999faSLinus Walleij void cpu_mohawk_proc_init(void);
360393999faSLinus Walleij __ADDRESSABLE(cpu_mohawk_proc_init);
361393999faSLinus Walleij void cpu_mohawk_proc_fin(void);
362393999faSLinus Walleij __ADDRESSABLE(cpu_mohawk_proc_fin);
363393999faSLinus Walleij void cpu_mohawk_reset(unsigned long addr, bool hvc);
364393999faSLinus Walleij __ADDRESSABLE(cpu_mohawk_reset);
365393999faSLinus Walleij int cpu_mohawk_do_idle(void);
366393999faSLinus Walleij __ADDRESSABLE(cpu_mohawk_do_idle);
367393999faSLinus Walleij void cpu_mohawk_dcache_clean_area(void *addr, int size);
368393999faSLinus Walleij __ADDRESSABLE(cpu_mohawk_dcache_clean_area);
369393999faSLinus Walleij void cpu_mohawk_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
370393999faSLinus Walleij __ADDRESSABLE(cpu_mohawk_switch_mm);
371393999faSLinus Walleij void cpu_mohawk_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
372393999faSLinus Walleij __ADDRESSABLE(cpu_mohawk_set_pte_ext);
373393999faSLinus Walleij #ifdef CONFIG_ARM_CPU_SUSPEND
374393999faSLinus Walleij void cpu_mohawk_do_suspend(void *);
375393999faSLinus Walleij __ADDRESSABLE(cpu_mohawk_do_suspend);
376393999faSLinus Walleij void cpu_mohawk_do_resume(void *);
377393999faSLinus Walleij __ADDRESSABLE(cpu_mohawk_do_resume);
378393999faSLinus Walleij #endif /* CONFIG_ARM_CPU_SUSPEND */
379393999faSLinus Walleij #endif /* CONFIG_CPU_MOHAWK */
380393999faSLinus Walleij 
381393999faSLinus Walleij #ifdef CONFIG_CPU_FEROCEON
382393999faSLinus Walleij void cpu_feroceon_proc_init(void);
383393999faSLinus Walleij __ADDRESSABLE(cpu_feroceon_proc_init);
384393999faSLinus Walleij void cpu_feroceon_proc_fin(void);
385393999faSLinus Walleij __ADDRESSABLE(cpu_feroceon_proc_fin);
386393999faSLinus Walleij void cpu_feroceon_reset(unsigned long addr, bool hvc);
387393999faSLinus Walleij __ADDRESSABLE(cpu_feroceon_reset);
388393999faSLinus Walleij int cpu_feroceon_do_idle(void);
389393999faSLinus Walleij __ADDRESSABLE(cpu_feroceon_do_idle);
390393999faSLinus Walleij void cpu_feroceon_dcache_clean_area(void *addr, int size);
391393999faSLinus Walleij __ADDRESSABLE(cpu_feroceon_dcache_clean_area);
392393999faSLinus Walleij void cpu_feroceon_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
393393999faSLinus Walleij __ADDRESSABLE(cpu_feroceon_switch_mm);
394393999faSLinus Walleij void cpu_feroceon_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
395393999faSLinus Walleij __ADDRESSABLE(cpu_feroceon_set_pte_ext);
396393999faSLinus Walleij #ifdef CONFIG_ARM_CPU_SUSPEND
397393999faSLinus Walleij void cpu_feroceon_do_suspend(void *);
398393999faSLinus Walleij __ADDRESSABLE(cpu_feroceon_do_suspend);
399393999faSLinus Walleij void cpu_feroceon_do_resume(void *);
400393999faSLinus Walleij __ADDRESSABLE(cpu_feroceon_do_resume);
401393999faSLinus Walleij #endif /* CONFIG_ARM_CPU_SUSPEND */
402393999faSLinus Walleij #endif /* CONFIG_CPU_FEROCEON */
403393999faSLinus Walleij 
404393999faSLinus Walleij #if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K)
405393999faSLinus Walleij void cpu_v6_proc_init(void);
406393999faSLinus Walleij __ADDRESSABLE(cpu_v6_proc_init);
407393999faSLinus Walleij void cpu_v6_proc_fin(void);
408393999faSLinus Walleij __ADDRESSABLE(cpu_v6_proc_fin);
409393999faSLinus Walleij void cpu_v6_reset(unsigned long addr, bool hvc);
410393999faSLinus Walleij __ADDRESSABLE(cpu_v6_reset);
411393999faSLinus Walleij int cpu_v6_do_idle(void);
412393999faSLinus Walleij __ADDRESSABLE(cpu_v6_do_idle);
413393999faSLinus Walleij void cpu_v6_dcache_clean_area(void *addr, int size);
414393999faSLinus Walleij __ADDRESSABLE(cpu_v6_dcache_clean_area);
415393999faSLinus Walleij void cpu_v6_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
416393999faSLinus Walleij __ADDRESSABLE(cpu_v6_switch_mm);
417393999faSLinus Walleij void cpu_v6_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
418393999faSLinus Walleij __ADDRESSABLE(cpu_v6_set_pte_ext);
419393999faSLinus Walleij #ifdef CONFIG_ARM_CPU_SUSPEND
420393999faSLinus Walleij void cpu_v6_do_suspend(void *);
421393999faSLinus Walleij __ADDRESSABLE(cpu_v6_do_suspend);
422393999faSLinus Walleij void cpu_v6_do_resume(void *);
423393999faSLinus Walleij __ADDRESSABLE(cpu_v6_do_resume);
424393999faSLinus Walleij #endif /* CONFIG_ARM_CPU_SUSPEND */
425393999faSLinus Walleij #endif /* CPU_V6 */
426393999faSLinus Walleij 
427393999faSLinus Walleij #ifdef CONFIG_CPU_V7
428393999faSLinus Walleij void cpu_v7_proc_init(void);
429393999faSLinus Walleij __ADDRESSABLE(cpu_v7_proc_init);
430393999faSLinus Walleij void cpu_v7_proc_fin(void);
431393999faSLinus Walleij __ADDRESSABLE(cpu_v7_proc_fin);
432*657a292dSLinus Walleij void cpu_v7_reset(unsigned long addr, bool hvc);
433393999faSLinus Walleij __ADDRESSABLE(cpu_v7_reset);
434393999faSLinus Walleij int cpu_v7_do_idle(void);
435393999faSLinus Walleij __ADDRESSABLE(cpu_v7_do_idle);
436393999faSLinus Walleij #ifdef CONFIG_PJ4B_ERRATA_4742
437393999faSLinus Walleij int cpu_pj4b_do_idle(void);
438393999faSLinus Walleij __ADDRESSABLE(cpu_pj4b_do_idle);
439393999faSLinus Walleij #endif
440393999faSLinus Walleij void cpu_v7_dcache_clean_area(void *addr, int size);
441393999faSLinus Walleij __ADDRESSABLE(cpu_v7_dcache_clean_area);
442393999faSLinus Walleij void cpu_v7_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
443393999faSLinus Walleij /* Special switch_mm() callbacks to work around bugs in v7 */
444393999faSLinus Walleij __ADDRESSABLE(cpu_v7_switch_mm);
445393999faSLinus Walleij void cpu_v7_iciallu_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
446393999faSLinus Walleij __ADDRESSABLE(cpu_v7_iciallu_switch_mm);
447393999faSLinus Walleij void cpu_v7_bpiall_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
448393999faSLinus Walleij __ADDRESSABLE(cpu_v7_bpiall_switch_mm);
449393999faSLinus Walleij #ifdef CONFIG_ARM_LPAE
450393999faSLinus Walleij void cpu_v7_set_pte_ext(pte_t *ptep, pte_t pte);
451393999faSLinus Walleij #else
452393999faSLinus Walleij void cpu_v7_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
453393999faSLinus Walleij #endif
454393999faSLinus Walleij __ADDRESSABLE(cpu_v7_set_pte_ext);
455393999faSLinus Walleij #ifdef CONFIG_ARM_CPU_SUSPEND
456393999faSLinus Walleij void cpu_v7_do_suspend(void *);
457393999faSLinus Walleij __ADDRESSABLE(cpu_v7_do_suspend);
458393999faSLinus Walleij void cpu_v7_do_resume(void *);
459393999faSLinus Walleij __ADDRESSABLE(cpu_v7_do_resume);
460393999faSLinus Walleij /* Special versions of suspend and resume for the CA9MP cores */
461393999faSLinus Walleij void cpu_ca9mp_do_suspend(void *);
462393999faSLinus Walleij __ADDRESSABLE(cpu_ca9mp_do_suspend);
463393999faSLinus Walleij void cpu_ca9mp_do_resume(void *);
464393999faSLinus Walleij __ADDRESSABLE(cpu_ca9mp_do_resume);
465393999faSLinus Walleij /* Special versions of suspend and resume for the Marvell PJ4B cores */
466393999faSLinus Walleij #ifdef CONFIG_CPU_PJ4B
467393999faSLinus Walleij void cpu_pj4b_do_suspend(void *);
468393999faSLinus Walleij __ADDRESSABLE(cpu_pj4b_do_suspend);
469393999faSLinus Walleij void cpu_pj4b_do_resume(void *);
470393999faSLinus Walleij __ADDRESSABLE(cpu_pj4b_do_resume);
471393999faSLinus Walleij #endif /* CONFIG_CPU_PJ4B */
472393999faSLinus Walleij #endif /* CONFIG_ARM_CPU_SUSPEND */
473393999faSLinus Walleij #endif /* CONFIG_CPU_V7 */
474393999faSLinus Walleij 
475393999faSLinus Walleij #ifdef CONFIG_CPU_V7M
476393999faSLinus Walleij void cpu_v7m_proc_init(void);
477393999faSLinus Walleij __ADDRESSABLE(cpu_v7m_proc_init);
478393999faSLinus Walleij void cpu_v7m_proc_fin(void);
479393999faSLinus Walleij __ADDRESSABLE(cpu_v7m_proc_fin);
480393999faSLinus Walleij void cpu_v7m_reset(unsigned long addr, bool hvc);
481393999faSLinus Walleij __ADDRESSABLE(cpu_v7m_reset);
482393999faSLinus Walleij int cpu_v7m_do_idle(void);
483393999faSLinus Walleij __ADDRESSABLE(cpu_v7m_do_idle);
484393999faSLinus Walleij void cpu_v7m_dcache_clean_area(void *addr, int size);
485393999faSLinus Walleij __ADDRESSABLE(cpu_v7m_dcache_clean_area);
486393999faSLinus Walleij void cpu_v7m_switch_mm(phys_addr_t pgd_phys, struct mm_struct *mm);
487393999faSLinus Walleij __ADDRESSABLE(cpu_v7m_switch_mm);
488393999faSLinus Walleij void cpu_v7m_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext);
489393999faSLinus Walleij __ADDRESSABLE(cpu_v7m_set_pte_ext);
490393999faSLinus Walleij #ifdef CONFIG_ARM_CPU_SUSPEND
491393999faSLinus Walleij void cpu_v7m_do_suspend(void *);
492393999faSLinus Walleij __ADDRESSABLE(cpu_v7m_do_suspend);
493393999faSLinus Walleij void cpu_v7m_do_resume(void *);
494393999faSLinus Walleij __ADDRESSABLE(cpu_v7m_do_resume);
495393999faSLinus Walleij #endif /* CONFIG_ARM_CPU_SUSPEND */
496393999faSLinus Walleij void cpu_cm7_proc_fin(void);
497393999faSLinus Walleij __ADDRESSABLE(cpu_cm7_proc_fin);
498393999faSLinus Walleij void cpu_cm7_dcache_clean_area(void *addr, int size);
499393999faSLinus Walleij __ADDRESSABLE(cpu_cm7_dcache_clean_area);
500393999faSLinus Walleij #endif /* CONFIG_CPU_V7M */
501