diff options
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/mm/proc-v7-2level.S | 12 | ||||
-rw-r--r-- | arch/arm/mm/proc-v7.S | 28 |
2 files changed, 36 insertions, 4 deletions
diff --git a/arch/arm/mm/proc-v7-2level.S b/arch/arm/mm/proc-v7-2level.S index ed448d8a596b..10405b8d31af 100644 --- a/arch/arm/mm/proc-v7-2level.S +++ b/arch/arm/mm/proc-v7-2level.S | |||
@@ -37,15 +37,18 @@ | |||
37 | * It is assumed that: | 37 | * It is assumed that: |
38 | * - we are not using split page tables | 38 | * - we are not using split page tables |
39 | */ | 39 | */ |
40 | ENTRY(cpu_v7_switch_mm) | 40 | ENTRY(cpu_ca8_switch_mm) |
41 | #ifdef CONFIG_MMU | 41 | #ifdef CONFIG_MMU |
42 | mov r2, #0 | 42 | mov r2, #0 |
43 | mmid r1, r1 @ get mm->context.id | ||
44 | ALT_SMP(orr r0, r0, #TTB_FLAGS_SMP) | ||
45 | ALT_UP(orr r0, r0, #TTB_FLAGS_UP) | ||
46 | #ifdef CONFIG_ARM_ERRATA_430973 | 43 | #ifdef CONFIG_ARM_ERRATA_430973 |
47 | mcr p15, 0, r2, c7, c5, 6 @ flush BTAC/BTB | 44 | mcr p15, 0, r2, c7, c5, 6 @ flush BTAC/BTB |
48 | #endif | 45 | #endif |
46 | #endif | ||
47 | ENTRY(cpu_v7_switch_mm) | ||
48 | #ifdef CONFIG_MMU | ||
49 | mmid r1, r1 @ get mm->context.id | ||
50 | ALT_SMP(orr r0, r0, #TTB_FLAGS_SMP) | ||
51 | ALT_UP(orr r0, r0, #TTB_FLAGS_UP) | ||
49 | #ifdef CONFIG_PID_IN_CONTEXTIDR | 52 | #ifdef CONFIG_PID_IN_CONTEXTIDR |
50 | mrc p15, 0, r2, c13, c0, 1 @ read current context ID | 53 | mrc p15, 0, r2, c13, c0, 1 @ read current context ID |
51 | lsr r2, r2, #8 @ extract the PID | 54 | lsr r2, r2, #8 @ extract the PID |
@@ -61,6 +64,7 @@ ENTRY(cpu_v7_switch_mm) | |||
61 | #endif | 64 | #endif |
62 | bx lr | 65 | bx lr |
63 | ENDPROC(cpu_v7_switch_mm) | 66 | ENDPROC(cpu_v7_switch_mm) |
67 | ENDPROC(cpu_ca8_switch_mm) | ||
64 | 68 | ||
65 | /* | 69 | /* |
66 | * cpu_v7_set_pte_ext(ptep, pte) | 70 | * cpu_v7_set_pte_ext(ptep, pte) |
diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S index 6bdaa4cc1784..3d1054f11a8a 100644 --- a/arch/arm/mm/proc-v7.S +++ b/arch/arm/mm/proc-v7.S | |||
@@ -153,6 +153,21 @@ ENDPROC(cpu_v7_do_resume) | |||
153 | #endif | 153 | #endif |
154 | 154 | ||
155 | /* | 155 | /* |
156 | * Cortex-A8 | ||
157 | */ | ||
158 | globl_equ cpu_ca8_proc_init, cpu_v7_proc_init | ||
159 | globl_equ cpu_ca8_proc_fin, cpu_v7_proc_fin | ||
160 | globl_equ cpu_ca8_reset, cpu_v7_reset | ||
161 | globl_equ cpu_ca8_do_idle, cpu_v7_do_idle | ||
162 | globl_equ cpu_ca8_dcache_clean_area, cpu_v7_dcache_clean_area | ||
163 | globl_equ cpu_ca8_set_pte_ext, cpu_v7_set_pte_ext | ||
164 | globl_equ cpu_ca8_suspend_size, cpu_v7_suspend_size | ||
165 | #ifdef CONFIG_ARM_CPU_SUSPEND | ||
166 | globl_equ cpu_ca8_do_suspend, cpu_v7_do_suspend | ||
167 | globl_equ cpu_ca8_do_resume, cpu_v7_do_resume | ||
168 | #endif | ||
169 | |||
170 | /* | ||
156 | * Cortex-A9 processor functions | 171 | * Cortex-A9 processor functions |
157 | */ | 172 | */ |
158 | globl_equ cpu_ca9mp_proc_init, cpu_v7_proc_init | 173 | globl_equ cpu_ca9mp_proc_init, cpu_v7_proc_init |
@@ -451,7 +466,10 @@ __v7_setup_stack: | |||
451 | 466 | ||
452 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) | 467 | @ define struct processor (see <asm/proc-fns.h> and proc-macros.S) |
453 | define_processor_functions v7, dabort=v7_early_abort, pabort=v7_pabort, suspend=1 | 468 | define_processor_functions v7, dabort=v7_early_abort, pabort=v7_pabort, suspend=1 |
469 | #ifndef CONFIG_ARM_LPAE | ||
470 | define_processor_functions ca8, dabort=v7_early_abort, pabort=v7_pabort, suspend=1 | ||
454 | define_processor_functions ca9mp, dabort=v7_early_abort, pabort=v7_pabort, suspend=1 | 471 | define_processor_functions ca9mp, dabort=v7_early_abort, pabort=v7_pabort, suspend=1 |
472 | #endif | ||
455 | #ifdef CONFIG_CPU_PJ4B | 473 | #ifdef CONFIG_CPU_PJ4B |
456 | define_processor_functions pj4b, dabort=v7_early_abort, pabort=v7_pabort, suspend=1 | 474 | define_processor_functions pj4b, dabort=v7_early_abort, pabort=v7_pabort, suspend=1 |
457 | #endif | 475 | #endif |
@@ -507,6 +525,16 @@ __v7_ca9mp_proc_info: | |||
507 | __v7_proc __v7_ca9mp_proc_info, __v7_ca9mp_setup, proc_fns = ca9mp_processor_functions | 525 | __v7_proc __v7_ca9mp_proc_info, __v7_ca9mp_setup, proc_fns = ca9mp_processor_functions |
508 | .size __v7_ca9mp_proc_info, . - __v7_ca9mp_proc_info | 526 | .size __v7_ca9mp_proc_info, . - __v7_ca9mp_proc_info |
509 | 527 | ||
528 | /* | ||
529 | * ARM Ltd. Cortex A8 processor. | ||
530 | */ | ||
531 | .type __v7_ca8_proc_info, #object | ||
532 | __v7_ca8_proc_info: | ||
533 | .long 0x410fc080 | ||
534 | .long 0xff0ffff0 | ||
535 | __v7_proc __v7_ca8_proc_info, __v7_setup, proc_fns = ca8_processor_functions | ||
536 | .size __v7_ca8_proc_info, . - __v7_ca8_proc_info | ||
537 | |||
510 | #endif /* CONFIG_ARM_LPAE */ | 538 | #endif /* CONFIG_ARM_LPAE */ |
511 | 539 | ||
512 | /* | 540 | /* |