diff options
author | Dave Martin <dave.martin@linaro.org> | 2011-06-23 12:07:40 -0400 |
---|---|---|
committer | Dave Martin <dave.martin@linaro.org> | 2011-07-07 10:30:35 -0400 |
commit | 66a625a88174664fc252d7b1ac1773e76e52326b (patch) | |
tree | 555bf8fc8ed47b9194d268ecf1f6122d9c98011e /arch/arm/mm/proc-macros.S | |
parent | b0af8dfdd67699e25083478c63eedef2e72ebd85 (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.S | 63 |
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 | ||
261 | ENTRY(\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 | ||
293 | ENTRY(\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 | ||
309 | ENTRY(\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 | ||