diff options
Diffstat (limited to 'arch/arm/mm/proc-arm940.S')
| -rw-r--r-- | arch/arm/mm/proc-arm940.S | 60 | 
1 files changed, 15 insertions, 45 deletions
diff --git a/arch/arm/mm/proc-arm940.S b/arch/arm/mm/proc-arm940.S index 7b11cdb9935..1c39a704ff6 100644 --- a/arch/arm/mm/proc-arm940.S +++ b/arch/arm/mm/proc-arm940.S @@ -48,6 +48,7 @@ ENTRY(cpu_arm940_proc_fin)   * Params  : r0 = address to jump to   * Notes   : This sets up everything for a reset   */ +	.pushsection	.idmap.text, "ax"  ENTRY(cpu_arm940_reset)  	mov	ip, #0  	mcr	p15, 0, ip, c7, c5, 0		@ flush I cache @@ -58,6 +59,8 @@ ENTRY(cpu_arm940_reset)  	bic	ip, ip, #0x00001000		@ i-cache  	mcr	p15, 0, ip, c1, c0, 0		@ ctrl register  	mov	pc, r0 +ENDPROC(cpu_arm940_reset) +	.popsection  /*   * cpu_arm940_do_idle() @@ -157,7 +160,7 @@ ENTRY(arm940_coherent_user_range)   *	- size	- region size   */  ENTRY(arm940_flush_kern_dcache_area) -	mov	ip, #0 +	mov	r0, #0  	mov	r1, #(CACHE_DSEGMENTS - 1) << 4	@ 4 segments  1:	orr	r3, r1, #(CACHE_DENTRIES - 1) << 26 @ 64 entries  2:	mcr	p15, 0, r3, c7, c14, 2		@ clean/flush D index @@ -165,8 +168,8 @@ ENTRY(arm940_flush_kern_dcache_area)  	bcs	2b				@ entries 63 to 0  	subs	r1, r1, #1 << 4  	bcs	1b				@ segments 7 to 0 -	mcr	p15, 0, ip, c7, c5, 0		@ invalidate I cache -	mcr	p15, 0, ip, c7, c10, 4		@ drain WB +	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache +	mcr	p15, 0, r0, c7, c10, 4		@ drain WB  	mov	pc, lr  /* @@ -264,19 +267,11 @@ 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 +	.globl	arm940_flush_kern_cache_louis +	.equ	arm940_flush_kern_cache_louis, arm940_flush_kern_cache_all -	__CPUINIT +	@ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) +	define_cache_functions arm940  	.type	__arm940_setup, #function  __arm940_setup: @@ -348,39 +343,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 -	.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  | 
