aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mm/proc-macros.S
diff options
context:
space:
mode:
authorDave Martin <dave.martin@linaro.org>2011-06-23 12:07:40 -0400
committerDave Martin <dave.martin@linaro.org>2011-07-07 10:30:35 -0400
commit66a625a88174664fc252d7b1ac1773e76e52326b (patch)
tree555bf8fc8ed47b9194d268ecf1f6122d9c98011e /arch/arm/mm/proc-macros.S
parentb0af8dfdd67699e25083478c63eedef2e72ebd85 (diff)
ARM: mm: proc-macros: Add generic proc/cache/tlb struct definition macros
This patch adds some generic macros to reduce boilerplate when declaring certain common structures in arch/arm/mm/*.S Thanks to Russell King for outlining what the define_processor_functions macro could look like. Signed-off-by: Dave Martin <dave.martin@linaro.org> Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
Diffstat (limited to 'arch/arm/mm/proc-macros.S')
-rw-r--r--arch/arm/mm/proc-macros.S63
1 files changed, 63 insertions, 0 deletions
diff --git a/arch/arm/mm/proc-macros.S b/arch/arm/mm/proc-macros.S
index 34261f9486b9..4ae9b4407074 100644
--- a/arch/arm/mm/proc-macros.S
+++ b/arch/arm/mm/proc-macros.S
@@ -254,3 +254,66 @@
254 mcr p15, 0, r0, c7, c10, 1 @ clean L1 D line 254 mcr p15, 0, r0, c7, c10, 1 @ clean L1 D line
255 mcr p15, 0, ip, c7, c10, 4 @ data write barrier 255 mcr p15, 0, ip, c7, c10, 4 @ data write barrier
256 .endm 256 .endm
257
258.macro define_processor_functions name:req, dabort:req, pabort:req, nommu=0, suspend=0
259 .type \name\()_processor_functions, #object
260 .align 2
261ENTRY(\name\()_processor_functions)
262 .word \dabort
263 .word \pabort
264 .word cpu_\name\()_proc_init
265 .word cpu_\name\()_proc_fin
266 .word cpu_\name\()_reset
267 .word cpu_\name\()_do_idle
268 .word cpu_\name\()_dcache_clean_area
269 .word cpu_\name\()_switch_mm
270
271 .if \nommu
272 .word 0
273 .else
274 .word cpu_\name\()_set_pte_ext
275 .endif
276
277 .if \suspend
278 .word cpu_\name\()_suspend_size
279 .word cpu_\name\()_do_suspend
280 .word cpu_\name\()_do_resume
281 .else
282 .word 0
283 .word 0
284 .word 0
285 .endif
286
287 .size \name\()_processor_functions, . - \name\()_processor_functions
288.endm
289
290.macro define_cache_functions name:req
291 .align 2
292 .type \name\()_cache_fns, #object
293ENTRY(\name\()_cache_fns)
294 .long \name\()_flush_icache_all
295 .long \name\()_flush_kern_cache_all
296 .long \name\()_flush_user_cache_all
297 .long \name\()_flush_user_cache_range
298 .long \name\()_coherent_kern_range
299 .long \name\()_coherent_user_range
300 .long \name\()_flush_kern_dcache_area
301 .long \name\()_dma_map_area
302 .long \name\()_dma_unmap_area
303 .long \name\()_dma_flush_range
304 .size \name\()_cache_fns, . - \name\()_cache_fns
305.endm
306
307.macro define_tlb_functions name:req, flags_up:req, flags_smp
308 .type \name\()_tlb_fns, #object
309ENTRY(\name\()_tlb_fns)
310 .long \name\()_flush_user_tlb_range
311 .long \name\()_flush_kern_tlb_range
312 .ifnb \flags_smp
313 ALT_SMP(.long \flags_smp )
314 ALT_UP(.long \flags_up )
315 .else
316 .long \flags_up
317 .endif
318 .size \name\()_tlb_fns, . - \name\()_tlb_fns
319.endm