arm: remove several unnecessary module.h include instances
[linux-3.10.git] / arch / arm / mm / proc-arm920.S
index fecf570..88fb3d9 100644 (file)
@@ -53,7 +53,7 @@
 /*
  * This is the size at which it becomes more efficient to
  * clean the whole cache, rather than using the individual
- * cache line maintainence instructions.
+ * cache line maintenance instructions.
  */
 #define CACHE_DLIMIT   65536
 
@@ -110,6 +110,17 @@ ENTRY(cpu_arm920_do_idle)
 #ifndef CONFIG_CPU_DCACHE_WRITETHROUGH
 
 /*
+ *     flush_icache_all()
+ *
+ *     Unconditionally clean and invalidate the entire icache.
+ */
+ENTRY(arm920_flush_icache_all)
+       mov     r0, #0
+       mcr     p15, 0, r0, c7, c5, 0           @ invalidate I cache
+       mov     pc, lr
+ENDPROC(arm920_flush_icache_all)
+
+/*
  *     flush_user_cache_all()
  *
  *     Invalidate all cache entries in a particular address
@@ -304,17 +315,8 @@ ENTRY(arm920_dma_unmap_area)
        mov     pc, lr
 ENDPROC(arm920_dma_unmap_area)
 
-ENTRY(arm920_cache_fns)
-       .long   arm920_flush_kern_cache_all
-       .long   arm920_flush_user_cache_all
-       .long   arm920_flush_user_cache_range
-       .long   arm920_coherent_kern_range
-       .long   arm920_coherent_user_range
-       .long   arm920_flush_kern_dcache_area
-       .long   arm920_dma_map_area
-       .long   arm920_dma_unmap_area
-       .long   arm920_dma_flush_range
-
+       @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S)
+       define_cache_functions arm920
 #endif
 
 
@@ -375,6 +377,32 @@ ENTRY(cpu_arm920_set_pte_ext)
 #endif
        mov     pc, lr
 
+/* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */
+.globl cpu_arm920_suspend_size
+.equ   cpu_arm920_suspend_size, 4 * 3
+#ifdef CONFIG_PM_SLEEP
+ENTRY(cpu_arm920_do_suspend)
+       stmfd   sp!, {r4 - r6, lr}
+       mrc     p15, 0, r4, c13, c0, 0  @ PID
+       mrc     p15, 0, r5, c3, c0, 0   @ Domain ID
+       mrc     p15, 0, r6, c1, c0, 0   @ Control register
+       stmia   r0, {r4 - r6}
+       ldmfd   sp!, {r4 - r6, pc}
+ENDPROC(cpu_arm920_do_suspend)
+
+ENTRY(cpu_arm920_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 - r6}
+       mcr     p15, 0, r4, c13, c0, 0  @ PID
+       mcr     p15, 0, r5, c3, c0, 0   @ Domain ID
+       mcr     p15, 0, r1, c2, c0, 0   @ TTB address
+       mov     r0, r6                  @ control register
+       b       cpu_resume_mmu
+ENDPROC(cpu_arm920_do_resume)
+#endif
+
        __CPUINIT
 
        .type   __arm920_setup, #function
@@ -404,40 +432,14 @@ arm920_crval:
        crval   clear=0x00003f3f, mmuset=0x00003135, ucset=0x00001130
 
        __INITDATA
-
-/*
- * Purpose : Function pointers used to access above functions - all calls
- *          come through these
- */
-       .type   arm920_processor_functions, #object
-arm920_processor_functions:
-       .word   v4t_early_abort
-       .word   legacy_pabort
-       .word   cpu_arm920_proc_init
-       .word   cpu_arm920_proc_fin
-       .word   cpu_arm920_reset
-       .word   cpu_arm920_do_idle
-       .word   cpu_arm920_dcache_clean_area
-       .word   cpu_arm920_switch_mm
-       .word   cpu_arm920_set_pte_ext
-       .size   arm920_processor_functions, . - arm920_processor_functions
+       @ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
+       define_processor_functions arm920, dabort=v4t_early_abort, pabort=legacy_pabort, suspend=1
 
        .section ".rodata"
 
-       .type   cpu_arch_name, #object
-cpu_arch_name:
-       .asciz  "armv4t"
-       .size   cpu_arch_name, . - cpu_arch_name
-
-       .type   cpu_elf_name, #object
-cpu_elf_name:
-       .asciz  "v4"
-       .size   cpu_elf_name, . - cpu_elf_name
-
-       .type   cpu_arm920_name, #object
-cpu_arm920_name:
-       .asciz  "ARM920T"
-       .size   cpu_arm920_name, . - cpu_arm920_name
+       string  cpu_arch_name, "armv4t"
+       string  cpu_elf_name, "v4"
+       string  cpu_arm920_name, "ARM920T"
 
        .align