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