Skip to content

Commit 66a625a

Browse files
author
Dave Martin
committed
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 <[email protected]> Acked-by: Nicolas Pitre <[email protected]>
1 parent b0af8df commit 66a625a

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

arch/arm/mm/proc-macros.S

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,3 +254,66 @@
254254
mcr p15, 0, r0, c7, c10, 1 @ clean L1 D line
255255
mcr p15, 0, ip, c7, c10, 4 @ data write barrier
256256
.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

0 commit comments

Comments
 (0)