diff options
| author | Will Deacon <will.deacon@arm.com> | 2011-07-07 19:19:53 +0100 | 
|---|---|---|
| committer | Will Deacon <will.deacon@arm.com> | 2011-07-07 19:19:53 +0100 | 
| commit | 305edadbfbc46f1d194d27e93e4237284b95fbb0 (patch) | |
| tree | 6c1fd0318721ab4b9e06cd1794903a05df97086c | |
| parent | b0af8dfdd67699e25083478c63eedef2e72ebd85 (diff) | |
| parent | 2ba564b90f4c53d7a25cdcf12c6fa15028db7bc9 (diff) | |
Merge branch 'arm/proc-macros' of git://git.linaro.org/people/dmart/linux-2.6-arm into for-rmk
40 files changed, 483 insertions, 1965 deletions
| diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h index 65c3f2474f5e..29035e86a59d 100644 --- a/arch/arm/include/asm/assembler.h +++ b/arch/arm/include/asm/assembler.h @@ -293,4 +293,13 @@  	.macro	ldrusr, reg, ptr, inc, cond=al, rept=1, abort=9001f  	usracc	ldr, \reg, \ptr, \inc, \cond, \rept, \abort  	.endm + +/* Utility macro for declaring string literals */ +	.macro	string name:req, string +	.type \name , #object +\name: +	.asciz "\string" +	.size \name , . - \name +	.endm +  #endif /* __ASM_ASSEMBLER_H__ */ diff --git a/arch/arm/mm/cache-fa.S b/arch/arm/mm/cache-fa.S index 1fa6f71470de..072016371093 100644 --- a/arch/arm/mm/cache-fa.S +++ b/arch/arm/mm/cache-fa.S @@ -242,16 +242,5 @@ ENDPROC(fa_dma_unmap_area)  	__INITDATA -	.type	fa_cache_fns, #object -ENTRY(fa_cache_fns) -	.long	fa_flush_icache_all -	.long	fa_flush_kern_cache_all -	.long	fa_flush_user_cache_all -	.long	fa_flush_user_cache_range -	.long	fa_coherent_kern_range -	.long	fa_coherent_user_range -	.long	fa_flush_kern_dcache_area -	.long	fa_dma_map_area -	.long	fa_dma_unmap_area -	.long	fa_dma_flush_range -	.size	fa_cache_fns, . - fa_cache_fns +	@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) +	define_cache_functions fa diff --git a/arch/arm/mm/cache-v3.S b/arch/arm/mm/cache-v3.S index 2e2bc406a18d..c2301f226100 100644 --- a/arch/arm/mm/cache-v3.S +++ b/arch/arm/mm/cache-v3.S @@ -129,16 +129,5 @@ ENDPROC(v3_dma_map_area)  	__INITDATA -	.type	v3_cache_fns, #object -ENTRY(v3_cache_fns) -	.long	v3_flush_icache_all -	.long	v3_flush_kern_cache_all -	.long	v3_flush_user_cache_all -	.long	v3_flush_user_cache_range -	.long	v3_coherent_kern_range -	.long	v3_coherent_user_range -	.long	v3_flush_kern_dcache_area -	.long	v3_dma_map_area -	.long	v3_dma_unmap_area -	.long	v3_dma_flush_range -	.size	v3_cache_fns, . - v3_cache_fns +	@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) +	define_cache_functions v3 diff --git a/arch/arm/mm/cache-v4.S b/arch/arm/mm/cache-v4.S index a8fefb523f19..fd9bb7addc8d 100644 --- a/arch/arm/mm/cache-v4.S +++ b/arch/arm/mm/cache-v4.S @@ -141,16 +141,5 @@ ENDPROC(v4_dma_map_area)  	__INITDATA -	.type	v4_cache_fns, #object -ENTRY(v4_cache_fns) -	.long	v4_flush_icache_all -	.long	v4_flush_kern_cache_all -	.long	v4_flush_user_cache_all -	.long	v4_flush_user_cache_range -	.long	v4_coherent_kern_range -	.long	v4_coherent_user_range -	.long	v4_flush_kern_dcache_area -	.long	v4_dma_map_area -	.long	v4_dma_unmap_area -	.long	v4_dma_flush_range -	.size	v4_cache_fns, . - v4_cache_fns +	@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) +	define_cache_functions v4 diff --git a/arch/arm/mm/cache-v4wb.S b/arch/arm/mm/cache-v4wb.S index f40c69656d8d..4f2c14151ccb 100644 --- a/arch/arm/mm/cache-v4wb.S +++ b/arch/arm/mm/cache-v4wb.S @@ -253,16 +253,5 @@ ENDPROC(v4wb_dma_unmap_area)  	__INITDATA -	.type	v4wb_cache_fns, #object -ENTRY(v4wb_cache_fns) -	.long	v4wb_flush_icache_all -	.long	v4wb_flush_kern_cache_all -	.long	v4wb_flush_user_cache_all -	.long	v4wb_flush_user_cache_range -	.long	v4wb_coherent_kern_range -	.long	v4wb_coherent_user_range -	.long	v4wb_flush_kern_dcache_area -	.long	v4wb_dma_map_area -	.long	v4wb_dma_unmap_area -	.long	v4wb_dma_flush_range -	.size	v4wb_cache_fns, . - v4wb_cache_fns +	@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) +	define_cache_functions v4wb diff --git a/arch/arm/mm/cache-v4wt.S b/arch/arm/mm/cache-v4wt.S index a7b276dbda11..4d7b467631ce 100644 --- a/arch/arm/mm/cache-v4wt.S +++ b/arch/arm/mm/cache-v4wt.S @@ -197,16 +197,5 @@ ENDPROC(v4wt_dma_map_area)  	__INITDATA -	.type	v4wt_cache_fns, #object -ENTRY(v4wt_cache_fns) -	.long	v4wt_flush_icache_all -	.long	v4wt_flush_kern_cache_all -	.long	v4wt_flush_user_cache_all -	.long	v4wt_flush_user_cache_range -	.long	v4wt_coherent_kern_range -	.long	v4wt_coherent_user_range -	.long	v4wt_flush_kern_dcache_area -	.long	v4wt_dma_map_area -	.long	v4wt_dma_unmap_area -	.long	v4wt_dma_flush_range -	.size	v4wt_cache_fns, . - v4wt_cache_fns +	@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) +	define_cache_functions v4wt diff --git a/arch/arm/mm/cache-v6.S b/arch/arm/mm/cache-v6.S index 73b4a8b66a57..74c2e5a33a4d 100644 --- a/arch/arm/mm/cache-v6.S +++ b/arch/arm/mm/cache-v6.S @@ -330,16 +330,5 @@ ENDPROC(v6_dma_unmap_area)  	__INITDATA -	.type	v6_cache_fns, #object -ENTRY(v6_cache_fns) -	.long	v6_flush_icache_all -	.long	v6_flush_kern_cache_all -	.long	v6_flush_user_cache_all -	.long	v6_flush_user_cache_range -	.long	v6_coherent_kern_range -	.long	v6_coherent_user_range -	.long	v6_flush_kern_dcache_area -	.long	v6_dma_map_area -	.long	v6_dma_unmap_area -	.long	v6_dma_flush_range -	.size	v6_cache_fns, . - v6_cache_fns +	@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) +	define_cache_functions v6 diff --git a/arch/arm/mm/cache-v7.S b/arch/arm/mm/cache-v7.S index d32f02b61866..3b24bfa3b828 100644 --- a/arch/arm/mm/cache-v7.S +++ b/arch/arm/mm/cache-v7.S @@ -325,16 +325,5 @@ ENDPROC(v7_dma_unmap_area)  	__INITDATA -	.type	v7_cache_fns, #object -ENTRY(v7_cache_fns) -	.long	v7_flush_icache_all -	.long	v7_flush_kern_cache_all -	.long	v7_flush_user_cache_all -	.long	v7_flush_user_cache_range -	.long	v7_coherent_kern_range -	.long	v7_coherent_user_range -	.long	v7_flush_kern_dcache_area -	.long	v7_dma_map_area -	.long	v7_dma_unmap_area -	.long	v7_dma_flush_range -	.size	v7_cache_fns, . - v7_cache_fns +	@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) +	define_cache_functions v7 diff --git a/arch/arm/mm/proc-arm1020.S b/arch/arm/mm/proc-arm1020.S index 6c4e7fd6c8af..67469665d47a 100644 --- a/arch/arm/mm/proc-arm1020.S +++ b/arch/arm/mm/proc-arm1020.S @@ -364,17 +364,8 @@ ENTRY(arm1020_dma_unmap_area)  	mov	pc, lr  ENDPROC(arm1020_dma_unmap_area) -ENTRY(arm1020_cache_fns) -	.long	arm1020_flush_icache_all -	.long	arm1020_flush_kern_cache_all -	.long	arm1020_flush_user_cache_all -	.long	arm1020_flush_user_cache_range -	.long	arm1020_coherent_kern_range -	.long	arm1020_coherent_user_range -	.long	arm1020_flush_kern_dcache_area -	.long	arm1020_dma_map_area -	.long	arm1020_dma_unmap_area -	.long	arm1020_dma_flush_range +	@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) +	define_cache_functions arm1020  	.align	5  ENTRY(cpu_arm1020_dcache_clean_area) @@ -477,38 +468,14 @@ arm1020_crval:  	crval	clear=0x0000593f, mmuset=0x00003935, ucset=0x00001930  	__INITDATA +	@ define struct processor (see <asm/proc-fns.h> and proc-macros.S) +	define_processor_functions arm1020, dabort=v4t_early_abort, pabort=legacy_pabort -/* - * Purpose : Function pointers used to access above functions - all calls - *	     come through these - */ -	.type	arm1020_processor_functions, #object -arm1020_processor_functions: -	.word	v4t_early_abort -	.word	legacy_pabort -	.word	cpu_arm1020_proc_init -	.word	cpu_arm1020_proc_fin -	.word	cpu_arm1020_reset -	.word	cpu_arm1020_do_idle -	.word	cpu_arm1020_dcache_clean_area -	.word	cpu_arm1020_switch_mm -	.word	cpu_arm1020_set_pte_ext -	.word	0 -	.word	0 -	.word	0 -	.size	arm1020_processor_functions, . - arm1020_processor_functions  	.section ".rodata" -	.type	cpu_arch_name, #object -cpu_arch_name: -	.asciz	"armv5t" -	.size	cpu_arch_name, . - cpu_arch_name - -	.type	cpu_elf_name, #object -cpu_elf_name: -	.asciz	"v5" -	.size	cpu_elf_name, . - cpu_elf_name +	string	cpu_arch_name, "armv5t" +	string	cpu_elf_name, "v5"  	.type	cpu_arm1020_name, #object  cpu_arm1020_name: diff --git a/arch/arm/mm/proc-arm1020e.S b/arch/arm/mm/proc-arm1020e.S index 4ce947c19623..4251421c0ed5 100644 --- a/arch/arm/mm/proc-arm1020e.S +++ b/arch/arm/mm/proc-arm1020e.S @@ -350,17 +350,8 @@ ENTRY(arm1020e_dma_unmap_area)  	mov	pc, lr  ENDPROC(arm1020e_dma_unmap_area) -ENTRY(arm1020e_cache_fns) -	.long	arm1020e_flush_icache_all -	.long	arm1020e_flush_kern_cache_all -	.long	arm1020e_flush_user_cache_all -	.long	arm1020e_flush_user_cache_range -	.long	arm1020e_coherent_kern_range -	.long	arm1020e_coherent_user_range -	.long	arm1020e_flush_kern_dcache_area -	.long	arm1020e_dma_map_area -	.long	arm1020e_dma_unmap_area -	.long	arm1020e_dma_flush_range +	@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) +	define_cache_functions arm1020e  	.align	5  ENTRY(cpu_arm1020e_dcache_clean_area) @@ -458,43 +449,14 @@ arm1020e_crval:  	crval	clear=0x00007f3f, mmuset=0x00003935, ucset=0x00001930  	__INITDATA - -/* - * Purpose : Function pointers used to access above functions - all calls - *	     come through these - */ -	.type	arm1020e_processor_functions, #object -arm1020e_processor_functions: -	.word	v4t_early_abort -	.word	legacy_pabort -	.word	cpu_arm1020e_proc_init -	.word	cpu_arm1020e_proc_fin -	.word	cpu_arm1020e_reset -	.word	cpu_arm1020e_do_idle -	.word	cpu_arm1020e_dcache_clean_area -	.word	cpu_arm1020e_switch_mm -	.word	cpu_arm1020e_set_pte_ext -	.word	0 -	.word	0 -	.word	0 -	.size	arm1020e_processor_functions, . - arm1020e_processor_functions +	@ define struct processor (see <asm/proc-fns.h> and proc-macros.S) +	define_processor_functions arm1020e, dabort=v4t_early_abort, pabort=legacy_pabort  	.section ".rodata" -	.type	cpu_arch_name, #object -cpu_arch_name: -	.asciz	"armv5te" -	.size	cpu_arch_name, . - cpu_arch_name - -	.type	cpu_elf_name, #object -cpu_elf_name: -	.asciz	"v5" -	.size	cpu_elf_name, . - cpu_elf_name - -	.type	cpu_arm1020e_name, #object -cpu_arm1020e_name: -	.asciz	"ARM1020E" -	.size	cpu_arm1020e_name, . - cpu_arm1020e_name +	string	cpu_arch_name, "armv5te" +	string	cpu_elf_name, "v5" +	string	cpu_arm1020e_name, "ARM1020E"  	.align diff --git a/arch/arm/mm/proc-arm1022.S b/arch/arm/mm/proc-arm1022.S index c8884c5413a2..d283cf3d06e3 100644 --- a/arch/arm/mm/proc-arm1022.S +++ b/arch/arm/mm/proc-arm1022.S @@ -339,17 +339,8 @@ ENTRY(arm1022_dma_unmap_area)  	mov	pc, lr  ENDPROC(arm1022_dma_unmap_area) -ENTRY(arm1022_cache_fns) -	.long	arm1022_flush_icache_all -	.long	arm1022_flush_kern_cache_all -	.long	arm1022_flush_user_cache_all -	.long	arm1022_flush_user_cache_range -	.long	arm1022_coherent_kern_range -	.long	arm1022_coherent_user_range -	.long	arm1022_flush_kern_dcache_area -	.long	arm1022_dma_map_area -	.long	arm1022_dma_unmap_area -	.long	arm1022_dma_flush_range +	@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) +	define_cache_functions arm1022  	.align	5  ENTRY(cpu_arm1022_dcache_clean_area) @@ -441,43 +432,14 @@ arm1022_crval:  	crval	clear=0x00007f3f, mmuset=0x00003935, ucset=0x00001930  	__INITDATA - -/* - * Purpose : Function pointers used to access above functions - all calls - *	     come through these - */ -	.type	arm1022_processor_functions, #object -arm1022_processor_functions: -	.word	v4t_early_abort -	.word	legacy_pabort -	.word	cpu_arm1022_proc_init -	.word	cpu_arm1022_proc_fin -	.word	cpu_arm1022_reset -	.word	cpu_arm1022_do_idle -	.word	cpu_arm1022_dcache_clean_area -	.word	cpu_arm1022_switch_mm -	.word	cpu_arm1022_set_pte_ext -	.word	0 -	.word	0 -	.word	0 -	.size	arm1022_processor_functions, . - arm1022_processor_functions +	@ define struct processor (see <asm/proc-fns.h> and proc-macros.S) +	define_processor_functions arm1022, dabort=v4t_early_abort, pabort=legacy_pabort  	.section ".rodata" -	.type	cpu_arch_name, #object -cpu_arch_name: -	.asciz	"armv5te" -	.size	cpu_arch_name, . - cpu_arch_name - -	.type	cpu_elf_name, #object -cpu_elf_name: -	.asciz	"v5" -	.size	cpu_elf_name, . - cpu_elf_name - -	.type	cpu_arm1022_name, #object -cpu_arm1022_name: -	.asciz	"ARM1022" -	.size	cpu_arm1022_name, . - cpu_arm1022_name +	string	cpu_arch_name, "armv5te" +	string	cpu_elf_name, "v5" +	string	cpu_arm1022_name, "ARM1022"  	.align diff --git a/arch/arm/mm/proc-arm1026.S b/arch/arm/mm/proc-arm1026.S index 413684660aad..678a1ceafed2 100644 --- a/arch/arm/mm/proc-arm1026.S +++ b/arch/arm/mm/proc-arm1026.S @@ -333,17 +333,8 @@ ENTRY(arm1026_dma_unmap_area)  	mov	pc, lr  ENDPROC(arm1026_dma_unmap_area) -ENTRY(arm1026_cache_fns) -	.long	arm1026_flush_icache_all -	.long	arm1026_flush_kern_cache_all -	.long	arm1026_flush_user_cache_all -	.long	arm1026_flush_user_cache_range -	.long	arm1026_coherent_kern_range -	.long	arm1026_coherent_user_range -	.long	arm1026_flush_kern_dcache_area -	.long	arm1026_dma_map_area -	.long	arm1026_dma_unmap_area -	.long	arm1026_dma_flush_range +	@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) +	define_cache_functions arm1026  	.align	5  ENTRY(cpu_arm1026_dcache_clean_area) @@ -436,45 +427,15 @@ arm1026_crval:  	crval	clear=0x00007f3f, mmuset=0x00003935, ucset=0x00001934  	__INITDATA - -/* - * Purpose : Function pointers used to access above functions - all calls - *	     come through these - */ -	.type	arm1026_processor_functions, #object -arm1026_processor_functions: -	.word	v5t_early_abort -	.word	legacy_pabort -	.word	cpu_arm1026_proc_init -	.word	cpu_arm1026_proc_fin -	.word	cpu_arm1026_reset -	.word	cpu_arm1026_do_idle -	.word	cpu_arm1026_dcache_clean_area -	.word	cpu_arm1026_switch_mm -	.word	cpu_arm1026_set_pte_ext -	.word	0 -	.word	0 -	.word	0 -	.size	arm1026_processor_functions, . - arm1026_processor_functions +	@ define struct processor (see <asm/proc-fns.h> and proc-macros.S) +	define_processor_functions arm1026, dabort=v5t_early_abort, pabort=legacy_pabort  	.section .rodata -	.type	cpu_arch_name, #object -cpu_arch_name: -	.asciz	"armv5tej" -	.size	cpu_arch_name, . - cpu_arch_name - -	.type	cpu_elf_name, #object -cpu_elf_name: -	.asciz	"v5" -	.size	cpu_elf_name, . - cpu_elf_name +	string	cpu_arch_name, "armv5tej" +	string	cpu_elf_name, "v5"  	.align - -	.type	cpu_arm1026_name, #object -cpu_arm1026_name: -	.asciz	"ARM1026EJ-S" -	.size	cpu_arm1026_name, . - cpu_arm1026_name - +	string	cpu_arm1026_name, "ARM1026EJ-S"  	.align  	.section ".proc.info.init", #alloc, #execinstr diff --git a/arch/arm/mm/proc-arm6_7.S b/arch/arm/mm/proc-arm6_7.S index 5f79dc4ce3fb..ebc0ca7f1a15 100644 --- a/arch/arm/mm/proc-arm6_7.S +++ b/arch/arm/mm/proc-arm6_7.S @@ -269,159 +269,57 @@ __arm7_setup:	mov	r0, #0  		__INITDATA -/* - * Purpose : Function pointers used to access above functions - all calls - *	     come through these - */ -		.type	arm6_processor_functions, #object -ENTRY(arm6_processor_functions) -		.word	cpu_arm6_data_abort -		.word	legacy_pabort -		.word	cpu_arm6_proc_init -		.word	cpu_arm6_proc_fin -		.word	cpu_arm6_reset -		.word	cpu_arm6_do_idle -		.word	cpu_arm6_dcache_clean_area -		.word	cpu_arm6_switch_mm -		.word	cpu_arm6_set_pte_ext -		.word	0 -		.word	0 -		.word	0 -		.size	arm6_processor_functions, . - arm6_processor_functions - -/* - * Purpose : Function pointers used to access above functions - all calls - *	     come through these - */ -		.type	arm7_processor_functions, #object -ENTRY(arm7_processor_functions) -		.word	cpu_arm7_data_abort -		.word	legacy_pabort -		.word	cpu_arm7_proc_init -		.word	cpu_arm7_proc_fin -		.word	cpu_arm7_reset -		.word	cpu_arm7_do_idle -		.word	cpu_arm7_dcache_clean_area -		.word	cpu_arm7_switch_mm -		.word	cpu_arm7_set_pte_ext -		.word	0 -		.word	0 -		.word	0 -		.size	arm7_processor_functions, . - arm7_processor_functions +		@ define struct processor (see <asm/proc-fns.h> and proc-macros.S) +		define_processor_functions arm6, dabort=cpu_arm6_data_abort, pabort=legacy_pabort +		define_processor_functions arm7, dabort=cpu_arm7_data_abort, pabort=legacy_pabort  		.section ".rodata" -		.type	cpu_arch_name, #object -cpu_arch_name:	.asciz	"armv3" -		.size	cpu_arch_name, . - cpu_arch_name - -		.type	cpu_elf_name, #object -cpu_elf_name:	.asciz	"v3" -		.size	cpu_elf_name, . - cpu_elf_name - -		.type	cpu_arm6_name, #object -cpu_arm6_name:	.asciz	"ARM6" -		.size	cpu_arm6_name, . - cpu_arm6_name - -		.type	cpu_arm610_name, #object -cpu_arm610_name: -		.asciz	"ARM610" -		.size	cpu_arm610_name, . - cpu_arm610_name - -		.type	cpu_arm7_name, #object -cpu_arm7_name:	.asciz	"ARM7" -		.size	cpu_arm7_name, . - cpu_arm7_name - -		.type	cpu_arm710_name, #object -cpu_arm710_name: -		.asciz	"ARM710" -		.size	cpu_arm710_name, . - cpu_arm710_name +		string	cpu_arch_name, "armv3" +		string	cpu_elf_name, "v3" +		string	cpu_arm6_name, "ARM6" +		string	cpu_arm610_name, "ARM610" +		string	cpu_arm7_name, "ARM7" +		string	cpu_arm710_name, "ARM710"  		.align  		.section ".proc.info.init", #alloc, #execinstr -		.type	__arm6_proc_info, #object -__arm6_proc_info: -		.long	0x41560600 -		.long	0xfffffff0 -		.long	0x00000c1e -		.long   PMD_TYPE_SECT | \ -			PMD_BIT4 | \ -			PMD_SECT_AP_WRITE | \ -			PMD_SECT_AP_READ -		b	__arm6_setup -		.long	cpu_arch_name -		.long	cpu_elf_name -		.long	HWCAP_SWP | HWCAP_26BIT -		.long	cpu_arm6_name -		.long	arm6_processor_functions -		.long	v3_tlb_fns -		.long	v3_user_fns -		.long	v3_cache_fns -		.size	__arm6_proc_info, . - __arm6_proc_info - -		.type	__arm610_proc_info, #object -__arm610_proc_info: -		.long	0x41560610 -		.long	0xfffffff0 -		.long	0x00000c1e -		.long   PMD_TYPE_SECT | \ -			PMD_BIT4 | \ -			PMD_SECT_AP_WRITE | \ -			PMD_SECT_AP_READ -		b	__arm6_setup -		.long	cpu_arch_name -		.long	cpu_elf_name -		.long	HWCAP_SWP | HWCAP_26BIT -		.long	cpu_arm610_name -		.long	arm6_processor_functions -		.long	v3_tlb_fns -		.long	v3_user_fns -		.long	v3_cache_fns -		.size	__arm610_proc_info, . - __arm610_proc_info - -		.type	__arm7_proc_info, #object -__arm7_proc_info: -		.long	0x41007000 -		.long	0xffffff00 -		.long	0x00000c1e +.macro arm67_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, \ +	cpu_mm_mmu_flags:req, cpu_flush:req, cpu_proc_funcs:req +		.type	__\name\()_proc_info, #object +__\name\()_proc_info: +		.long	\cpu_val +		.long	\cpu_mask +		.long	\cpu_mm_mmu_flags  		.long   PMD_TYPE_SECT | \  			PMD_BIT4 | \  			PMD_SECT_AP_WRITE | \  			PMD_SECT_AP_READ -		b	__arm7_setup +		b	\cpu_flush  		.long	cpu_arch_name  		.long	cpu_elf_name  		.long	HWCAP_SWP | HWCAP_26BIT -		.long	cpu_arm7_name -		.long	arm7_processor_functions +		.long	\cpu_name +		.long	\cpu_proc_funcs  		.long	v3_tlb_fns  		.long	v3_user_fns  		.long	v3_cache_fns -		.size	__arm7_proc_info, . - __arm7_proc_info +		.size	__\name\()_proc_info, . - __\name\()_proc_info +.endm -		.type	__arm710_proc_info, #object -__arm710_proc_info: -		.long	0x41007100 -		.long	0xfff8ff00 -		.long   PMD_TYPE_SECT | \ +	arm67_proc_info	arm6,	0x41560600, 0xfffffff0, cpu_arm6_name, \ +		0x00000c1e, __arm6_setup, arm6_processor_functions +	arm67_proc_info	arm610,	0x41560610, 0xfffffff0, cpu_arm610_name, \ +		0x00000c1e, __arm6_setup, arm6_processor_functions +	arm67_proc_info	arm7,	0x41007000, 0xffffff00, cpu_arm7_name, \ +		0x00000c1e, __arm7_setup, arm7_processor_functions +	arm67_proc_info	arm710,	0x41007100, 0xfff8ff00, cpu_arm710_name, \ +			PMD_TYPE_SECT | \  			PMD_SECT_BUFFERABLE | \  			PMD_SECT_CACHEABLE | \  			PMD_BIT4 | \  			PMD_SECT_AP_WRITE | \ -			PMD_SECT_AP_READ -		.long   PMD_TYPE_SECT | \ -			PMD_BIT4 | \ -			PMD_SECT_AP_WRITE | \ -			PMD_SECT_AP_READ -		b	__arm7_setup -		.long	cpu_arch_name -		.long	cpu_elf_name -		.long	HWCAP_SWP | HWCAP_26BIT -		.long	cpu_arm710_name -		.long	arm7_processor_functions -		.long	v3_tlb_fns -		.long	v3_user_fns -		.long	v3_cache_fns -		.size	__arm710_proc_info, . - __arm710_proc_info +			PMD_SECT_AP_READ, \ +		__arm7_setup, arm7_processor_functions diff --git a/arch/arm/mm/proc-arm720.S b/arch/arm/mm/proc-arm720.S index 7a06e5964f59..55f4e290665a 100644 --- a/arch/arm/mm/proc-arm720.S +++ b/arch/arm/mm/proc-arm720.S @@ -169,46 +169,15 @@ arm720_crval:  	crval	clear=0x00002f3f, mmuset=0x0000213d, ucset=0x00000130  		__INITDATA - -/* - * Purpose : Function pointers used to access above functions - all calls - *	     come through these - */ -		.type	arm720_processor_functions, #object -ENTRY(arm720_processor_functions) -		.word	v4t_late_abort -		.word	legacy_pabort -		.word	cpu_arm720_proc_init -		.word	cpu_arm720_proc_fin -		.word	cpu_arm720_reset -		.word	cpu_arm720_do_idle -		.word	cpu_arm720_dcache_clean_area -		.word	cpu_arm720_switch_mm -		.word	cpu_arm720_set_pte_ext -		.word	0 -		.word	0 -		.word	0 -		.size	arm720_processor_functions, . - arm720_processor_functions +	@ define struct processor (see <asm/proc-fns.h> and proc-macros.S) +	define_processor_functions arm720, dabort=v4t_late_abort, pabort=legacy_pabort  		.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_arm710_name, #object -cpu_arm710_name: -		.asciz	"ARM710T" -		.size	cpu_arm710_name, . - cpu_arm710_name - -		.type	cpu_arm720_name, #object -cpu_arm720_name: -		.asciz	"ARM720T" -		.size	cpu_arm720_name, . - cpu_arm720_name +	string	cpu_arch_name, "armv4t" +	string	cpu_elf_name, "v4" +	string	cpu_arm710_name, "ARM710T" +	string	cpu_arm720_name, "ARM720T"  		.align @@ -218,10 +187,11 @@ cpu_arm720_name:  		.section ".proc.info.init", #alloc, #execinstr -		.type	__arm710_proc_info, #object -__arm710_proc_info: -		.long	0x41807100				@ cpu_val -		.long	0xffffff00				@ cpu_mask +.macro arm720_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cpu_flush:req +		.type	__\name\()_proc_info,#object +__\name\()_proc_info: +		.long	\cpu_val +		.long	\cpu_mask  		.long   PMD_TYPE_SECT | \  			PMD_SECT_BUFFERABLE | \  			PMD_SECT_CACHEABLE | \ @@ -232,38 +202,17 @@ __arm710_proc_info:  			PMD_BIT4 | \  			PMD_SECT_AP_WRITE | \  			PMD_SECT_AP_READ -		b	__arm710_setup				@ cpu_flush +		b	\cpu_flush				@ cpu_flush  		.long	cpu_arch_name				@ arch_name  		.long	cpu_elf_name				@ elf_name  		.long	HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB	@ elf_hwcap -		.long	cpu_arm710_name				@ name +		.long	\cpu_name  		.long	arm720_processor_functions  		.long	v4_tlb_fns  		.long	v4wt_user_fns  		.long	v4_cache_fns -		.size	__arm710_proc_info, . - __arm710_proc_info +		.size	__\name\()_proc_info, . - __\name\()_proc_info +.endm -		.type	__arm720_proc_info, #object -__arm720_proc_info: -		.long	0x41807200				@ cpu_val -		.long	0xffffff00				@ cpu_mask -		.long   PMD_TYPE_SECT | \ -			PMD_SECT_BUFFERABLE | \ -			PMD_SECT_CACHEABLE | \ -			PMD_BIT4 | \ -			PMD_SECT_AP_WRITE | \ -			PMD_SECT_AP_READ -		.long   PMD_TYPE_SECT | \ -			PMD_BIT4 | \ -			PMD_SECT_AP_WRITE | \ -			PMD_SECT_AP_READ -		b	__arm720_setup				@ cpu_flush -		.long	cpu_arch_name				@ arch_name -		.long	cpu_elf_name				@ elf_name -		.long	HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB	@ elf_hwcap -		.long	cpu_arm720_name				@ name -		.long	arm720_processor_functions -		.long	v4_tlb_fns -		.long	v4wt_user_fns -		.long	v4_cache_fns -		.size	__arm720_proc_info, . - __arm720_proc_info +	arm720_proc_info arm710, 0x41807100, 0xffffff00, cpu_arm710_name, __arm710_setup +	arm720_proc_info arm720, 0x41807200, 0xffffff00, cpu_arm720_name, __arm720_setup diff --git a/arch/arm/mm/proc-arm740.S b/arch/arm/mm/proc-arm740.S index 6f9d12effee1..4506be3adda6 100644 --- a/arch/arm/mm/proc-arm740.S +++ b/arch/arm/mm/proc-arm740.S @@ -17,6 +17,8 @@  #include <asm/pgtable.h>  #include <asm/ptrace.h> +#include "proc-macros.S" +  	.text  /*   * cpu_arm740_proc_init() @@ -115,42 +117,14 @@ __arm740_setup:  	__INITDATA -/* - * Purpose : Function pointers used to access above functions - all calls - *	     come through these - */ -	.type	arm740_processor_functions, #object -ENTRY(arm740_processor_functions) -	.word	v4t_late_abort -	.word	legacy_pabort -	.word	cpu_arm740_proc_init -	.word	cpu_arm740_proc_fin -	.word	cpu_arm740_reset -	.word   cpu_arm740_do_idle -	.word	cpu_arm740_dcache_clean_area -	.word	cpu_arm740_switch_mm -	.word	0			@ cpu_*_set_pte -	.word	0 -	.word	0 -	.word	0 -	.size	arm740_processor_functions, . - arm740_processor_functions +	@ define struct processor (see <asm/proc-fns.h> and proc-macros.S) +	define_processor_functions arm740, dabort=v4t_late_abort, pabort=legacy_pabort, nommu=1  	.section ".rodata" -	.type	cpu_arch_name, #object -cpu_arch_name: -	.asciz	"armv4" -	.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_arm740_name, #object -cpu_arm740_name: -	.ascii	"ARM740T" -	.size	cpu_arm740_name, . - cpu_arm740_name +	string	cpu_arch_name, "armv4" +	string	cpu_elf_name, "v4" +	string	cpu_arm740_name, "ARM740T"  	.align @@ -170,5 +144,3 @@ __arm740_proc_info:  	.long	0  	.long	v3_cache_fns			@ cache model  	.size	__arm740_proc_info, . - __arm740_proc_info - - diff --git a/arch/arm/mm/proc-arm7tdmi.S b/arch/arm/mm/proc-arm7tdmi.S index 537ffcb0646d..7e0e1fe4ed4d 100644 --- a/arch/arm/mm/proc-arm7tdmi.S +++ b/arch/arm/mm/proc-arm7tdmi.S @@ -17,6 +17,8 @@  #include <asm/pgtable.h>  #include <asm/ptrace.h> +#include "proc-macros.S" +  	.text  /*   * cpu_arm7tdmi_proc_init() @@ -55,197 +57,57 @@ __arm7tdmi_setup:  		__INITDATA -/* - * Purpose : Function pointers used to access above functions - all calls - *	     come through these - */ -		.type	arm7tdmi_processor_functions, #object -ENTRY(arm7tdmi_processor_functions) -		.word	v4t_late_abort -		.word	legacy_pabort -		.word	cpu_arm7tdmi_proc_init -		.word	cpu_arm7tdmi_proc_fin -		.word	cpu_arm7tdmi_reset -		.word	cpu_arm7tdmi_do_idle -		.word	cpu_arm7tdmi_dcache_clean_area -		.word	cpu_arm7tdmi_switch_mm -		.word	0		@ cpu_*_set_pte -		.word	0 -		.word	0 -		.word	0 -		.size	arm7tdmi_processor_functions, . - arm7tdmi_processor_functions +		@ define struct processor (see <asm/proc-fns.h> and proc-macros.S) +		define_processor_functions arm7tdmi, dabort=v4t_late_abort, pabort=legacy_pabort, nommu=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_arm7tdmi_name, #object -cpu_arm7tdmi_name: -		.asciz	"ARM7TDMI" -		.size	cpu_arm7tdmi_name, . - cpu_arm7tdmi_name - -		.type	cpu_triscenda7_name, #object -cpu_triscenda7_name: -		.asciz	"Triscend-A7x" -		.size	cpu_triscenda7_name, . - cpu_triscenda7_name - -		.type	cpu_at91_name, #object -cpu_at91_name: -		.asciz	"Atmel-AT91M40xxx" -		.size	cpu_at91_name, . - cpu_at91_name - -		.type	cpu_s3c3410_name, #object -cpu_s3c3410_name: -		.asciz	"Samsung-S3C3410" -		.size	cpu_s3c3410_name, . - cpu_s3c3410_name - -		.type	cpu_s3c44b0x_name, #object -cpu_s3c44b0x_name: -		.asciz	"Samsung-S3C44B0x" -		.size	cpu_s3c44b0x_name, . - cpu_s3c44b0x_name - -		.type	cpu_s3c4510b, #object -cpu_s3c4510b_name: -		.asciz	"Samsung-S3C4510B" -		.size	cpu_s3c4510b_name, . - cpu_s3c4510b_name - -		.type	cpu_s3c4530_name, #object -cpu_s3c4530_name: -		.asciz	"Samsung-S3C4530" -		.size	cpu_s3c4530_name, . - cpu_s3c4530_name - -		.type	cpu_netarm_name, #object -cpu_netarm_name: -		.asciz	"NETARM" -		.size	cpu_netarm_name, . - cpu_netarm_name +		string	cpu_arch_name, "armv4t" +		string	cpu_elf_name, "v4" +		string	cpu_arm7tdmi_name, "ARM7TDMI" +		string	cpu_triscenda7_name, "Triscend-A7x" +		string	cpu_at91_name, "Atmel-AT91M40xxx" +		string	cpu_s3c3410_name, "Samsung-S3C3410" +		string	cpu_s3c44b0x_name, "Samsung-S3C44B0x" +		string	cpu_s3c4510b_name, "Samsung-S3C4510B" +		string	cpu_s3c4530_name, "Samsung-S3C4530" +		string	cpu_netarm_name, "NETARM"  		.align  		.section ".proc.info.init", #alloc, #execinstr -		.type	__arm7tdmi_proc_info, #object -__arm7tdmi_proc_info: -		.long	0x41007700 -		.long	0xfff8ff00 -		.long	0 -		.long	0 -		b	__arm7tdmi_setup -		.long	cpu_arch_name -		.long	cpu_elf_name -		.long	HWCAP_SWP | HWCAP_26BIT -		.long	cpu_arm7tdmi_name -		.long	arm7tdmi_processor_functions -		.long	0 -		.long	0 -		.long	v4_cache_fns -		.size	__arm7tdmi_proc_info, . - __arm7tdmi_proc_info - -		.type	__triscenda7_proc_info, #object -__triscenda7_proc_info: -		.long	0x0001d2ff -		.long	0x0001ffff -		.long	0 -		.long	0 -		b	__arm7tdmi_setup -		.long	cpu_arch_name -		.long	cpu_elf_name -		.long	HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT -		.long	cpu_triscenda7_name -		.long	arm7tdmi_processor_functions -		.long	0 -		.long	0 -		.long	v4_cache_fns -		.size	__triscenda7_proc_info, . - __triscenda7_proc_info - -		.type	__at91_proc_info, #object -__at91_proc_info: -		.long	0x14000040 -		.long	0xfff000e0 +.macro arm7tdmi_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, \ +	extra_hwcaps=0 +		.type	__\name\()_proc_info, #object +__\name\()_proc_info: +		.long	\cpu_val +		.long	\cpu_mask  		.long	0  		.long	0  		b	__arm7tdmi_setup  		.long	cpu_arch_name  		.long	cpu_elf_name -		.long	HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT -		.long	cpu_at91_name +		.long	HWCAP_SWP | HWCAP_26BIT | ( \extra_hwcaps ) +		.long	\cpu_name  		.long	arm7tdmi_processor_functions  		.long	0  		.long	0  		.long	v4_cache_fns -		.size	__at91_proc_info, . - __at91_proc_info +		.size	__\name\()_proc_info, . - __\name\()_proc_info +.endm -		.type	__s3c4510b_proc_info, #object -__s3c4510b_proc_info: -		.long	0x36365000 -		.long	0xfffff000 -		.long	0 -		.long	0 -		b	__arm7tdmi_setup -		.long	cpu_arch_name -		.long	cpu_elf_name -		.long	HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT -		.long	cpu_s3c4510b_name -		.long	arm7tdmi_processor_functions -		.long	0 -		.long	0 -		.long	v4_cache_fns -		.size	__s3c4510b_proc_info, . - __s3c4510b_proc_info - -		.type	__s3c4530_proc_info, #object -__s3c4530_proc_info: -		.long	0x4c000000 -		.long	0xfff000e0 -		.long	0 -		.long	0 -		b	__arm7tdmi_setup -		.long	cpu_arch_name -		.long	cpu_elf_name -		.long	HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT -		.long	cpu_s3c4530_name -		.long	arm7tdmi_processor_functions -		.long	0 -		.long	0 -		.long	v4_cache_fns -		.size	__s3c4530_proc_info, . - __s3c4530_proc_info - -		.type	__s3c3410_proc_info, #object -__s3c3410_proc_info: -		.long	0x34100000 -		.long	0xffff0000 -		.long	0 -		.long	0 -		b	__arm7tdmi_setup -		.long	cpu_arch_name -		.long	cpu_elf_name -		.long	HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT -		.long	cpu_s3c3410_name -		.long	arm7tdmi_processor_functions -		.long	0 -		.long	0 -		.long	v4_cache_fns -		.size	__s3c3410_proc_info, . - __s3c3410_proc_info - -		.type	__s3c44b0x_proc_info, #object -__s3c44b0x_proc_info: -		.long	0x44b00000 -		.long	0xffff0000 -		.long	0 -		.long	0 -		b	__arm7tdmi_setup -		.long	cpu_arch_name -		.long	cpu_elf_name -		.long	HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT -		.long	cpu_s3c44b0x_name -		.long	arm7tdmi_processor_functions -		.long	0 -		.long	0 -		.long	v4_cache_fns -		.size	__s3c44b0x_proc_info, . - __s3c44b0x_proc_info +		arm7tdmi_proc_info arm7tdmi, 0x41007700, 0xfff8ff00, \ +			cpu_arm7tdmi_name +		arm7tdmi_proc_info triscenda7, 0x0001d2ff, 0x0001ffff, \ +			cpu_triscenda7_name, extra_hwcaps=HWCAP_THUMB +		arm7tdmi_proc_info at91, 0x14000040, 0xfff000e0, \ +			cpu_at91_name, extra_hwcaps=HWCAP_THUMB +		arm7tdmi_proc_info s3c4510b, 0x36365000, 0xfffff000, \ +			cpu_s3c4510b_name, extra_hwcaps=HWCAP_THUMB +		arm7tdmi_proc_info s3c4530, 0x4c000000, 0xfff000e0, \ +			cpu_s3c4530_name, extra_hwcaps=HWCAP_THUMB +		arm7tdmi_proc_info s3c3410, 0x34100000, 0xffff0000, \ +			cpu_s3c3410_name, extra_hwcaps=HWCAP_THUMB +		arm7tdmi_proc_info s3c44b0x, 0x44b00000, 0xffff0000, \ +			cpu_s3c44b0x_name, extra_hwcaps=HWCAP_THUMB diff --git a/arch/arm/mm/proc-arm920.S b/arch/arm/mm/proc-arm920.S index bf8a1d1cccb6..0dea376feaaa 100644 --- a/arch/arm/mm/proc-arm920.S +++ b/arch/arm/mm/proc-arm920.S @@ -315,18 +315,8 @@ ENTRY(arm920_dma_unmap_area)  	mov	pc, lr  ENDPROC(arm920_dma_unmap_area) -ENTRY(arm920_cache_fns) -	.long	arm920_flush_icache_all -	.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 @@ -450,43 +440,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 -	.word	cpu_arm920_suspend_size -	.word	cpu_arm920_do_suspend -	.word	cpu_arm920_do_resume -	.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 diff --git a/arch/arm/mm/proc-arm922.S b/arch/arm/mm/proc-arm922.S index 95ba1fc56e4d..490e18833857 100644 --- a/arch/arm/mm/proc-arm922.S +++ b/arch/arm/mm/proc-arm922.S @@ -317,18 +317,8 @@ ENTRY(arm922_dma_unmap_area)  	mov	pc, lr  ENDPROC(arm922_dma_unmap_area) -ENTRY(arm922_cache_fns) -	.long	arm922_flush_icache_all -	.long	arm922_flush_kern_cache_all -	.long	arm922_flush_user_cache_all -	.long	arm922_flush_user_cache_range -	.long	arm922_coherent_kern_range -	.long	arm922_coherent_user_range -	.long	arm922_flush_kern_dcache_area -	.long	arm922_dma_map_area -	.long	arm922_dma_unmap_area -	.long	arm922_dma_flush_range - +	@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) +	define_cache_functions arm922  #endif @@ -420,43 +410,14 @@ arm922_crval:  	crval	clear=0x00003f3f, mmuset=0x00003135, ucset=0x00001130  	__INITDATA - -/* - * Purpose : Function pointers used to access above functions - all calls - *	     come through these - */ -	.type	arm922_processor_functions, #object -arm922_processor_functions: -	.word	v4t_early_abort -	.word	legacy_pabort -	.word	cpu_arm922_proc_init -	.word	cpu_arm922_proc_fin -	.word	cpu_arm922_reset -	.word   cpu_arm922_do_idle -	.word	cpu_arm922_dcache_clean_area -	.word	cpu_arm922_switch_mm -	.word	cpu_arm922_set_pte_ext -	.word	0 -	.word	0 -	.word	0 -	.size	arm922_processor_functions, . - arm922_processor_functions +	@ define struct processor (see <asm/proc-fns.h> and proc-macros.S) +	define_processor_functions arm922, dabort=v4t_early_abort, pabort=legacy_pabort  	.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_arm922_name, #object -cpu_arm922_name: -	.asciz	"ARM922T" -	.size	cpu_arm922_name, . - cpu_arm922_name +	string	cpu_arch_name, "armv4t" +	string	cpu_elf_name, "v4" +	string	cpu_arm922_name, "ARM922T"  	.align diff --git a/arch/arm/mm/proc-arm925.S b/arch/arm/mm/proc-arm925.S index 541e4774eea1..51d494be057e 100644 --- a/arch/arm/mm/proc-arm925.S +++ b/arch/arm/mm/proc-arm925.S @@ -372,17 +372,8 @@ ENTRY(arm925_dma_unmap_area)  	mov	pc, lr  ENDPROC(arm925_dma_unmap_area) -ENTRY(arm925_cache_fns) -	.long	arm925_flush_icache_all -	.long	arm925_flush_kern_cache_all -	.long	arm925_flush_user_cache_all -	.long	arm925_flush_user_cache_range -	.long	arm925_coherent_kern_range -	.long	arm925_coherent_user_range -	.long	arm925_flush_kern_dcache_area -	.long	arm925_dma_map_area -	.long	arm925_dma_unmap_area -	.long	arm925_dma_flush_range +	@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) +	define_cache_functions arm925  ENTRY(cpu_arm925_dcache_clean_area)  #ifndef CONFIG_CPU_DCACHE_WRITETHROUGH @@ -487,52 +478,24 @@ arm925_crval:  	crval	clear=0x00007f3f, mmuset=0x0000313d, ucset=0x00001130  	__INITDATA - -/* - * Purpose : Function pointers used to access above functions - all calls - *	     come through these - */ -	.type	arm925_processor_functions, #object -arm925_processor_functions: -	.word	v4t_early_abort -	.word	legacy_pabort -	.word	cpu_arm925_proc_init -	.word	cpu_arm925_proc_fin -	.word	cpu_arm925_reset -	.word   cpu_arm925_do_idle -	.word	cpu_arm925_dcache_clean_area -	.word	cpu_arm925_switch_mm -	.word	cpu_arm925_set_pte_ext -	.word	0 -	.word	0 -	.word	0 -	.size	arm925_processor_functions, . - arm925_processor_functions +	@ define struct processor (see <asm/proc-fns.h> and proc-macros.S) +	define_processor_functions arm925, dabort=v4t_early_abort, pabort=legacy_pabort  	.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_arm925_name, #object -cpu_arm925_name: -	.asciz	"ARM925T" -	.size	cpu_arm925_name, . - cpu_arm925_name +	string	cpu_arch_name, "armv4t" +	string	cpu_elf_name, "v4" +	string	cpu_arm925_name, "ARM925T"  	.align  	.section ".proc.info.init", #alloc, #execinstr -	.type	__arm925_proc_info,#object -__arm925_proc_info: -	.long	0x54029250 -	.long	0xfffffff0 +.macro arm925_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache +	.type	__\name\()_proc_info,#object +__\name\()_proc_info: +	.long	\cpu_val +	.long	\cpu_mask  	.long   PMD_TYPE_SECT | \  		PMD_BIT4 | \  		PMD_SECT_AP_WRITE | \ @@ -550,27 +513,8 @@ __arm925_proc_info:  	.long	v4wbi_tlb_fns  	.long	v4wb_user_fns  	.long	arm925_cache_fns -	.size	__arm925_proc_info, . - __arm925_proc_info +	.size	__\name\()_proc_info, . - __\name\()_proc_info +.endm -	.type	__arm915_proc_info,#object -__arm915_proc_info: -	.long	0x54029150 -	.long	0xfffffff0 -	.long   PMD_TYPE_SECT | \ -		PMD_BIT4 | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	.long   PMD_TYPE_SECT | \ -		PMD_BIT4 | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	b	__arm925_setup -	.long	cpu_arch_name -	.long	cpu_elf_name -	.long	HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB -	.long	cpu_arm925_name -	.long	arm925_processor_functions -	.long	v4wbi_tlb_fns -	.long	v4wb_user_fns -	.long	arm925_cache_fns -	.size	__arm925_proc_info, . - __arm925_proc_info +	arm925_proc_info arm925, 0x54029250, 0xfffffff0, cpu_arm925_name +	arm925_proc_info arm915, 0x54029150, 0xfffffff0, cpu_arm925_name diff --git a/arch/arm/mm/proc-arm926.S b/arch/arm/mm/proc-arm926.S index 0ed85d930c09..b2f9bde8ecef 100644 --- a/arch/arm/mm/proc-arm926.S +++ b/arch/arm/mm/proc-arm926.S @@ -335,17 +335,8 @@ ENTRY(arm926_dma_unmap_area)  	mov	pc, lr  ENDPROC(arm926_dma_unmap_area) -ENTRY(arm926_cache_fns) -	.long	arm926_flush_icache_all -	.long	arm926_flush_kern_cache_all -	.long	arm926_flush_user_cache_all -	.long	arm926_flush_user_cache_range -	.long	arm926_coherent_kern_range -	.long	arm926_coherent_user_range -	.long	arm926_flush_kern_dcache_area -	.long	arm926_dma_map_area -	.long	arm926_dma_unmap_area -	.long	arm926_dma_flush_range +	@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) +	define_cache_functions arm926  ENTRY(cpu_arm926_dcache_clean_area)  #ifndef CONFIG_CPU_DCACHE_WRITETHROUGH @@ -475,42 +466,14 @@ arm926_crval:  	__INITDATA -/* - * Purpose : Function pointers used to access above functions - all calls - *	     come through these - */ -	.type	arm926_processor_functions, #object -arm926_processor_functions: -	.word	v5tj_early_abort -	.word	legacy_pabort -	.word	cpu_arm926_proc_init -	.word	cpu_arm926_proc_fin -	.word	cpu_arm926_reset -	.word	cpu_arm926_do_idle -	.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 +	@ define struct processor (see <asm/proc-fns.h> and proc-macros.S) +	define_processor_functions arm926, dabort=v5tj_early_abort, pabort=legacy_pabort, suspend=1  	.section ".rodata" -	.type	cpu_arch_name, #object -cpu_arch_name: -	.asciz	"armv5tej" -	.size	cpu_arch_name, . - cpu_arch_name - -	.type	cpu_elf_name, #object -cpu_elf_name: -	.asciz	"v5" -	.size	cpu_elf_name, . - cpu_elf_name - -	.type	cpu_arm926_name, #object -cpu_arm926_name: -	.asciz	"ARM926EJ-S" -	.size	cpu_arm926_name, . - cpu_arm926_name +	string	cpu_arch_name, "armv5tej" +	string	cpu_elf_name, "v5" +	string	cpu_arm926_name, "ARM926EJ-S"  	.align diff --git a/arch/arm/mm/proc-arm940.S b/arch/arm/mm/proc-arm940.S index 26aea3f71c26..ac750d506153 100644 --- a/arch/arm/mm/proc-arm940.S +++ b/arch/arm/mm/proc-arm940.S @@ -264,17 +264,8 @@ ENTRY(arm940_dma_unmap_area)  	mov	pc, lr  ENDPROC(arm940_dma_unmap_area) -ENTRY(arm940_cache_fns) -	.long	arm940_flush_icache_all -	.long	arm940_flush_kern_cache_all -	.long	arm940_flush_user_cache_all -	.long	arm940_flush_user_cache_range -	.long	arm940_coherent_kern_range -	.long	arm940_coherent_user_range -	.long	arm940_flush_kern_dcache_area -	.long	arm940_dma_map_area -	.long	arm940_dma_unmap_area -	.long	arm940_dma_flush_range +	@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) +	define_cache_functions arm940  	__CPUINIT @@ -348,42 +339,14 @@ __arm940_setup:  	__INITDATA -/* - * Purpose : Function pointers used to access above functions - all calls - *	     come through these - */ -	.type	arm940_processor_functions, #object -ENTRY(arm940_processor_functions) -	.word	nommu_early_abort -	.word	legacy_pabort -	.word	cpu_arm940_proc_init -	.word	cpu_arm940_proc_fin -	.word	cpu_arm940_reset -	.word   cpu_arm940_do_idle -	.word	cpu_arm940_dcache_clean_area -	.word	cpu_arm940_switch_mm -	.word	0		@ cpu_*_set_pte -	.word	0 -	.word	0 -	.word	0 -	.size	arm940_processor_functions, . - arm940_processor_functions +	@ define struct processor (see <asm/proc-fns.h> and proc-macros.S) +	define_processor_functions arm940, dabort=nommu_early_abort, pabort=legacy_pabort, nommu=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_arm940_name, #object -cpu_arm940_name: -	.ascii	"ARM940T" -	.size	cpu_arm940_name, . - cpu_arm940_name +	string	cpu_arch_name, "armv4t" +	string	cpu_elf_name, "v4" +	string	cpu_arm940_name, "ARM940T"  	.align diff --git a/arch/arm/mm/proc-arm946.S b/arch/arm/mm/proc-arm946.S index 8063345406fe..f8f7ea34bfc5 100644 --- a/arch/arm/mm/proc-arm946.S +++ b/arch/arm/mm/proc-arm946.S @@ -306,18 +306,8 @@ ENTRY(arm946_dma_unmap_area)  	mov	pc, lr  ENDPROC(arm946_dma_unmap_area) -ENTRY(arm946_cache_fns) -	.long	arm946_flush_icache_all -	.long	arm946_flush_kern_cache_all -	.long	arm946_flush_user_cache_all -	.long	arm946_flush_user_cache_range -	.long	arm946_coherent_kern_range -	.long	arm946_coherent_user_range -	.long	arm946_flush_kern_dcache_area -	.long	arm946_dma_map_area -	.long	arm946_dma_unmap_area -	.long	arm946_dma_flush_range - +	@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) +	define_cache_functions arm946  ENTRY(cpu_arm946_dcache_clean_area)  #ifndef CONFIG_CPU_DCACHE_WRITETHROUGH @@ -403,43 +393,14 @@ __arm946_setup:  	__INITDATA -/* - * Purpose : Function pointers used to access above functions - all calls - *	     come through these - */ -	.type	arm946_processor_functions, #object -ENTRY(arm946_processor_functions) -	.word	nommu_early_abort -	.word	legacy_pabort -	.word	cpu_arm946_proc_init -	.word	cpu_arm946_proc_fin -	.word	cpu_arm946_reset -	.word   cpu_arm946_do_idle - -	.word	cpu_arm946_dcache_clean_area -	.word	cpu_arm946_switch_mm -	.word	0		@ cpu_*_set_pte -	.word	0 -	.word	0 -	.word	0 -	.size	arm946_processor_functions, . - arm946_processor_functions +	@ define struct processor (see <asm/proc-fns.h> and proc-macros.S) +	define_processor_functions arm946, dabort=nommu_early_abort, pabort=legacy_pabort, nommu=1  	.section ".rodata" -	.type	cpu_arch_name, #object -cpu_arch_name: -	.asciz	"armv5te" -	.size	cpu_arch_name, . - cpu_arch_name - -	.type	cpu_elf_name, #object -cpu_elf_name: -	.asciz	"v5t" -	.size	cpu_elf_name, . - cpu_elf_name - -	.type	cpu_arm946_name, #object -cpu_arm946_name: -	.ascii	"ARM946E-S" -	.size	cpu_arm946_name, . - cpu_arm946_name +	string	cpu_arch_name, "armv5te" +	string	cpu_elf_name, "v5t" +	string	cpu_arm946_name, "ARM946E-S"  	.align diff --git a/arch/arm/mm/proc-arm9tdmi.S b/arch/arm/mm/proc-arm9tdmi.S index 546b54da1005..2120f9e2af7f 100644 --- a/arch/arm/mm/proc-arm9tdmi.S +++ b/arch/arm/mm/proc-arm9tdmi.S @@ -17,6 +17,8 @@  #include <asm/pgtable.h>  #include <asm/ptrace.h> +#include "proc-macros.S" +  	.text  /*   * cpu_arm9tdmi_proc_init() @@ -55,82 +57,38 @@ __arm9tdmi_setup:  		__INITDATA -/* - * Purpose : Function pointers used to access above functions - all calls - *	     come through these - */ -		.type	arm9tdmi_processor_functions, #object -ENTRY(arm9tdmi_processor_functions) -		.word	nommu_early_abort -		.word	legacy_pabort -		.word	cpu_arm9tdmi_proc_init -		.word	cpu_arm9tdmi_proc_fin -		.word	cpu_arm9tdmi_reset -		.word	cpu_arm9tdmi_do_idle -		.word	cpu_arm9tdmi_dcache_clean_area -		.word	cpu_arm9tdmi_switch_mm -		.word	0		@ cpu_*_set_pte -		.word	0 -		.word	0 -		.word	0 -		.size	arm9tdmi_processor_functions, . - arm9tdmi_processor_functions +		@ define struct processor (see <asm/proc-fns.h> and proc-macros.S) +		define_processor_functions arm9tdmi, dabort=nommu_early_abort, pabort=legacy_pabort, nommu=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_arm9tdmi_name, #object -cpu_arm9tdmi_name: -		.asciz	"ARM9TDMI" -		.size	cpu_arm9tdmi_name, . - cpu_arm9tdmi_name - -		.type	cpu_p2001_name, #object -cpu_p2001_name: -		.asciz	"P2001" -		.size	cpu_p2001_name, . - cpu_p2001_name +		string	cpu_arch_name, "armv4t" +		string	cpu_elf_name, "v4" +		string	cpu_arm9tdmi_name, "ARM9TDMI" +		string	cpu_p2001_name, "P2001"  		.align  		.section ".proc.info.init", #alloc, #execinstr -		.type	__arm9tdmi_proc_info, #object -__arm9tdmi_proc_info: -		.long	0x41009900 -		.long	0xfff8ff00 +.macro arm9tdmi_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req +		.type	__\name\()_proc_info, #object +__\name\()_proc_info: +		.long	\cpu_val +		.long	\cpu_mask  		.long	0  		.long	0  		b	__arm9tdmi_setup  		.long	cpu_arch_name  		.long	cpu_elf_name  		.long	HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT -		.long	cpu_arm9tdmi_name +		.long	\cpu_name  		.long	arm9tdmi_processor_functions  		.long	0  		.long	0  		.long	v4_cache_fns -		.size	__arm9tdmi_proc_info, . - __arm9tdmi_proc_info +		.size	__\name\()_proc_info, . - __\name\()_proc_info +.endm -		.type	__p2001_proc_info, #object -__p2001_proc_info: -		.long	0x41029000 -		.long	0xffffffff -		.long	0 -		.long	0 -		b	__arm9tdmi_setup -		.long	cpu_arch_name -		.long	cpu_elf_name -		.long	HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT -		.long	cpu_p2001_name -		.long	arm9tdmi_processor_functions -		.long	0 -		.long	0 -		.long	v4_cache_fns -		.size	__p2001_proc_info, . - __p2001_proc_info +	arm9tdmi_proc_info arm9tdmi, 0x41009900, 0xfff8ff00, cpu_arm9tdmi_name +	arm9tdmi_proc_info p2001, 0x41029000, 0xffffffff, cpu_p2001_name diff --git a/arch/arm/mm/proc-fa526.S b/arch/arm/mm/proc-fa526.S index fc2a4ae15cf4..4c7a5710472b 100644 --- a/arch/arm/mm/proc-fa526.S +++ b/arch/arm/mm/proc-fa526.S @@ -180,42 +180,14 @@ fa526_cr1_set:  	__INITDATA -/* - * Purpose : Function pointers used to access above functions - all calls - *	     come through these - */ -	.type	fa526_processor_functions, #object -fa526_processor_functions: -	.word	v4_early_abort -	.word	legacy_pabort -	.word	cpu_fa526_proc_init -	.word	cpu_fa526_proc_fin -	.word	cpu_fa526_reset -	.word   cpu_fa526_do_idle -	.word	cpu_fa526_dcache_clean_area -	.word	cpu_fa526_switch_mm -	.word	cpu_fa526_set_pte_ext -	.word	0 -	.word	0 -	.word	0 -	.size	fa526_processor_functions, . - fa526_processor_functions +	@ define struct processor (see <asm/proc-fns.h> and proc-macros.S) +	define_processor_functions fa526, dabort=v4_early_abort, pabort=legacy_pabort  	.section ".rodata" -	.type	cpu_arch_name, #object -cpu_arch_name: -	.asciz	"armv4" -	.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_fa526_name, #object -cpu_fa526_name: -	.asciz	"FA526" -	.size	cpu_fa526_name, . - cpu_fa526_name +	string	cpu_arch_name, "armv4" +	string	cpu_elf_name, "v4" +	string	cpu_fa526_name, "FA526"  	.align diff --git a/arch/arm/mm/proc-feroceon.S b/arch/arm/mm/proc-feroceon.S index d3883eed7a4a..8a6c2f78c1c3 100644 --- a/arch/arm/mm/proc-feroceon.S +++ b/arch/arm/mm/proc-feroceon.S @@ -411,29 +411,28 @@ ENTRY(feroceon_dma_unmap_area)  	mov	pc, lr  ENDPROC(feroceon_dma_unmap_area) -ENTRY(feroceon_cache_fns) -	.long	feroceon_flush_icache_all -	.long	feroceon_flush_kern_cache_all -	.long	feroceon_flush_user_cache_all -	.long	feroceon_flush_user_cache_range -	.long	feroceon_coherent_kern_range -	.long	feroceon_coherent_user_range -	.long	feroceon_flush_kern_dcache_area -	.long	feroceon_dma_map_area -	.long	feroceon_dma_unmap_area -	.long	feroceon_dma_flush_range +	@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) +	define_cache_functions feroceon -ENTRY(feroceon_range_cache_fns) -	.long	feroceon_flush_icache_all -	.long	feroceon_flush_kern_cache_all -	.long	feroceon_flush_user_cache_all -	.long	feroceon_flush_user_cache_range -	.long	feroceon_coherent_kern_range -	.long	feroceon_coherent_user_range -	.long	feroceon_range_flush_kern_dcache_area -	.long	feroceon_range_dma_map_area -	.long	feroceon_dma_unmap_area -	.long	feroceon_range_dma_flush_range +.macro range_alias basename +	.globl feroceon_range_\basename +	.type feroceon_range_\basename , %function +	.equ feroceon_range_\basename , feroceon_\basename +.endm + +/* + * Most of the cache functions are unchanged for this case. + * Export suitable alias symbols for the unchanged functions: + */ +	range_alias flush_icache_all +	range_alias flush_user_cache_all +	range_alias flush_kern_cache_all +	range_alias flush_user_cache_range +	range_alias coherent_kern_range +	range_alias coherent_user_range +	range_alias dma_unmap_area + +	define_cache_functions feroceon_range  	.align	5  ENTRY(cpu_feroceon_dcache_clean_area) @@ -539,93 +538,27 @@ feroceon_crval:  	__INITDATA -/* - * Purpose : Function pointers used to access above functions - all calls - *	     come through these - */ -	.type	feroceon_processor_functions, #object -feroceon_processor_functions: -	.word	v5t_early_abort -	.word	legacy_pabort -	.word	cpu_feroceon_proc_init -	.word	cpu_feroceon_proc_fin -	.word	cpu_feroceon_reset -	.word	cpu_feroceon_do_idle -	.word	cpu_feroceon_dcache_clean_area -	.word	cpu_feroceon_switch_mm -	.word	cpu_feroceon_set_pte_ext -	.word	0 -	.word	0 -	.word	0 -	.size	feroceon_processor_functions, . - feroceon_processor_functions +	@ define struct processor (see <asm/proc-fns.h> and proc-macros.S) +	define_processor_functions feroceon, dabort=v5t_early_abort, pabort=legacy_pabort  	.section ".rodata" -	.type	cpu_arch_name, #object -cpu_arch_name: -	.asciz	"armv5te" -	.size	cpu_arch_name, . - cpu_arch_name - -	.type	cpu_elf_name, #object -cpu_elf_name: -	.asciz	"v5" -	.size	cpu_elf_name, . - cpu_elf_name - -	.type	cpu_feroceon_name, #object -cpu_feroceon_name: -	.asciz	"Feroceon" -	.size	cpu_feroceon_name, . - cpu_feroceon_name - -	.type	cpu_88fr531_name, #object -cpu_88fr531_name: -	.asciz	"Feroceon 88FR531-vd" -	.size	cpu_88fr531_name, . - cpu_88fr531_name - -	.type	cpu_88fr571_name, #object -cpu_88fr571_name: -	.asciz	"Feroceon 88FR571-vd" -	.size	cpu_88fr571_name, . - cpu_88fr571_name - -	.type	cpu_88fr131_name, #object -cpu_88fr131_name: -	.asciz	"Feroceon 88FR131" -	.size	cpu_88fr131_name, . - cpu_88fr131_name +	string	cpu_arch_name, "armv5te" +	string	cpu_elf_name, "v5" +	string	cpu_feroceon_name, "Feroceon" +	string	cpu_88fr531_name, "Feroceon 88FR531-vd" +	string	cpu_88fr571_name, "Feroceon 88FR571-vd" +	string	cpu_88fr131_name, "Feroceon 88FR131"  	.align  	.section ".proc.info.init", #alloc, #execinstr -#ifdef CONFIG_CPU_FEROCEON_OLD_ID -	.type	__feroceon_old_id_proc_info,#object -__feroceon_old_id_proc_info: -	.long	0x41009260 -	.long	0xff00fff0 -	.long	PMD_TYPE_SECT | \ -		PMD_SECT_BUFFERABLE | \ -		PMD_SECT_CACHEABLE | \ -		PMD_BIT4 | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	.long	PMD_TYPE_SECT | \ -		PMD_BIT4 | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	b	__feroceon_setup -	.long	cpu_arch_name -	.long	cpu_elf_name -	.long	HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP -	.long	cpu_feroceon_name -	.long	feroceon_processor_functions -	.long	v4wbi_tlb_fns -	.long	feroceon_user_fns -	.long	feroceon_cache_fns -	.size	__feroceon_old_id_proc_info, . - __feroceon_old_id_proc_info -#endif - -	.type	__88fr531_proc_info,#object -__88fr531_proc_info: -	.long	0x56055310 -	.long	0xfffffff0 +.macro feroceon_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache:req +	.type	__\name\()_proc_info,#object +__\name\()_proc_info: +	.long	\cpu_val +	.long	\cpu_mask  	.long	PMD_TYPE_SECT | \  		PMD_SECT_BUFFERABLE | \  		PMD_SECT_CACHEABLE | \ @@ -640,59 +573,22 @@ __88fr531_proc_info:  	.long	cpu_arch_name  	.long	cpu_elf_name  	.long	HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP -	.long	cpu_88fr531_name +	.long	\cpu_name  	.long	feroceon_processor_functions  	.long	v4wbi_tlb_fns  	.long	feroceon_user_fns -	.long	feroceon_cache_fns -	.size	__88fr531_proc_info, . - __88fr531_proc_info +	.long	\cache +	 .size	__\name\()_proc_info, . - __\name\()_proc_info +.endm -	.type	__88fr571_proc_info,#object -__88fr571_proc_info: -	.long	0x56155710 -	.long	0xfffffff0 -	.long	PMD_TYPE_SECT | \ -		PMD_SECT_BUFFERABLE | \ -		PMD_SECT_CACHEABLE | \ -		PMD_BIT4 | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	.long	PMD_TYPE_SECT | \ -		PMD_BIT4 | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	b	__feroceon_setup -	.long	cpu_arch_name -	.long	cpu_elf_name -	.long	HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP -	.long	cpu_88fr571_name -	.long	feroceon_processor_functions -	.long	v4wbi_tlb_fns -	.long	feroceon_user_fns -	.long	feroceon_range_cache_fns -	.size	__88fr571_proc_info, . - __88fr571_proc_info +#ifdef CONFIG_CPU_FEROCEON_OLD_ID +	feroceon_proc_info feroceon_old_id, 0x41009260, 0xff00fff0, \ +		cpu_name=cpu_feroceon_name, cache=feroceon_cache_fns +#endif -	.type	__88fr131_proc_info,#object -__88fr131_proc_info: -	.long	0x56251310 -	.long	0xfffffff0 -	.long	PMD_TYPE_SECT | \ -		PMD_SECT_BUFFERABLE | \ -		PMD_SECT_CACHEABLE | \ -		PMD_BIT4 | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	.long	PMD_TYPE_SECT | \ -		PMD_BIT4 | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	b	__feroceon_setup -	.long	cpu_arch_name -	.long	cpu_elf_name -	.long	HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP -	.long	cpu_88fr131_name -	.long	feroceon_processor_functions -	.long	v4wbi_tlb_fns -	.long	feroceon_user_fns -	.long	feroceon_range_cache_fns -	.size	__88fr131_proc_info, . - __88fr131_proc_info +	feroceon_proc_info 88fr531, 0x56055310, 0xfffffff0, cpu_88fr531_name, \ +		cache=feroceon_cache_fns +	feroceon_proc_info 88fr571, 0x56155710, 0xfffffff0, cpu_88fr571_name, \ +		cache=feroceon_range_cache_fns +	feroceon_proc_info 88fr131, 0x56251310, 0xfffffff0, cpu_88fr131_name, \ +		cache=feroceon_range_cache_fns 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 @@  	mcr	p15, 0, r0, c7, c10, 1		@ clean L1 D line  	mcr	p15, 0, ip, c7, c10, 4		@ data write barrier  	.endm + +.macro define_processor_functions name:req, dabort:req, pabort:req, nommu=0, suspend=0 +	.type	\name\()_processor_functions, #object +	.align 2 +ENTRY(\name\()_processor_functions) +	.word	\dabort +	.word	\pabort +	.word	cpu_\name\()_proc_init +	.word	cpu_\name\()_proc_fin +	.word	cpu_\name\()_reset +	.word	cpu_\name\()_do_idle +	.word	cpu_\name\()_dcache_clean_area +	.word	cpu_\name\()_switch_mm + +	.if \nommu +	.word	0 +	.else +	.word	cpu_\name\()_set_pte_ext +	.endif + +	.if \suspend +	.word	cpu_\name\()_suspend_size +	.word	cpu_\name\()_do_suspend +	.word	cpu_\name\()_do_resume +	.else +	.word	0 +	.word	0 +	.word	0 +	.endif + +	.size	\name\()_processor_functions, . - \name\()_processor_functions +.endm + +.macro define_cache_functions name:req +	.align 2 +	.type	\name\()_cache_fns, #object +ENTRY(\name\()_cache_fns) +	.long	\name\()_flush_icache_all +	.long	\name\()_flush_kern_cache_all +	.long	\name\()_flush_user_cache_all +	.long	\name\()_flush_user_cache_range +	.long	\name\()_coherent_kern_range +	.long	\name\()_coherent_user_range +	.long	\name\()_flush_kern_dcache_area +	.long	\name\()_dma_map_area +	.long	\name\()_dma_unmap_area +	.long	\name\()_dma_flush_range +	.size	\name\()_cache_fns, . - \name\()_cache_fns +.endm + +.macro define_tlb_functions name:req, flags_up:req, flags_smp +	.type	\name\()_tlb_fns, #object +ENTRY(\name\()_tlb_fns) +	.long	\name\()_flush_user_tlb_range +	.long	\name\()_flush_kern_tlb_range +	.ifnb \flags_smp +		ALT_SMP(.long	\flags_smp ) +		ALT_UP(.long	\flags_up ) +	.else +		.long	\flags_up +	.endif +	.size	\name\()_tlb_fns, . - \name\()_tlb_fns +.endm diff --git a/arch/arm/mm/proc-mohawk.S b/arch/arm/mm/proc-mohawk.S index 9d4f2ae63370..db52b0fb14a0 100644 --- a/arch/arm/mm/proc-mohawk.S +++ b/arch/arm/mm/proc-mohawk.S @@ -93,6 +93,17 @@ ENTRY(cpu_mohawk_do_idle)  	mov	pc, lr  /* + *	flush_icache_all() + * + *	Unconditionally clean and invalidate the entire icache. + */ +ENTRY(mohawk_flush_icache_all) +	mov	r0, #0 +	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache +	mov	pc, lr +ENDPROC(mohawk_flush_icache_all) + +/*   *	flush_user_cache_all()   *   *	Clean and invalidate all cache entries in a particular @@ -288,16 +299,8 @@ ENTRY(mohawk_dma_unmap_area)  	mov	pc, lr  ENDPROC(mohawk_dma_unmap_area) -ENTRY(mohawk_cache_fns) -	.long	mohawk_flush_kern_cache_all -	.long	mohawk_flush_user_cache_all -	.long	mohawk_flush_user_cache_range -	.long	mohawk_coherent_kern_range -	.long	mohawk_coherent_user_range -	.long	mohawk_flush_kern_dcache_area -	.long	mohawk_dma_map_area -	.long	mohawk_dma_unmap_area -	.long	mohawk_dma_flush_range +	@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) +	define_cache_functions mohawk  ENTRY(cpu_mohawk_dcache_clean_area)  1:	mcr	p15, 0, r0, c7, c10, 1		@ clean D entry @@ -373,42 +376,14 @@ mohawk_crval:  	__INITDATA -/* - * Purpose : Function pointers used to access above functions - all calls - *	     come through these - */ -	.type	mohawk_processor_functions, #object -mohawk_processor_functions: -	.word	v5t_early_abort -	.word	legacy_pabort -	.word	cpu_mohawk_proc_init -	.word	cpu_mohawk_proc_fin -	.word	cpu_mohawk_reset -	.word	cpu_mohawk_do_idle -	.word	cpu_mohawk_dcache_clean_area -	.word	cpu_mohawk_switch_mm -	.word	cpu_mohawk_set_pte_ext -	.word	0 -	.word	0 -	.word	0 -	.size	mohawk_processor_functions, . - mohawk_processor_functions +	@ define struct processor (see <asm/proc-fns.h> and proc-macros.S) +	define_processor_functions mohawk, dabort=v5t_early_abort, pabort=legacy_pabort  	.section ".rodata" -	.type	cpu_arch_name, #object -cpu_arch_name: -	.asciz	"armv5te" -	.size	cpu_arch_name, . - cpu_arch_name - -	.type	cpu_elf_name, #object -cpu_elf_name: -	.asciz	"v5" -	.size	cpu_elf_name, . - cpu_elf_name - -	.type	cpu_mohawk_name, #object -cpu_mohawk_name: -	.asciz	"Marvell 88SV331x" -	.size	cpu_mohawk_name, . - cpu_mohawk_name +	string	cpu_arch_name, "armv5te" +	string	cpu_elf_name, "v5" +	string	cpu_mohawk_name, "Marvell 88SV331x"  	.align diff --git a/arch/arm/mm/proc-sa110.S b/arch/arm/mm/proc-sa110.S index 46f09ed16b98..d50ada26edd6 100644 --- a/arch/arm/mm/proc-sa110.S +++ b/arch/arm/mm/proc-sa110.S @@ -187,43 +187,14 @@ sa110_crval:  	__INITDATA -/* - * Purpose : Function pointers used to access above functions - all calls - *	     come through these - */ - -	.type	sa110_processor_functions, #object -ENTRY(sa110_processor_functions) -	.word	v4_early_abort -	.word	legacy_pabort -	.word	cpu_sa110_proc_init -	.word	cpu_sa110_proc_fin -	.word	cpu_sa110_reset -	.word	cpu_sa110_do_idle -	.word	cpu_sa110_dcache_clean_area -	.word	cpu_sa110_switch_mm -	.word	cpu_sa110_set_pte_ext -	.word	0 -	.word	0 -	.word	0 -	.size	sa110_processor_functions, . - sa110_processor_functions +	@ define struct processor (see <asm/proc-fns.h> and proc-macros.S) +	define_processor_functions sa110, dabort=v4_early_abort, pabort=legacy_pabort  	.section ".rodata" -	.type	cpu_arch_name, #object -cpu_arch_name: -	.asciz	"armv4" -	.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_sa110_name, #object -cpu_sa110_name: -	.asciz	"StrongARM-110" -	.size	cpu_sa110_name, . - cpu_sa110_name +	string	cpu_arch_name, "armv4" +	string	cpu_elf_name, "v4" +	string	cpu_sa110_name, "StrongARM-110"  	.align diff --git a/arch/arm/mm/proc-sa1100.S b/arch/arm/mm/proc-sa1100.S index 184a9c997e36..c7e08cab55a8 100644 --- a/arch/arm/mm/proc-sa1100.S +++ b/arch/arm/mm/proc-sa1100.S @@ -236,59 +236,28 @@ sa1100_crval:  	__INITDATA  /* - * Purpose : Function pointers used to access above functions - all calls - *	     come through these - */ - -/*   * SA1100 and SA1110 share the same function calls   */ -	.type	sa1100_processor_functions, #object -ENTRY(sa1100_processor_functions) -	.word	v4_early_abort -	.word	legacy_pabort -	.word	cpu_sa1100_proc_init -	.word	cpu_sa1100_proc_fin -	.word	cpu_sa1100_reset -	.word	cpu_sa1100_do_idle -	.word	cpu_sa1100_dcache_clean_area -	.word	cpu_sa1100_switch_mm -	.word	cpu_sa1100_set_pte_ext -	.word	cpu_sa1100_suspend_size -	.word	cpu_sa1100_do_suspend -	.word	cpu_sa1100_do_resume -	.size	sa1100_processor_functions, . - sa1100_processor_functions - -	.section ".rodata" - -	.type	cpu_arch_name, #object -cpu_arch_name: -	.asciz	"armv4" -	.size	cpu_arch_name, . - cpu_arch_name -	.type	cpu_elf_name, #object -cpu_elf_name: -	.asciz	"v4" -	.size	cpu_elf_name, . - cpu_elf_name +	@ define struct processor (see <asm/proc-fns.h> and proc-macros.S) +	define_processor_functions sa1100, dabort=v4_early_abort, pabort=legacy_pabort, suspend=1 -	.type	cpu_sa1100_name, #object -cpu_sa1100_name: -	.asciz	"StrongARM-1100" -	.size	cpu_sa1100_name, . - cpu_sa1100_name +	.section ".rodata" -	.type	cpu_sa1110_name, #object -cpu_sa1110_name: -	.asciz	"StrongARM-1110" -	.size	cpu_sa1110_name, . - cpu_sa1110_name +	string	cpu_arch_name, "armv4" +	string	cpu_elf_name, "v4" +	string	cpu_sa1100_name, "StrongARM-1100" +	string	cpu_sa1110_name, "StrongARM-1110"  	.align  	.section ".proc.info.init", #alloc, #execinstr -	.type	__sa1100_proc_info,#object -__sa1100_proc_info: -	.long	0x4401a110 -	.long	0xfffffff0 +.macro sa1100_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req +	.type	__\name\()_proc_info,#object +__\name\()_proc_info: +	.long	\cpu_val +	.long	\cpu_mask  	.long   PMD_TYPE_SECT | \  		PMD_SECT_BUFFERABLE | \  		PMD_SECT_CACHEABLE | \ @@ -301,32 +270,13 @@ __sa1100_proc_info:  	.long	cpu_arch_name  	.long	cpu_elf_name  	.long	HWCAP_SWP | HWCAP_HALF | HWCAP_26BIT | HWCAP_FAST_MULT -	.long	cpu_sa1100_name +	.long	\cpu_name  	.long	sa1100_processor_functions  	.long	v4wb_tlb_fns  	.long	v4_mc_user_fns  	.long	v4wb_cache_fns -	.size	__sa1100_proc_info, . - __sa1100_proc_info +	.size	__\name\()_proc_info, . - __\name\()_proc_info +.endm -	.type	__sa1110_proc_info,#object -__sa1110_proc_info: -	.long	0x6901b110 -	.long	0xfffffff0 -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_BUFFERABLE | \ -		PMD_SECT_CACHEABLE | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	b	__sa1100_setup -	.long	cpu_arch_name -	.long	cpu_elf_name -	.long	HWCAP_SWP | HWCAP_HALF | HWCAP_26BIT | HWCAP_FAST_MULT -	.long	cpu_sa1110_name -	.long	sa1100_processor_functions -	.long	v4wb_tlb_fns -	.long	v4_mc_user_fns -	.long	v4wb_cache_fns -	.size	__sa1110_proc_info, . - __sa1110_proc_info +	sa1100_proc_info sa1100, 0x4401a110, 0xfffffff0, cpu_sa1100_name +	sa1100_proc_info sa1110, 0x6901b110, 0xfffffff0, cpu_sa1110_name diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S index 1d2b8451bf25..5ec15431cf12 100644 --- a/arch/arm/mm/proc-v6.S +++ b/arch/arm/mm/proc-v6.S @@ -169,11 +169,7 @@ cpu_resume_l1_flags:  #define cpu_v6_do_resume 0  #endif - -	.type	cpu_v6_name, #object -cpu_v6_name: -	.asciz	"ARMv6-compatible processor" -	.size	cpu_v6_name, . - cpu_v6_name +	string	cpu_v6_name, "ARMv6-compatible processor"  	.align @@ -239,33 +235,13 @@ v6_crval:  	__INITDATA -	.type	v6_processor_functions, #object -ENTRY(v6_processor_functions) -	.word	v6_early_abort -	.word	v6_pabort -	.word	cpu_v6_proc_init -	.word	cpu_v6_proc_fin -	.word	cpu_v6_reset -	.word	cpu_v6_do_idle -	.word	cpu_v6_dcache_clean_area -	.word	cpu_v6_switch_mm -	.word	cpu_v6_set_pte_ext -	.word	cpu_v6_suspend_size -	.word	cpu_v6_do_suspend -	.word	cpu_v6_do_resume -	.size	v6_processor_functions, . - v6_processor_functions +	@ define struct processor (see <asm/proc-fns.h> and proc-macros.S) +	define_processor_functions v6, dabort=v6_early_abort, pabort=v6_pabort, suspend=1  	.section ".rodata" -	.type	cpu_arch_name, #object -cpu_arch_name: -	.asciz	"armv6" -	.size	cpu_arch_name, . - cpu_arch_name - -	.type	cpu_elf_name, #object -cpu_elf_name: -	.asciz	"v6" -	.size	cpu_elf_name, . - cpu_elf_name +	string	cpu_arch_name, "armv6" +	string	cpu_elf_name, "v6"  	.align  	.section ".proc.info.init", #alloc, #execinstr diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S index 089c0b5e454f..a2e1ee87a2c4 100644 --- a/arch/arm/mm/proc-v7.S +++ b/arch/arm/mm/proc-v7.S @@ -173,8 +173,7 @@ ENTRY(cpu_v7_set_pte_ext)  	mov	pc, lr  ENDPROC(cpu_v7_set_pte_ext) -cpu_v7_name: -	.ascii	"ARMv7 Processor" +	string	cpu_v7_name, "ARMv7 Processor"  	.align  	/* @@ -411,33 +410,13 @@ __v7_setup_stack:  	__INITDATA -	.type	v7_processor_functions, #object -ENTRY(v7_processor_functions) -	.word	v7_early_abort -	.word	v7_pabort -	.word	cpu_v7_proc_init -	.word	cpu_v7_proc_fin -	.word	cpu_v7_reset -	.word	cpu_v7_do_idle -	.word	cpu_v7_dcache_clean_area -	.word	cpu_v7_switch_mm -	.word	cpu_v7_set_pte_ext -	.word	cpu_v7_suspend_size -	.word	cpu_v7_do_suspend -	.word	cpu_v7_do_resume -	.size	v7_processor_functions, . - v7_processor_functions +	@ define struct processor (see <asm/proc-fns.h> and proc-macros.S) +	define_processor_functions v7, dabort=v7_early_abort, pabort=v7_pabort, suspend=1  	.section ".rodata" -	.type	cpu_arch_name, #object -cpu_arch_name: -	.asciz	"armv7" -	.size	cpu_arch_name, . - cpu_arch_name - -	.type	cpu_elf_name, #object -cpu_elf_name: -	.asciz	"v7" -	.size	cpu_elf_name, . - cpu_elf_name +	string	cpu_arch_name, "armv7" +	string	cpu_elf_name, "v7"  	.align  	.section ".proc.info.init", #alloc, #execinstr diff --git a/arch/arm/mm/proc-xsc3.S b/arch/arm/mm/proc-xsc3.S index 596213699f37..1508f9bc526a 100644 --- a/arch/arm/mm/proc-xsc3.S +++ b/arch/arm/mm/proc-xsc3.S @@ -335,17 +335,8 @@ ENTRY(xsc3_dma_unmap_area)  	mov	pc, lr  ENDPROC(xsc3_dma_unmap_area) -ENTRY(xsc3_cache_fns) -	.long	xsc3_flush_icache_all -	.long	xsc3_flush_kern_cache_all -	.long	xsc3_flush_user_cache_all -	.long	xsc3_flush_user_cache_range -	.long	xsc3_coherent_kern_range -	.long	xsc3_coherent_user_range -	.long	xsc3_flush_kern_dcache_area -	.long	xsc3_dma_map_area -	.long	xsc3_dma_unmap_area -	.long	xsc3_dma_flush_range +	@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) +	define_cache_functions xsc3  ENTRY(cpu_xsc3_dcache_clean_area)  1:	mcr	p15, 0, r0, c7, c10, 1		@ clean L1 D line @@ -503,52 +494,24 @@ xsc3_crval:  	__INITDATA -/* - * Purpose : Function pointers used to access above functions - all calls - *	     come through these - */ - -	.type	xsc3_processor_functions, #object -ENTRY(xsc3_processor_functions) -	.word	v5t_early_abort -	.word	legacy_pabort -	.word	cpu_xsc3_proc_init -	.word	cpu_xsc3_proc_fin -	.word	cpu_xsc3_reset -	.word	cpu_xsc3_do_idle -	.word	cpu_xsc3_dcache_clean_area -	.word	cpu_xsc3_switch_mm -	.word	cpu_xsc3_set_pte_ext -	.word	cpu_xsc3_suspend_size -	.word	cpu_xsc3_do_suspend -	.word	cpu_xsc3_do_resume -	.size	xsc3_processor_functions, . - xsc3_processor_functions +	@ define struct processor (see <asm/proc-fns.h> and proc-macros.S) +	define_processor_functions xsc3, dabort=v5t_early_abort, pabort=legacy_pabort, suspend=1  	.section ".rodata" -	.type	cpu_arch_name, #object -cpu_arch_name: -	.asciz	"armv5te" -	.size	cpu_arch_name, . - cpu_arch_name - -	.type	cpu_elf_name, #object -cpu_elf_name: -	.asciz	"v5" -	.size	cpu_elf_name, . - cpu_elf_name - -	.type	cpu_xsc3_name, #object -cpu_xsc3_name: -	.asciz	"XScale-V3 based processor" -	.size	cpu_xsc3_name, . - cpu_xsc3_name +	string	cpu_arch_name, "armv5te" +	string	cpu_elf_name, "v5" +	string	cpu_xsc3_name, "XScale-V3 based processor"  	.align  	.section ".proc.info.init", #alloc, #execinstr -	.type	__xsc3_proc_info,#object -__xsc3_proc_info: -	.long	0x69056000 -	.long	0xffffe000 +.macro xsc3_proc_info name:req, cpu_val:req, cpu_mask:req +	.type	__\name\()_proc_info,#object +__\name\()_proc_info: +	.long	\cpu_val +	.long	\cpu_mask  	.long	PMD_TYPE_SECT | \  		PMD_SECT_BUFFERABLE | \  		PMD_SECT_CACHEABLE | \ @@ -566,29 +529,10 @@ __xsc3_proc_info:  	.long	v4wbi_tlb_fns  	.long	xsc3_mc_user_fns  	.long	xsc3_cache_fns -	.size	__xsc3_proc_info, . - __xsc3_proc_info +	.size	__\name\()_proc_info, . - __\name\()_proc_info +.endm -/* Note: PXA935 changed its implementor ID from Intel to Marvell */ +	xsc3_proc_info xsc3, 0x69056000, 0xffffe000 -	.type	__xsc3_pxa935_proc_info,#object -__xsc3_pxa935_proc_info: -	.long	0x56056000 -	.long	0xffffe000 -	.long	PMD_TYPE_SECT | \ -		PMD_SECT_BUFFERABLE | \ -		PMD_SECT_CACHEABLE | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	.long	PMD_TYPE_SECT | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	b	__xsc3_setup -	.long	cpu_arch_name -	.long	cpu_elf_name -	.long	HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP -	.long	cpu_xsc3_name -	.long	xsc3_processor_functions -	.long	v4wbi_tlb_fns -	.long	xsc3_mc_user_fns -	.long	xsc3_cache_fns -	.size	__xsc3_pxa935_proc_info, . - __xsc3_pxa935_proc_info +/* Note: PXA935 changed its implementor ID from Intel to Marvell */ +	xsc3_proc_info xsc3_pxa935, 0x56056000, 0xffffe000 diff --git a/arch/arm/mm/proc-xscale.S b/arch/arm/mm/proc-xscale.S index 42af97664c9d..76a804605010 100644 --- a/arch/arm/mm/proc-xscale.S +++ b/arch/arm/mm/proc-xscale.S @@ -390,12 +390,12 @@ ENDPROC(xscale_dma_map_area)   *	- size	- size of region   *	- dir	- DMA direction   */ -ENTRY(xscale_dma_a0_map_area) +ENTRY(xscale_80200_A0_A1_dma_map_area)  	add	r1, r1, r0  	teq	r2, #DMA_TO_DEVICE  	beq	xscale_dma_clean_range  	b	xscale_dma_flush_range -ENDPROC(xscale_dma_a0_map_area) +ENDPROC(xscale_80200_A0_A1_dma_map_area)  /*   *	dma_unmap_area(start, size, dir) @@ -407,17 +407,8 @@ ENTRY(xscale_dma_unmap_area)  	mov	pc, lr  ENDPROC(xscale_dma_unmap_area) -ENTRY(xscale_cache_fns) -	.long	xscale_flush_icache_all -	.long	xscale_flush_kern_cache_all -	.long	xscale_flush_user_cache_all -	.long	xscale_flush_user_cache_range -	.long	xscale_coherent_kern_range -	.long	xscale_coherent_user_range -	.long	xscale_flush_kern_dcache_area -	.long	xscale_dma_map_area -	.long	xscale_dma_unmap_area -	.long	xscale_dma_flush_range +	@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) +	define_cache_functions xscale  /*   * On stepping A0/A1 of the 80200, invalidating D-cache by line doesn't @@ -432,16 +423,28 @@ ENTRY(xscale_cache_fns)   * revision January 22, 2003, available at:   *     http://www.intel.com/design/iio/specupdt/273415.htm   */ -ENTRY(xscale_80200_A0_A1_cache_fns) -	.long	xscale_flush_kern_cache_all -	.long	xscale_flush_user_cache_all -	.long	xscale_flush_user_cache_range -	.long	xscale_coherent_kern_range -	.long	xscale_coherent_user_range -	.long	xscale_flush_kern_dcache_area -	.long	xscale_dma_a0_map_area -	.long	xscale_dma_unmap_area -	.long	xscale_dma_flush_range +.macro a0_alias basename +	.globl xscale_80200_A0_A1_\basename +	.type xscale_80200_A0_A1_\basename , %function +	.equ xscale_80200_A0_A1_\basename , xscale_\basename +.endm + +/* + * Most of the cache functions are unchanged for these processor revisions. + * Export suitable alias symbols for the unchanged functions: + */ +	a0_alias flush_icache_all +	a0_alias flush_user_cache_all +	a0_alias flush_kern_cache_all +	a0_alias flush_user_cache_range +	a0_alias coherent_kern_range +	a0_alias coherent_user_range +	a0_alias flush_kern_dcache_area +	a0_alias dma_flush_range +	a0_alias dma_unmap_area + +	@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) +	define_cache_functions xscale_80200_A0_A1  ENTRY(cpu_xscale_dcache_clean_area)  1:	mcr	p15, 0, r0, c7, c10, 1		@ clean D entry @@ -587,432 +590,74 @@ xscale_crval:  	__INITDATA -/* - * Purpose : Function pointers used to access above functions - all calls - *	     come through these - */ - -	.type	xscale_processor_functions, #object -ENTRY(xscale_processor_functions) -	.word	v5t_early_abort -	.word	legacy_pabort -	.word	cpu_xscale_proc_init -	.word	cpu_xscale_proc_fin -	.word	cpu_xscale_reset -	.word	cpu_xscale_do_idle -	.word	cpu_xscale_dcache_clean_area -	.word	cpu_xscale_switch_mm -	.word	cpu_xscale_set_pte_ext -	.word	cpu_xscale_suspend_size -	.word	cpu_xscale_do_suspend -	.word	cpu_xscale_do_resume -	.size	xscale_processor_functions, . - xscale_processor_functions +	@ define struct processor (see <asm/proc-fns.h> and proc-macros.S) +	define_processor_functions xscale, dabort=v5t_early_abort, pabort=legacy_pabort, suspend=1  	.section ".rodata" -	.type	cpu_arch_name, #object -cpu_arch_name: -	.asciz	"armv5te" -	.size	cpu_arch_name, . - cpu_arch_name - -	.type	cpu_elf_name, #object -cpu_elf_name: -	.asciz	"v5" -	.size	cpu_elf_name, . - cpu_elf_name - -	.type	cpu_80200_A0_A1_name, #object -cpu_80200_A0_A1_name: -	.asciz	"XScale-80200 A0/A1" -	.size	cpu_80200_A0_A1_name, . - cpu_80200_A0_A1_name - -	.type	cpu_80200_name, #object -cpu_80200_name: -	.asciz	"XScale-80200" -	.size	cpu_80200_name, . - cpu_80200_name - -	.type	cpu_80219_name, #object -cpu_80219_name: -	.asciz	"XScale-80219" -	.size	cpu_80219_name, . - cpu_80219_name +	string	cpu_arch_name, "armv5te" +	string	cpu_elf_name, "v5" -	.type	cpu_8032x_name, #object -cpu_8032x_name: -	.asciz	"XScale-IOP8032x Family" -	.size	cpu_8032x_name, . - cpu_8032x_name - -	.type	cpu_8033x_name, #object -cpu_8033x_name: -	.asciz	"XScale-IOP8033x Family" -	.size	cpu_8033x_name, . - cpu_8033x_name - -	.type	cpu_pxa250_name, #object -cpu_pxa250_name: -	.asciz	"XScale-PXA250" -	.size	cpu_pxa250_name, . - cpu_pxa250_name - -	.type	cpu_pxa210_name, #object -cpu_pxa210_name: -	.asciz	"XScale-PXA210" -	.size	cpu_pxa210_name, . - cpu_pxa210_name - -	.type	cpu_ixp42x_name, #object -cpu_ixp42x_name: -	.asciz	"XScale-IXP42x Family" -	.size	cpu_ixp42x_name, . - cpu_ixp42x_name - -	.type	cpu_ixp43x_name, #object -cpu_ixp43x_name: -	.asciz	"XScale-IXP43x Family" -	.size	cpu_ixp43x_name, . - cpu_ixp43x_name - -	.type	cpu_ixp46x_name, #object -cpu_ixp46x_name: -	.asciz	"XScale-IXP46x Family" -	.size	cpu_ixp46x_name, . - cpu_ixp46x_name - -	.type	cpu_ixp2400_name, #object -cpu_ixp2400_name: -	.asciz	"XScale-IXP2400" -	.size	cpu_ixp2400_name, . - cpu_ixp2400_name - -	.type	cpu_ixp2800_name, #object -cpu_ixp2800_name: -	.asciz	"XScale-IXP2800" -	.size	cpu_ixp2800_name, . - cpu_ixp2800_name - -	.type	cpu_pxa255_name, #object -cpu_pxa255_name: -	.asciz	"XScale-PXA255" -	.size	cpu_pxa255_name, . - cpu_pxa255_name - -	.type	cpu_pxa270_name, #object -cpu_pxa270_name: -	.asciz	"XScale-PXA270" -	.size	cpu_pxa270_name, . - cpu_pxa270_name +	string	cpu_80200_A0_A1_name, "XScale-80200 A0/A1" +	string	cpu_80200_name, "XScale-80200" +	string	cpu_80219_name, "XScale-80219" +	string	cpu_8032x_name, "XScale-IOP8032x Family" +	string	cpu_8033x_name, "XScale-IOP8033x Family" +	string	cpu_pxa250_name, "XScale-PXA250" +	string	cpu_pxa210_name, "XScale-PXA210" +	string	cpu_ixp42x_name, "XScale-IXP42x Family" +	string	cpu_ixp43x_name, "XScale-IXP43x Family" +	string	cpu_ixp46x_name, "XScale-IXP46x Family" +	string	cpu_ixp2400_name, "XScale-IXP2400" +	string	cpu_ixp2800_name, "XScale-IXP2800" +	string	cpu_pxa255_name, "XScale-PXA255" +	string	cpu_pxa270_name, "XScale-PXA270"  	.align  	.section ".proc.info.init", #alloc, #execinstr -	.type	__80200_A0_A1_proc_info,#object -__80200_A0_A1_proc_info: -	.long	0x69052000 -	.long	0xfffffffe -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_BUFFERABLE | \ -		PMD_SECT_CACHEABLE | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	b	__xscale_setup -	.long	cpu_arch_name -	.long	cpu_elf_name -	.long	HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP -	.long	cpu_80200_name -	.long	xscale_processor_functions -	.long	v4wbi_tlb_fns -	.long	xscale_mc_user_fns -	.long	xscale_80200_A0_A1_cache_fns -	.size	__80200_A0_A1_proc_info, . - __80200_A0_A1_proc_info - -	.type	__80200_proc_info,#object -__80200_proc_info: -	.long	0x69052000 -	.long	0xfffffff0 -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_BUFFERABLE | \ -		PMD_SECT_CACHEABLE | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	b	__xscale_setup -	.long	cpu_arch_name -	.long	cpu_elf_name -	.long	HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP -	.long	cpu_80200_name -	.long	xscale_processor_functions -	.long	v4wbi_tlb_fns -	.long	xscale_mc_user_fns -	.long	xscale_cache_fns -	.size	__80200_proc_info, . - __80200_proc_info - -	.type	__80219_proc_info,#object -__80219_proc_info: -	.long	0x69052e20 -	.long	0xffffffe0 -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_BUFFERABLE | \ -		PMD_SECT_CACHEABLE | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	b	__xscale_setup -	.long	cpu_arch_name -	.long	cpu_elf_name -	.long	HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP -	.long	cpu_80219_name -	.long	xscale_processor_functions -	.long	v4wbi_tlb_fns -	.long	xscale_mc_user_fns -	.long	xscale_cache_fns -	.size	__80219_proc_info, . - __80219_proc_info - -	.type	__8032x_proc_info,#object -__8032x_proc_info: -	.long	0x69052420 -	.long	0xfffff7e0 -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_BUFFERABLE | \ -		PMD_SECT_CACHEABLE | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	b	__xscale_setup -	.long	cpu_arch_name -	.long	cpu_elf_name -	.long	HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP -	.long	cpu_8032x_name -	.long	xscale_processor_functions -	.long	v4wbi_tlb_fns -	.long	xscale_mc_user_fns -	.long	xscale_cache_fns -	.size	__8032x_proc_info, . - __8032x_proc_info - -	.type	__8033x_proc_info,#object -__8033x_proc_info: -	.long	0x69054010 -	.long	0xfffffd30 -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_BUFFERABLE | \ -		PMD_SECT_CACHEABLE | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	b	__xscale_setup -	.long	cpu_arch_name -	.long	cpu_elf_name -	.long	HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP -	.long	cpu_8033x_name -	.long	xscale_processor_functions -	.long	v4wbi_tlb_fns -	.long	xscale_mc_user_fns -	.long	xscale_cache_fns -	.size	__8033x_proc_info, . - __8033x_proc_info - -	.type	__pxa250_proc_info,#object -__pxa250_proc_info: -	.long	0x69052100 -	.long	0xfffff7f0 -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_BUFFERABLE | \ -		PMD_SECT_CACHEABLE | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	b	__xscale_setup -	.long	cpu_arch_name -	.long	cpu_elf_name -	.long	HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP -	.long	cpu_pxa250_name -	.long	xscale_processor_functions -	.long	v4wbi_tlb_fns -	.long	xscale_mc_user_fns -	.long	xscale_cache_fns -	.size	__pxa250_proc_info, . - __pxa250_proc_info - -	.type	__pxa210_proc_info,#object -__pxa210_proc_info: -	.long	0x69052120 -	.long	0xfffff3f0 -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_BUFFERABLE | \ -		PMD_SECT_CACHEABLE | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	b	__xscale_setup -	.long	cpu_arch_name -	.long	cpu_elf_name -	.long	HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP -	.long	cpu_pxa210_name -	.long	xscale_processor_functions -	.long	v4wbi_tlb_fns -	.long	xscale_mc_user_fns -	.long	xscale_cache_fns -	.size	__pxa210_proc_info, . - __pxa210_proc_info - -	.type	__ixp2400_proc_info, #object -__ixp2400_proc_info: -	.long   0x69054190 -	.long   0xfffffff0 -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_BUFFERABLE | \ -		PMD_SECT_CACHEABLE | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	b       __xscale_setup -	.long   cpu_arch_name -	.long   cpu_elf_name -	.long   HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP -	.long   cpu_ixp2400_name -	.long   xscale_processor_functions -	.long	v4wbi_tlb_fns -	.long	xscale_mc_user_fns -	.long	xscale_cache_fns -	.size   __ixp2400_proc_info, . - __ixp2400_proc_info                 - -	.type	__ixp2800_proc_info, #object -__ixp2800_proc_info: -	.long   0x690541a0 -	.long   0xfffffff0 -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_BUFFERABLE | \ -		PMD_SECT_CACHEABLE | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	b       __xscale_setup -	.long   cpu_arch_name -	.long   cpu_elf_name -	.long   HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP -	.long   cpu_ixp2800_name -	.long   xscale_processor_functions -	.long	v4wbi_tlb_fns -	.long	xscale_mc_user_fns -	.long	xscale_cache_fns -	.size   __ixp2800_proc_info, . - __ixp2800_proc_info                 - -	.type	__ixp42x_proc_info, #object -__ixp42x_proc_info: -	.long   0x690541c0 -	.long   0xffffffc0 -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_BUFFERABLE | \ -		PMD_SECT_CACHEABLE | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	b       __xscale_setup -	.long   cpu_arch_name -	.long   cpu_elf_name -	.long   HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP -	.long   cpu_ixp42x_name -	.long   xscale_processor_functions -	.long	v4wbi_tlb_fns -	.long	xscale_mc_user_fns -	.long	xscale_cache_fns -	.size   __ixp42x_proc_info, . - __ixp42x_proc_info                 - -	.type   __ixp43x_proc_info, #object -__ixp43x_proc_info: -	.long   0x69054040 -	.long   0xfffffff0 -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_BUFFERABLE | \ -		PMD_SECT_CACHEABLE | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	b       __xscale_setup -	.long   cpu_arch_name -	.long   cpu_elf_name -	.long   HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP -	.long   cpu_ixp43x_name -	.long   xscale_processor_functions -	.long   v4wbi_tlb_fns -	.long   xscale_mc_user_fns -	.long   xscale_cache_fns -	.size   __ixp43x_proc_info, . - __ixp43x_proc_info - -	.type	__ixp46x_proc_info, #object -__ixp46x_proc_info: -	.long   0x69054200 -	.long   0xffffff00 -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_BUFFERABLE | \ -		PMD_SECT_CACHEABLE | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	b       __xscale_setup -	.long   cpu_arch_name -	.long   cpu_elf_name -	.long   HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP -	.long   cpu_ixp46x_name -	.long   xscale_processor_functions -	.long	v4wbi_tlb_fns -	.long	xscale_mc_user_fns -	.long	xscale_cache_fns -	.size   __ixp46x_proc_info, . - __ixp46x_proc_info - -	.type	__pxa255_proc_info,#object -__pxa255_proc_info: -	.long	0x69052d00 -	.long	0xfffffff0 -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_BUFFERABLE | \ -		PMD_SECT_CACHEABLE | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	.long   PMD_TYPE_SECT | \ -		PMD_SECT_AP_WRITE | \ -		PMD_SECT_AP_READ -	b	__xscale_setup -	.long	cpu_arch_name -	.long	cpu_elf_name -	.long	HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP -	.long	cpu_pxa255_name -	.long	xscale_processor_functions -	.long	v4wbi_tlb_fns -	.long	xscale_mc_user_fns -	.long	xscale_cache_fns -	.size	__pxa255_proc_info, . - __pxa255_proc_info - -	.type	__pxa270_proc_info,#object -__pxa270_proc_info: -	.long	0x69054110 -	.long	0xfffffff0 -	.long   PMD_TYPE_SECT | \ +.macro xscale_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req, cache +	.type	__\name\()_proc_info,#object +__\name\()_proc_info: +	.long	\cpu_val +	.long	\cpu_mask +	.long	PMD_TYPE_SECT | \  		PMD_SECT_BUFFERABLE | \  		PMD_SECT_CACHEABLE | \  		PMD_SECT_AP_WRITE | \  		PMD_SECT_AP_READ -	.long   PMD_TYPE_SECT | \ +	.long	PMD_TYPE_SECT | \  		PMD_SECT_AP_WRITE | \  		PMD_SECT_AP_READ  	b	__xscale_setup  	.long	cpu_arch_name  	.long	cpu_elf_name  	.long	HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP -	.long	cpu_pxa270_name +	.long	\cpu_name  	.long	xscale_processor_functions  	.long	v4wbi_tlb_fns  	.long	xscale_mc_user_fns -	.long	xscale_cache_fns -	.size	__pxa270_proc_info, . - __pxa270_proc_info +	.ifb \cache +		.long	xscale_cache_fns +	.else +		.long	\cache +	.endif +	.size	__\name\()_proc_info, . - __\name\()_proc_info +.endm +	xscale_proc_info 80200_A0_A1, 0x69052000, 0xfffffffe, cpu_80200_name, \ +		cache=xscale_80200_A0_A1_cache_fns +	xscale_proc_info 80200, 0x69052000, 0xfffffff0, cpu_80200_name +	xscale_proc_info 80219, 0x69052e20, 0xffffffe0, cpu_80219_name +	xscale_proc_info 8032x, 0x69052420, 0xfffff7e0, cpu_8032x_name +	xscale_proc_info 8033x, 0x69054010, 0xfffffd30, cpu_8033x_name +	xscale_proc_info pxa250, 0x69052100, 0xfffff7f0, cpu_pxa250_name +	xscale_proc_info pxa210, 0x69052120, 0xfffff3f0, cpu_pxa210_name +	xscale_proc_info ixp2400, 0x69054190, 0xfffffff0, cpu_ixp2400_name +	xscale_proc_info ixp2800, 0x690541a0, 0xfffffff0, cpu_ixp2800_name +	xscale_proc_info ixp42x, 0x690541c0, 0xffffffc0, cpu_ixp42x_name +	xscale_proc_info ixp43x, 0x69054040, 0xfffffff0, cpu_ixp43x_name +	xscale_proc_info ixp46x, 0x69054200, 0xffffff00, cpu_ixp46x_name +	xscale_proc_info pxa255, 0x69052d00, 0xfffffff0, cpu_pxa255_name +	xscale_proc_info pxa270, 0x69054110, 0xfffffff0, cpu_pxa270_name diff --git a/arch/arm/mm/tlb-fa.S b/arch/arm/mm/tlb-fa.S index 9694f1f6f485..7a2e56c5d89a 100644 --- a/arch/arm/mm/tlb-fa.S +++ b/arch/arm/mm/tlb-fa.S @@ -67,9 +67,5 @@ ENTRY(fa_flush_kern_tlb_range)  	__INITDATA -	.type	fa_tlb_fns, #object -ENTRY(fa_tlb_fns) -	.long	fa_flush_user_tlb_range -	.long	fa_flush_kern_tlb_range -	.long	fa_tlb_flags -	.size	fa_tlb_fns, . - fa_tlb_fns +	/* define struct cpu_tlb_fns (see <asm/tlbflush.h> and proc-macros.S) */ +	define_tlb_functions fa, fa_tlb_flags diff --git a/arch/arm/mm/tlb-v3.S b/arch/arm/mm/tlb-v3.S index c10786ec8e0a..d253995ec4ca 100644 --- a/arch/arm/mm/tlb-v3.S +++ b/arch/arm/mm/tlb-v3.S @@ -44,9 +44,5 @@ ENTRY(v3_flush_kern_tlb_range)  	__INITDATA -	.type	v3_tlb_fns, #object -ENTRY(v3_tlb_fns) -	.long	v3_flush_user_tlb_range -	.long	v3_flush_kern_tlb_range -	.long	v3_tlb_flags -	.size	v3_tlb_fns, . - v3_tlb_fns +	/* define struct cpu_tlb_fns (see <asm/tlbflush.h> and proc-macros.S) */ +	define_tlb_functions v3, v3_tlb_flags diff --git a/arch/arm/mm/tlb-v4.S b/arch/arm/mm/tlb-v4.S index d6c94457c2b9..17a025ade573 100644 --- a/arch/arm/mm/tlb-v4.S +++ b/arch/arm/mm/tlb-v4.S @@ -57,9 +57,5 @@ ENTRY(v4_flush_user_tlb_range)  	__INITDATA -	.type	v4_tlb_fns, #object -ENTRY(v4_tlb_fns) -	.long	v4_flush_user_tlb_range -	.long	v4_flush_kern_tlb_range -	.long	v4_tlb_flags -	.size	v4_tlb_fns, . - v4_tlb_fns +	/* define struct cpu_tlb_fns (see <asm/tlbflush.h> and proc-macros.S) */ +	define_tlb_functions v4, v4_tlb_flags diff --git a/arch/arm/mm/tlb-v4wb.S b/arch/arm/mm/tlb-v4wb.S index cb829ca7845d..c04598fa4d4a 100644 --- a/arch/arm/mm/tlb-v4wb.S +++ b/arch/arm/mm/tlb-v4wb.S @@ -69,9 +69,5 @@ ENTRY(v4wb_flush_kern_tlb_range)  	__INITDATA -	.type	v4wb_tlb_fns, #object -ENTRY(v4wb_tlb_fns) -	.long	v4wb_flush_user_tlb_range -	.long	v4wb_flush_kern_tlb_range -	.long	v4wb_tlb_flags -	.size	v4wb_tlb_fns, . - v4wb_tlb_fns +	/* define struct cpu_tlb_fns (see <asm/tlbflush.h> and proc-macros.S) */ +	define_tlb_functions v4wb, v4wb_tlb_flags diff --git a/arch/arm/mm/tlb-v4wbi.S b/arch/arm/mm/tlb-v4wbi.S index 60cfc4a25dd5..1f6062b6c1c1 100644 --- a/arch/arm/mm/tlb-v4wbi.S +++ b/arch/arm/mm/tlb-v4wbi.S @@ -60,9 +60,5 @@ ENTRY(v4wbi_flush_kern_tlb_range)  	__INITDATA -	.type	v4wbi_tlb_fns, #object -ENTRY(v4wbi_tlb_fns) -	.long	v4wbi_flush_user_tlb_range -	.long	v4wbi_flush_kern_tlb_range -	.long	v4wbi_tlb_flags -	.size	v4wbi_tlb_fns, . - v4wbi_tlb_fns +	/* define struct cpu_tlb_fns (see <asm/tlbflush.h> and proc-macros.S) */ +	define_tlb_functions v4wbi, v4wbi_tlb_flags diff --git a/arch/arm/mm/tlb-v6.S b/arch/arm/mm/tlb-v6.S index 73d7d89b04c4..a685944735c9 100644 --- a/arch/arm/mm/tlb-v6.S +++ b/arch/arm/mm/tlb-v6.S @@ -90,9 +90,5 @@ ENTRY(v6wbi_flush_kern_tlb_range)  	__INIT -	.type	v6wbi_tlb_fns, #object -ENTRY(v6wbi_tlb_fns) -	.long	v6wbi_flush_user_tlb_range -	.long	v6wbi_flush_kern_tlb_range -	.long	v6wbi_tlb_flags -	.size	v6wbi_tlb_fns, . - v6wbi_tlb_fns +	/* define struct cpu_tlb_fns (see <asm/tlbflush.h> and proc-macros.S) */ +	define_tlb_functions v6wbi, v6wbi_tlb_flags diff --git a/arch/arm/mm/tlb-v7.S b/arch/arm/mm/tlb-v7.S index 53cd5b454673..ebd4290ce1e7 100644 --- a/arch/arm/mm/tlb-v7.S +++ b/arch/arm/mm/tlb-v7.S @@ -85,10 +85,5 @@ ENDPROC(v7wbi_flush_kern_tlb_range)  	__INIT -	.type	v7wbi_tlb_fns, #object -ENTRY(v7wbi_tlb_fns) -	.long	v7wbi_flush_user_tlb_range -	.long	v7wbi_flush_kern_tlb_range -	ALT_SMP(.long	v7wbi_tlb_flags_smp) -	ALT_UP(.long	v7wbi_tlb_flags_up) -	.size	v7wbi_tlb_fns, . - v7wbi_tlb_fns +	/* define struct cpu_tlb_fns (see <asm/tlbflush.h> and proc-macros.S) */ +	define_tlb_functions v7wbi, v7wbi_tlb_flags_up, flags_smp=v7wbi_tlb_flags_smp | 
