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