]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/arm/mm/proc-arm926.S
Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[karo-tx-linux.git] / arch / arm / mm / proc-arm926.S
index 42eb4315740b1488e26192b5ff0cb07747312df5..6a4bdb2c94a7ba0f856bf06c00f95049ab638dc1 100644 (file)
@@ -401,6 +401,40 @@ ENTRY(cpu_arm926_set_pte_ext)
 #endif
        mov     pc, lr
 
+/* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */
+.globl cpu_arm926_suspend_size
+.equ   cpu_arm926_suspend_size, 4 * 3
+#ifdef CONFIG_PM
+ENTRY(cpu_arm926_do_suspend)
+       stmfd   sp!, {r4 - r7, lr}
+       mrc     p15, 0, r4, c13, c0, 0  @ PID
+       mrc     p15, 0, r5, c3, c0, 0   @ Domain ID
+       mrc     p15, 0, r6, c2, c0, 0   @ TTB address
+       mrc     p15, 0, r7, c1, c0, 0   @ Control register
+       stmia   r0, {r4 - r7}
+       ldmfd   sp!, {r4 - r7, pc}
+ENDPROC(cpu_arm926_do_suspend)
+
+ENTRY(cpu_arm926_do_resume)
+       mov     ip, #0
+       mcr     p15, 0, ip, c8, c7, 0   @ invalidate I+D TLBs
+       mcr     p15, 0, ip, c7, c7, 0   @ invalidate I+D caches
+       ldmia   r0, {r4 - r7}
+       mcr     p15, 0, r4, c13, c0, 0  @ PID
+       mcr     p15, 0, r5, c3, c0, 0   @ Domain ID
+       mcr     p15, 0, r6, c2, c0, 0   @ TTB address
+       mov     r0, r7                  @ control register
+       mov     r2, r6, lsr #14         @ get TTB0 base
+       mov     r2, r2, lsl #14
+       ldr     r3, =PMD_TYPE_SECT | PMD_SECT_BUFFERABLE | \
+                    PMD_SECT_CACHEABLE | PMD_BIT4 | PMD_SECT_AP_WRITE
+       b       cpu_resume_mmu
+ENDPROC(cpu_arm926_do_resume)
+#else
+#define cpu_arm926_do_suspend  0
+#define cpu_arm926_do_resume   0
+#endif
+
        __CPUINIT
 
        .type   __arm926_setup, #function
@@ -456,6 +490,9 @@ arm926_processor_functions:
        .word   cpu_arm926_dcache_clean_area
        .word   cpu_arm926_switch_mm
        .word   cpu_arm926_set_pte_ext
+       .word   cpu_arm926_suspend_size
+       .word   cpu_arm926_do_suspend
+       .word   cpu_arm926_do_resume
        .size   arm926_processor_functions, . - arm926_processor_functions
 
        .section ".rodata"