diff options
author | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
---|---|---|
committer | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
commit | c71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch) | |
tree | ecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /arch/arm/mm/proc-arm920.S | |
parent | ea53c912f8a86a8567697115b6a0d8152beee5c8 (diff) | |
parent | 6a00f206debf8a5c8899055726ad127dbeeed098 (diff) |
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts:
litmus/sched_cedf.c
Diffstat (limited to 'arch/arm/mm/proc-arm920.S')
-rw-r--r-- | arch/arm/mm/proc-arm920.S | 53 |
1 files changed, 51 insertions, 2 deletions
diff --git a/arch/arm/mm/proc-arm920.S b/arch/arm/mm/proc-arm920.S index 86f80aa56216..bf8a1d1cccb6 100644 --- a/arch/arm/mm/proc-arm920.S +++ b/arch/arm/mm/proc-arm920.S | |||
@@ -53,7 +53,7 @@ | |||
53 | /* | 53 | /* |
54 | * This is the size at which it becomes more efficient to | 54 | * This is the size at which it becomes more efficient to |
55 | * clean the whole cache, rather than using the individual | 55 | * clean the whole cache, rather than using the individual |
56 | * cache line maintainence instructions. | 56 | * cache line maintenance instructions. |
57 | */ | 57 | */ |
58 | #define CACHE_DLIMIT 65536 | 58 | #define CACHE_DLIMIT 65536 |
59 | 59 | ||
@@ -110,6 +110,17 @@ ENTRY(cpu_arm920_do_idle) | |||
110 | #ifndef CONFIG_CPU_DCACHE_WRITETHROUGH | 110 | #ifndef CONFIG_CPU_DCACHE_WRITETHROUGH |
111 | 111 | ||
112 | /* | 112 | /* |
113 | * flush_icache_all() | ||
114 | * | ||
115 | * Unconditionally clean and invalidate the entire icache. | ||
116 | */ | ||
117 | ENTRY(arm920_flush_icache_all) | ||
118 | mov r0, #0 | ||
119 | mcr p15, 0, r0, c7, c5, 0 @ invalidate I cache | ||
120 | mov pc, lr | ||
121 | ENDPROC(arm920_flush_icache_all) | ||
122 | |||
123 | /* | ||
113 | * flush_user_cache_all() | 124 | * flush_user_cache_all() |
114 | * | 125 | * |
115 | * Invalidate all cache entries in a particular address | 126 | * Invalidate all cache entries in a particular address |
@@ -305,6 +316,7 @@ ENTRY(arm920_dma_unmap_area) | |||
305 | ENDPROC(arm920_dma_unmap_area) | 316 | ENDPROC(arm920_dma_unmap_area) |
306 | 317 | ||
307 | ENTRY(arm920_cache_fns) | 318 | ENTRY(arm920_cache_fns) |
319 | .long arm920_flush_icache_all | ||
308 | .long arm920_flush_kern_cache_all | 320 | .long arm920_flush_kern_cache_all |
309 | .long arm920_flush_user_cache_all | 321 | .long arm920_flush_user_cache_all |
310 | .long arm920_flush_user_cache_range | 322 | .long arm920_flush_user_cache_range |
@@ -375,7 +387,41 @@ ENTRY(cpu_arm920_set_pte_ext) | |||
375 | #endif | 387 | #endif |
376 | mov pc, lr | 388 | mov pc, lr |
377 | 389 | ||
378 | __INIT | 390 | /* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */ |
391 | .globl cpu_arm920_suspend_size | ||
392 | .equ cpu_arm920_suspend_size, 4 * 3 | ||
393 | #ifdef CONFIG_PM_SLEEP | ||
394 | ENTRY(cpu_arm920_do_suspend) | ||
395 | stmfd sp!, {r4 - r7, lr} | ||
396 | mrc p15, 0, r4, c13, c0, 0 @ PID | ||
397 | mrc p15, 0, r5, c3, c0, 0 @ Domain ID | ||
398 | mrc p15, 0, r6, c2, c0, 0 @ TTB address | ||
399 | mrc p15, 0, r7, c1, c0, 0 @ Control register | ||
400 | stmia r0, {r4 - r7} | ||
401 | ldmfd sp!, {r4 - r7, pc} | ||
402 | ENDPROC(cpu_arm920_do_suspend) | ||
403 | |||
404 | ENTRY(cpu_arm920_do_resume) | ||
405 | mov ip, #0 | ||
406 | mcr p15, 0, ip, c8, c7, 0 @ invalidate I+D TLBs | ||
407 | mcr p15, 0, ip, c7, c7, 0 @ invalidate I+D caches | ||
408 | ldmia r0, {r4 - r7} | ||
409 | mcr p15, 0, r4, c13, c0, 0 @ PID | ||
410 | mcr p15, 0, r5, c3, c0, 0 @ Domain ID | ||
411 | mcr p15, 0, r6, c2, c0, 0 @ TTB address | ||
412 | mov r0, r7 @ control register | ||
413 | mov r2, r6, lsr #14 @ get TTB0 base | ||
414 | mov r2, r2, lsl #14 | ||
415 | ldr r3, =PMD_TYPE_SECT | PMD_SECT_BUFFERABLE | \ | ||
416 | PMD_SECT_CACHEABLE | PMD_BIT4 | PMD_SECT_AP_WRITE | ||
417 | b cpu_resume_mmu | ||
418 | ENDPROC(cpu_arm920_do_resume) | ||
419 | #else | ||
420 | #define cpu_arm920_do_suspend 0 | ||
421 | #define cpu_arm920_do_resume 0 | ||
422 | #endif | ||
423 | |||
424 | __CPUINIT | ||
379 | 425 | ||
380 | .type __arm920_setup, #function | 426 | .type __arm920_setup, #function |
381 | __arm920_setup: | 427 | __arm920_setup: |
@@ -420,6 +466,9 @@ arm920_processor_functions: | |||
420 | .word cpu_arm920_dcache_clean_area | 466 | .word cpu_arm920_dcache_clean_area |
421 | .word cpu_arm920_switch_mm | 467 | .word cpu_arm920_switch_mm |
422 | .word cpu_arm920_set_pte_ext | 468 | .word cpu_arm920_set_pte_ext |
469 | .word cpu_arm920_suspend_size | ||
470 | .word cpu_arm920_do_suspend | ||
471 | .word cpu_arm920_do_resume | ||
423 | .size arm920_processor_functions, . - arm920_processor_functions | 472 | .size arm920_processor_functions, . - arm920_processor_functions |
424 | 473 | ||
425 | .section ".rodata" | 474 | .section ".rodata" |