ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+
ARMv6 and greater introduced a new instruction ("bx") which can be used
to return from function calls.  Recent CPUs perform better when the
"bx lr" instruction is used rather than the "mov pc, lr" instruction,
and this sequence is strongly recommended to be used by the ARM
architecture manual (section A.4.1.1).
We provide a new macro "ret" with all its variants for the condition
code which will resolve to the appropriate instruction.
Rather than doing this piecemeal, and miss some instances, change all
the "mov pc" instances to use the new macro, with the exception of
the "movs" instruction and the kprobes code.  This allows us to detect
the "mov pc, lr" case and fix it up - and also gives us the possibility
of deploying this for other registers depending on the CPU selection.
Reported-by: Will Deacon <will.deacon@arm.com>
Tested-by: Stephen Warren <swarren@nvidia.com> # Tegra Jetson TK1
Tested-by: Robert Jarzmik <robert.jarzmik@free.fr> # mioa701_bootresume.S
Tested-by: Andrew Lunn <andrew@lunn.ch> # Kirkwood
Tested-by: Shawn Guo <shawn.guo@freescale.com>
Tested-by: Tony Lindgren <tony@atomide.com> # OMAPs
Tested-by: Gregory CLEMENT <gregory.clement@free-electrons.com> # Armada XP, 375, 385
Acked-by: Sekhar Nori <nsekhar@ti.com> # DaVinci
Acked-by: Christoffer Dall <christoffer.dall@linaro.org> # kvm/hyp
Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com> # PXA3xx
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> # Xen
Tested-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> # ARMv7M
Tested-by: Simon Horman <horms+renesas@verge.net.au> # Shmobile
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
	
	
This commit is contained in:
		
					parent
					
						
							
								af040ffc9b
							
						
					
				
			
			
				commit
				
					
						6ebbf2ce43
					
				
			
		
					 106 changed files with 644 additions and 607 deletions
				
			
		| 
						 | 
				
			
			@ -35,6 +35,7 @@
 | 
			
		|||
@ that is being targetted.
 | 
			
		||||
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
 | 
			
		||||
.text
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -648,7 +649,7 @@ _armv4_AES_set_encrypt_key:
 | 
			
		|||
 | 
			
		||||
.Ldone:	mov	r0,#0
 | 
			
		||||
	ldmia   sp!,{r4-r12,lr}
 | 
			
		||||
.Labrt:	mov	pc,lr
 | 
			
		||||
.Labrt:	ret	lr
 | 
			
		||||
ENDPROC(private_AES_set_encrypt_key)
 | 
			
		||||
 | 
			
		||||
.align	5
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -427,4 +427,25 @@ THUMB(	orr	\reg , \reg , #PSR_T_BIT	)
 | 
			
		|||
#endif
 | 
			
		||||
	.endm
 | 
			
		||||
 | 
			
		||||
	.irp	c,,eq,ne,cs,cc,mi,pl,vs,vc,hi,ls,ge,lt,gt,le,hs,lo
 | 
			
		||||
	.macro	ret\c, reg
 | 
			
		||||
#if __LINUX_ARM_ARCH__ < 6
 | 
			
		||||
	mov\c	pc, \reg
 | 
			
		||||
#else
 | 
			
		||||
	.ifeqs	"\reg", "lr"
 | 
			
		||||
	bx\c	\reg
 | 
			
		||||
	.else
 | 
			
		||||
	mov\c	pc, \reg
 | 
			
		||||
	.endif
 | 
			
		||||
#endif
 | 
			
		||||
	.endm
 | 
			
		||||
	.endr
 | 
			
		||||
 | 
			
		||||
	.macro	ret.w, reg
 | 
			
		||||
	ret	\reg
 | 
			
		||||
#ifdef CONFIG_THUMB2_KERNEL
 | 
			
		||||
	nop
 | 
			
		||||
#endif
 | 
			
		||||
	.endm
 | 
			
		||||
 | 
			
		||||
#endif /* __ASM_ASSEMBLER_H__ */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,5 +35,5 @@
 | 
			
		|||
\symbol_name:
 | 
			
		||||
	mov	r8, lr
 | 
			
		||||
	arch_irq_handler_default
 | 
			
		||||
	mov     pc, r8
 | 
			
		||||
	ret	r8
 | 
			
		||||
	.endm
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -90,7 +90,7 @@ ENTRY(printascii)
 | 
			
		|||
		ldrneb	r1, [r0], #1
 | 
			
		||||
		teqne	r1, #0
 | 
			
		||||
		bne	1b
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
ENDPROC(printascii)
 | 
			
		||||
 | 
			
		||||
ENTRY(printch)
 | 
			
		||||
| 
						 | 
				
			
			@ -105,7 +105,7 @@ ENTRY(debug_ll_addr)
 | 
			
		|||
		addruart r2, r3, ip
 | 
			
		||||
		str	r2, [r0]
 | 
			
		||||
		str	r3, [r1]
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
ENDPROC(debug_ll_addr)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -116,7 +116,7 @@ ENTRY(printascii)
 | 
			
		|||
		mov	r0, #0x04		@ SYS_WRITE0
 | 
			
		||||
	ARM(	svc	#0x123456	)
 | 
			
		||||
	THUMB(	svc	#0xab		)
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
ENDPROC(printascii)
 | 
			
		||||
 | 
			
		||||
ENTRY(printch)
 | 
			
		||||
| 
						 | 
				
			
			@ -125,14 +125,14 @@ ENTRY(printch)
 | 
			
		|||
		mov	r0, #0x03		@ SYS_WRITEC
 | 
			
		||||
	ARM(	svc	#0x123456	)
 | 
			
		||||
	THUMB(	svc	#0xab		)
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
ENDPROC(printch)
 | 
			
		||||
 | 
			
		||||
ENTRY(debug_ll_addr)
 | 
			
		||||
		mov	r2, #0
 | 
			
		||||
		str	r2, [r0]
 | 
			
		||||
		str	r2, [r1]
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
ENDPROC(debug_ll_addr)
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -224,7 +224,7 @@ svc_preempt:
 | 
			
		|||
1:	bl	preempt_schedule_irq		@ irq en/disable is done inside
 | 
			
		||||
	ldr	r0, [tsk, #TI_FLAGS]		@ get new tasks TI_FLAGS
 | 
			
		||||
	tst	r0, #_TIF_NEED_RESCHED
 | 
			
		||||
	moveq	pc, r8				@ go again
 | 
			
		||||
	reteq	r8				@ go again
 | 
			
		||||
	b	1b
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -490,7 +490,7 @@ ENDPROC(__und_usr)
 | 
			
		|||
	.pushsection .fixup, "ax"
 | 
			
		||||
	.align	2
 | 
			
		||||
4:	str     r4, [sp, #S_PC]			@ retry current instruction
 | 
			
		||||
	mov	pc, r9
 | 
			
		||||
	ret	r9
 | 
			
		||||
	.popsection
 | 
			
		||||
	.pushsection __ex_table,"a"
 | 
			
		||||
	.long	1b, 4b
 | 
			
		||||
| 
						 | 
				
			
			@ -552,7 +552,7 @@ call_fpe:
 | 
			
		|||
#endif
 | 
			
		||||
	tst	r0, #0x08000000			@ only CDP/CPRT/LDC/STC have bit 27
 | 
			
		||||
	tstne	r0, #0x04000000			@ bit 26 set on both ARM and Thumb-2
 | 
			
		||||
	moveq	pc, lr
 | 
			
		||||
	reteq	lr
 | 
			
		||||
	and	r8, r0, #0x00000f00		@ mask out CP number
 | 
			
		||||
 THUMB(	lsr	r8, r8, #8		)
 | 
			
		||||
	mov	r7, #1
 | 
			
		||||
| 
						 | 
				
			
			@ -571,33 +571,33 @@ call_fpe:
 | 
			
		|||
 THUMB(	add	pc, r8			)
 | 
			
		||||
	nop
 | 
			
		||||
 | 
			
		||||
	movw_pc	lr				@ CP#0
 | 
			
		||||
	ret.w	lr				@ CP#0
 | 
			
		||||
	W(b)	do_fpe				@ CP#1 (FPE)
 | 
			
		||||
	W(b)	do_fpe				@ CP#2 (FPE)
 | 
			
		||||
	movw_pc	lr				@ CP#3
 | 
			
		||||
	ret.w	lr				@ CP#3
 | 
			
		||||
#ifdef CONFIG_CRUNCH
 | 
			
		||||
	b	crunch_task_enable		@ CP#4 (MaverickCrunch)
 | 
			
		||||
	b	crunch_task_enable		@ CP#5 (MaverickCrunch)
 | 
			
		||||
	b	crunch_task_enable		@ CP#6 (MaverickCrunch)
 | 
			
		||||
#else
 | 
			
		||||
	movw_pc	lr				@ CP#4
 | 
			
		||||
	movw_pc	lr				@ CP#5
 | 
			
		||||
	movw_pc	lr				@ CP#6
 | 
			
		||||
	ret.w	lr				@ CP#4
 | 
			
		||||
	ret.w	lr				@ CP#5
 | 
			
		||||
	ret.w	lr				@ CP#6
 | 
			
		||||
#endif
 | 
			
		||||
	movw_pc	lr				@ CP#7
 | 
			
		||||
	movw_pc	lr				@ CP#8
 | 
			
		||||
	movw_pc	lr				@ CP#9
 | 
			
		||||
	ret.w	lr				@ CP#7
 | 
			
		||||
	ret.w	lr				@ CP#8
 | 
			
		||||
	ret.w	lr				@ CP#9
 | 
			
		||||
#ifdef CONFIG_VFP
 | 
			
		||||
	W(b)	do_vfp				@ CP#10 (VFP)
 | 
			
		||||
	W(b)	do_vfp				@ CP#11 (VFP)
 | 
			
		||||
#else
 | 
			
		||||
	movw_pc	lr				@ CP#10 (VFP)
 | 
			
		||||
	movw_pc	lr				@ CP#11 (VFP)
 | 
			
		||||
	ret.w	lr				@ CP#10 (VFP)
 | 
			
		||||
	ret.w	lr				@ CP#11 (VFP)
 | 
			
		||||
#endif
 | 
			
		||||
	movw_pc	lr				@ CP#12
 | 
			
		||||
	movw_pc	lr				@ CP#13
 | 
			
		||||
	movw_pc	lr				@ CP#14 (Debug)
 | 
			
		||||
	movw_pc	lr				@ CP#15 (Control)
 | 
			
		||||
	ret.w	lr				@ CP#12
 | 
			
		||||
	ret.w	lr				@ CP#13
 | 
			
		||||
	ret.w	lr				@ CP#14 (Debug)
 | 
			
		||||
	ret.w	lr				@ CP#15 (Control)
 | 
			
		||||
 | 
			
		||||
#ifdef NEED_CPU_ARCHITECTURE
 | 
			
		||||
	.align	2
 | 
			
		||||
| 
						 | 
				
			
			@ -649,7 +649,7 @@ ENTRY(fp_enter)
 | 
			
		|||
	.popsection
 | 
			
		||||
 | 
			
		||||
ENTRY(no_fp)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(no_fp)
 | 
			
		||||
 | 
			
		||||
__und_usr_fault_32:
 | 
			
		||||
| 
						 | 
				
			
			@ -745,7 +745,7 @@ ENDPROC(__switch_to)
 | 
			
		|||
#ifdef CONFIG_ARM_THUMB
 | 
			
		||||
	bx	\reg
 | 
			
		||||
#else
 | 
			
		||||
	mov	pc, \reg
 | 
			
		||||
	ret	\reg
 | 
			
		||||
#endif
 | 
			
		||||
	.endm
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -837,7 +837,7 @@ kuser_cmpxchg64_fixup:
 | 
			
		|||
#if __LINUX_ARM_ARCH__ < 6
 | 
			
		||||
	bcc	kuser_cmpxchg32_fixup
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
	.previous
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
| 
						 | 
				
			
			@ -905,7 +905,7 @@ kuser_cmpxchg32_fixup:
 | 
			
		|||
	subs	r8, r4, r7
 | 
			
		||||
	rsbcss	r8, r8, #(2b - 1b)
 | 
			
		||||
	strcs	r7, [sp, #S_PC]
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
	.previous
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,6 +8,7 @@
 | 
			
		|||
 * published by the Free Software Foundation.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
#include <asm/unistd.h>
 | 
			
		||||
#include <asm/ftrace.h>
 | 
			
		||||
#include <asm/unwind.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -88,7 +89,7 @@ ENTRY(ret_from_fork)
 | 
			
		|||
	cmp	r5, #0
 | 
			
		||||
	movne	r0, r4
 | 
			
		||||
	adrne	lr, BSYM(1f)
 | 
			
		||||
	movne	pc, r5
 | 
			
		||||
	retne	r5
 | 
			
		||||
1:	get_thread_info tsk
 | 
			
		||||
	b	ret_slow_syscall
 | 
			
		||||
ENDPROC(ret_from_fork)
 | 
			
		||||
| 
						 | 
				
			
			@ -290,7 +291,7 @@ ENDPROC(ftrace_graph_caller_old)
 | 
			
		|||
 | 
			
		||||
.macro mcount_exit
 | 
			
		||||
	ldmia	sp!, {r0-r3, ip, lr}
 | 
			
		||||
	mov	pc, ip
 | 
			
		||||
	ret	ip
 | 
			
		||||
.endm
 | 
			
		||||
 | 
			
		||||
ENTRY(__gnu_mcount_nc)
 | 
			
		||||
| 
						 | 
				
			
			@ -298,7 +299,7 @@ UNWIND(.fnstart)
 | 
			
		|||
#ifdef CONFIG_DYNAMIC_FTRACE
 | 
			
		||||
	mov	ip, lr
 | 
			
		||||
	ldmia	sp!, {lr}
 | 
			
		||||
	mov	pc, ip
 | 
			
		||||
	ret	ip
 | 
			
		||||
#else
 | 
			
		||||
	__mcount
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -333,12 +334,12 @@ return_to_handler:
 | 
			
		|||
	bl	ftrace_return_to_handler
 | 
			
		||||
	mov	lr, r0			@ r0 has real ret addr
 | 
			
		||||
	ldmia	sp!, {r0-r3}
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
ENTRY(ftrace_stub)
 | 
			
		||||
.Lftrace_stub:
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(ftrace_stub)
 | 
			
		||||
 | 
			
		||||
#endif /* CONFIG_FUNCTION_TRACER */
 | 
			
		||||
| 
						 | 
				
			
			@ -561,7 +562,7 @@ sys_mmap2:
 | 
			
		|||
		streq	r5, [sp, #4]
 | 
			
		||||
		beq	sys_mmap_pgoff
 | 
			
		||||
		mov	r0, #-EINVAL
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
#else
 | 
			
		||||
		str	r5, [sp, #4]
 | 
			
		||||
		b	sys_mmap_pgoff
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -240,12 +240,6 @@
 | 
			
		|||
	movs	pc, lr				@ return & move spsr_svc into cpsr
 | 
			
		||||
	.endm
 | 
			
		||||
 | 
			
		||||
	@
 | 
			
		||||
	@ 32-bit wide "mov pc, reg"
 | 
			
		||||
	@
 | 
			
		||||
	.macro	movw_pc, reg
 | 
			
		||||
	mov	pc, \reg
 | 
			
		||||
	.endm
 | 
			
		||||
#else	/* CONFIG_THUMB2_KERNEL */
 | 
			
		||||
	.macro	svc_exit, rpsr, irq = 0
 | 
			
		||||
	.if	\irq != 0
 | 
			
		||||
| 
						 | 
				
			
			@ -304,14 +298,6 @@
 | 
			
		|||
	movs	pc, lr				@ return & move spsr_svc into cpsr
 | 
			
		||||
	.endm
 | 
			
		||||
#endif	/* ifdef CONFIG_CPU_V7M / else */
 | 
			
		||||
 | 
			
		||||
	@
 | 
			
		||||
	@ 32-bit wide "mov pc, reg"
 | 
			
		||||
	@
 | 
			
		||||
	.macro	movw_pc, reg
 | 
			
		||||
	mov	pc, \reg
 | 
			
		||||
	nop
 | 
			
		||||
	.endm
 | 
			
		||||
#endif	/* !CONFIG_THUMB2_KERNEL */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,7 +32,7 @@ ENTRY(__set_fiq_regs)
 | 
			
		|||
	ldr	lr, [r0]
 | 
			
		||||
	msr	cpsr_c, r1	@ return to SVC mode
 | 
			
		||||
	mov	r0, r0		@ avoid hazard prior to ARMv4
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(__set_fiq_regs)
 | 
			
		||||
 | 
			
		||||
ENTRY(__get_fiq_regs)
 | 
			
		||||
| 
						 | 
				
			
			@ -45,5 +45,5 @@ ENTRY(__get_fiq_regs)
 | 
			
		|||
	str	lr, [r0]
 | 
			
		||||
	msr	cpsr_c, r1	@ return to SVC mode
 | 
			
		||||
	mov	r0, r0		@ avoid hazard prior to ARMv4
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(__get_fiq_regs)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,6 +10,7 @@
 | 
			
		|||
 * published by the Free Software Foundation.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
 | 
			
		||||
#define ATAG_CORE 0x54410001
 | 
			
		||||
#define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2)
 | 
			
		||||
| 
						 | 
				
			
			@ -61,10 +62,10 @@ __vet_atags:
 | 
			
		|||
	cmp	r5, r6
 | 
			
		||||
	bne	1f
 | 
			
		||||
 | 
			
		||||
2:	mov	pc, lr				@ atag/dtb pointer is ok
 | 
			
		||||
2:	ret	lr				@ atag/dtb pointer is ok
 | 
			
		||||
 | 
			
		||||
1:	mov	r2, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(__vet_atags)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -162,7 +163,7 @@ __lookup_processor_type:
 | 
			
		|||
	cmp	r5, r6
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mov	r5, #0				@ unknown processor
 | 
			
		||||
2:	mov	pc, lr
 | 
			
		||||
2:	ret	lr
 | 
			
		||||
ENDPROC(__lookup_processor_type)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -82,7 +82,7 @@ ENTRY(stext)
 | 
			
		|||
	adr	lr, BSYM(1f)			@ return (PIC) address
 | 
			
		||||
 ARM(	add	pc, r10, #PROCINFO_INITFUNC	)
 | 
			
		||||
 THUMB(	add	r12, r10, #PROCINFO_INITFUNC	)
 | 
			
		||||
 THUMB(	mov	pc, r12				)
 | 
			
		||||
 THUMB(	ret	r12				)
 | 
			
		||||
 1:	b	__after_proc_init
 | 
			
		||||
ENDPROC(stext)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -119,7 +119,7 @@ ENTRY(secondary_startup)
 | 
			
		|||
	mov	r13, r12			@ __secondary_switched address
 | 
			
		||||
 ARM(	add	pc, r10, #PROCINFO_INITFUNC	)
 | 
			
		||||
 THUMB(	add	r12, r10, #PROCINFO_INITFUNC	)
 | 
			
		||||
 THUMB(	mov	pc, r12				)
 | 
			
		||||
 THUMB(	ret	r12				)
 | 
			
		||||
ENDPROC(secondary_startup)
 | 
			
		||||
 | 
			
		||||
ENTRY(__secondary_switched)
 | 
			
		||||
| 
						 | 
				
			
			@ -164,7 +164,7 @@ __after_proc_init:
 | 
			
		|||
#endif
 | 
			
		||||
	mcr	p15, 0, r0, c1, c0, 0		@ write control reg
 | 
			
		||||
#endif /* CONFIG_CPU_CP15 */
 | 
			
		||||
	mov	pc, r13
 | 
			
		||||
	ret	r13
 | 
			
		||||
ENDPROC(__after_proc_init)
 | 
			
		||||
	.ltorg
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -254,7 +254,7 @@ ENTRY(__setup_mpu)
 | 
			
		|||
	orr	r0, r0, #CR_M			@ Set SCTRL.M (MPU on)
 | 
			
		||||
	mcr	p15, 0, r0, c1, c0, 0		@ Enable MPU
 | 
			
		||||
	isb
 | 
			
		||||
	mov pc,lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(__setup_mpu)
 | 
			
		||||
#endif
 | 
			
		||||
#include "head-common.S"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -140,7 +140,7 @@ ENTRY(stext)
 | 
			
		|||
	mov	r8, r4				@ set TTBR1 to swapper_pg_dir
 | 
			
		||||
 ARM(	add	pc, r10, #PROCINFO_INITFUNC	)
 | 
			
		||||
 THUMB(	add	r12, r10, #PROCINFO_INITFUNC	)
 | 
			
		||||
 THUMB(	mov	pc, r12				)
 | 
			
		||||
 THUMB(	ret	r12				)
 | 
			
		||||
1:	b	__enable_mmu
 | 
			
		||||
ENDPROC(stext)
 | 
			
		||||
	.ltorg
 | 
			
		||||
| 
						 | 
				
			
			@ -335,7 +335,7 @@ __create_page_tables:
 | 
			
		|||
	sub	r4, r4, #0x1000		@ point to the PGD table
 | 
			
		||||
	mov	r4, r4, lsr #ARCH_PGD_SHIFT
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(__create_page_tables)
 | 
			
		||||
	.ltorg
 | 
			
		||||
	.align
 | 
			
		||||
| 
						 | 
				
			
			@ -383,7 +383,7 @@ ENTRY(secondary_startup)
 | 
			
		|||
 ARM(	add	pc, r10, #PROCINFO_INITFUNC	) @ initialise processor
 | 
			
		||||
						  @ (return control reg)
 | 
			
		||||
 THUMB(	add	r12, r10, #PROCINFO_INITFUNC	)
 | 
			
		||||
 THUMB(	mov	pc, r12				)
 | 
			
		||||
 THUMB(	ret	r12				)
 | 
			
		||||
ENDPROC(secondary_startup)
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
| 
						 | 
				
			
			@ -468,7 +468,7 @@ ENTRY(__turn_mmu_on)
 | 
			
		|||
	instr_sync
 | 
			
		||||
	mov	r3, r3
 | 
			
		||||
	mov	r3, r13
 | 
			
		||||
	mov	pc, r3
 | 
			
		||||
	ret	r3
 | 
			
		||||
__turn_mmu_on_end:
 | 
			
		||||
ENDPROC(__turn_mmu_on)
 | 
			
		||||
	.popsection
 | 
			
		||||
| 
						 | 
				
			
			@ -487,7 +487,7 @@ __fixup_smp:
 | 
			
		|||
	orr	r4, r4, #0x0000b000
 | 
			
		||||
	orr	r4, r4, #0x00000020	@ val 0x4100b020
 | 
			
		||||
	teq	r3, r4			@ ARM 11MPCore?
 | 
			
		||||
	moveq	pc, lr			@ yes, assume SMP
 | 
			
		||||
	reteq	lr			@ yes, assume SMP
 | 
			
		||||
 | 
			
		||||
	mrc	p15, 0, r0, c0, c0, 5	@ read MPIDR
 | 
			
		||||
	and	r0, r0, #0xc0000000	@ multiprocessing extensions and
 | 
			
		||||
| 
						 | 
				
			
			@ -500,7 +500,7 @@ __fixup_smp:
 | 
			
		|||
	orr	r4, r4, #0x0000c000
 | 
			
		||||
	orr	r4, r4, #0x00000090
 | 
			
		||||
	teq	r3, r4			@ Check for ARM Cortex-A9
 | 
			
		||||
	movne	pc, lr			@ Not ARM Cortex-A9,
 | 
			
		||||
	retne	lr			@ Not ARM Cortex-A9,
 | 
			
		||||
 | 
			
		||||
	@ If a future SoC *does* use 0x0 as the PERIPH_BASE, then the
 | 
			
		||||
	@ below address check will need to be #ifdef'd or equivalent
 | 
			
		||||
| 
						 | 
				
			
			@ -512,7 +512,7 @@ __fixup_smp:
 | 
			
		|||
ARM_BE8(rev	r0, r0)			@ byteswap if big endian
 | 
			
		||||
	and	r0, r0, #0x3		@ number of CPUs
 | 
			
		||||
	teq	r0, #0x0		@ is 1?
 | 
			
		||||
	movne	pc, lr
 | 
			
		||||
	retne	lr
 | 
			
		||||
 | 
			
		||||
__fixup_smp_on_up:
 | 
			
		||||
	adr	r0, 1f
 | 
			
		||||
| 
						 | 
				
			
			@ -539,7 +539,7 @@ smp_on_up:
 | 
			
		|||
	.text
 | 
			
		||||
__do_fixup_smp_on_up:
 | 
			
		||||
	cmp	r4, r5
 | 
			
		||||
	movhs	pc, lr
 | 
			
		||||
	reths	lr
 | 
			
		||||
	ldmia	r4!, {r0, r6}
 | 
			
		||||
 ARM(	str	r6, [r0, r3]	)
 | 
			
		||||
 THUMB(	add	r0, r0, r3	)
 | 
			
		||||
| 
						 | 
				
			
			@ -672,7 +672,7 @@ ARM_BE8(rev16	ip, ip)
 | 
			
		|||
2:	cmp	r4, r5
 | 
			
		||||
	ldrcc	r7, [r4], #4	@ use branch for delay slot
 | 
			
		||||
	bcc	1b
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
#endif
 | 
			
		||||
ENDPROC(__fixup_a_pv_table)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -99,7 +99,7 @@ ENTRY(__hyp_stub_install_secondary)
 | 
			
		|||
	 * immediately.
 | 
			
		||||
	 */
 | 
			
		||||
	compare_cpu_mode_with_primary	r4, r5, r6, r7
 | 
			
		||||
	movne	pc, lr
 | 
			
		||||
	retne	lr
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Once we have given up on one CPU, we do not try to install the
 | 
			
		||||
| 
						 | 
				
			
			@ -111,7 +111,7 @@ ENTRY(__hyp_stub_install_secondary)
 | 
			
		|||
	 */
 | 
			
		||||
 | 
			
		||||
	cmp	r4, #HYP_MODE
 | 
			
		||||
	movne	pc, lr			@ give up if the CPU is not in HYP mode
 | 
			
		||||
	retne	lr			@ give up if the CPU is not in HYP mode
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Configure HSCTLR to set correct exception endianness/instruction set
 | 
			
		||||
| 
						 | 
				
			
			@ -201,7 +201,7 @@ ENDPROC(__hyp_get_vectors)
 | 
			
		|||
	@ fall through
 | 
			
		||||
ENTRY(__hyp_set_vectors)
 | 
			
		||||
	__HVC(0)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(__hyp_set_vectors)
 | 
			
		||||
 | 
			
		||||
#ifndef ZIMAGE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -179,7 +179,7 @@ concan_load:
 | 
			
		|||
	get_thread_info r10
 | 
			
		||||
#endif
 | 
			
		||||
4:	dec_preempt_count r10, r3
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Back up Concan regs to save area and disable access to them
 | 
			
		||||
| 
						 | 
				
			
			@ -265,7 +265,7 @@ ENTRY(iwmmxt_task_copy)
 | 
			
		|||
	mov	r3, lr				@ preserve return address
 | 
			
		||||
	bl	concan_dump
 | 
			
		||||
	msr	cpsr_c, ip			@ restore interrupt mode
 | 
			
		||||
	mov	pc, r3
 | 
			
		||||
	ret	r3
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Restore Concan state from given memory address
 | 
			
		||||
| 
						 | 
				
			
			@ -301,7 +301,7 @@ ENTRY(iwmmxt_task_restore)
 | 
			
		|||
	mov	r3, lr				@ preserve return address
 | 
			
		||||
	bl	concan_load
 | 
			
		||||
	msr	cpsr_c, ip			@ restore interrupt mode
 | 
			
		||||
	mov	pc, r3
 | 
			
		||||
	ret	r3
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Concan handling on task switch
 | 
			
		||||
| 
						 | 
				
			
			@ -323,7 +323,7 @@ ENTRY(iwmmxt_task_switch)
 | 
			
		|||
	add	r3, r0, #TI_IWMMXT_STATE	@ get next task Concan save area
 | 
			
		||||
	ldr	r2, [r2]			@ get current Concan owner
 | 
			
		||||
	teq	r2, r3				@ next task owns it?
 | 
			
		||||
	movne	pc, lr				@ no: leave Concan disabled
 | 
			
		||||
	retne	lr				@ no: leave Concan disabled
 | 
			
		||||
 | 
			
		||||
1:	@ flip Concan access
 | 
			
		||||
	XSC(eor	r1, r1, #0x3)
 | 
			
		||||
| 
						 | 
				
			
			@ -350,7 +350,7 @@ ENTRY(iwmmxt_task_release)
 | 
			
		|||
	eors	r0, r0, r1			@ if equal...
 | 
			
		||||
	streq	r0, [r3]			@ then clear ownership
 | 
			
		||||
	msr	cpsr_c, r2			@ restore interrupts
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	.data
 | 
			
		||||
concan_owner:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,6 +3,7 @@
 | 
			
		|||
 */
 | 
			
		||||
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
#include <asm/kexec.h>
 | 
			
		||||
 | 
			
		||||
	.align	3	/* not needed for this code, but keeps fncpy() happy */
 | 
			
		||||
| 
						 | 
				
			
			@ -59,7 +60,7 @@ ENTRY(relocate_new_kernel)
 | 
			
		|||
	mov r0,#0
 | 
			
		||||
	ldr r1,kexec_mach_type
 | 
			
		||||
	ldr r2,kexec_boot_atags
 | 
			
		||||
 ARM(	mov pc, lr	)
 | 
			
		||||
 ARM(	ret lr	)
 | 
			
		||||
 THUMB(	bx lr		)
 | 
			
		||||
 | 
			
		||||
	.align
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -107,7 +107,7 @@ ENTRY(cpu_resume_mmu)
 | 
			
		|||
	instr_sync
 | 
			
		||||
	mov	r0, r0
 | 
			
		||||
	mov	r0, r0
 | 
			
		||||
	mov	pc, r3			@ jump to virtual address
 | 
			
		||||
	ret	r3			@ jump to virtual address
 | 
			
		||||
ENDPROC(cpu_resume_mmu)
 | 
			
		||||
	.popsection
 | 
			
		||||
cpu_resume_after_mmu:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,6 +17,7 @@
 | 
			
		|||
 */
 | 
			
		||||
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
#include <asm/unified.h>
 | 
			
		||||
#include <asm/asm-offsets.h>
 | 
			
		||||
#include <asm/kvm_asm.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -134,7 +135,7 @@ phase2:
 | 
			
		|||
	ldr	r0, =TRAMPOLINE_VA
 | 
			
		||||
	adr	r1, target
 | 
			
		||||
	bfi	r0, r1, #0, #PAGE_SHIFT
 | 
			
		||||
	mov	pc, r0
 | 
			
		||||
	ret	r0
 | 
			
		||||
 | 
			
		||||
target:	@ We're now in the trampoline code, switch page tables
 | 
			
		||||
	mcrr	p15, 4, r2, r3, c2
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,6 +27,7 @@ Boston, MA 02110-1301, USA.  */
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
 | 
			
		||||
#ifdef __ARMEB__
 | 
			
		||||
#define al r1
 | 
			
		||||
| 
						 | 
				
			
			@ -47,7 +48,7 @@ ENTRY(__aeabi_llsl)
 | 
			
		|||
 THUMB(	lsrmi	r3, al, ip		)
 | 
			
		||||
 THUMB(	orrmi	ah, ah, r3		)
 | 
			
		||||
	mov	al, al, lsl r2
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
ENDPROC(__ashldi3)
 | 
			
		||||
ENDPROC(__aeabi_llsl)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,6 +27,7 @@ Boston, MA 02110-1301, USA.  */
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
 | 
			
		||||
#ifdef __ARMEB__
 | 
			
		||||
#define al r1
 | 
			
		||||
| 
						 | 
				
			
			@ -47,7 +48,7 @@ ENTRY(__aeabi_lasr)
 | 
			
		|||
 THUMB(	lslmi	r3, ah, ip		)
 | 
			
		||||
 THUMB(	orrmi	al, al, r3		)
 | 
			
		||||
	mov	ah, ah, asr r2
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
ENDPROC(__ashrdi3)
 | 
			
		||||
ENDPROC(__aeabi_lasr)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,7 +25,7 @@
 | 
			
		|||
ENTRY(c_backtrace)
 | 
			
		||||
 | 
			
		||||
#if !defined(CONFIG_FRAME_POINTER) || !defined(CONFIG_PRINTK)
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
ENDPROC(c_backtrace)
 | 
			
		||||
#else
 | 
			
		||||
		stmfd	sp!, {r4 - r8, lr}	@ Save an extra register so we have a location...
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
#include <asm/assembler.h>
 | 
			
		||||
#include <asm/unwind.h>
 | 
			
		||||
 | 
			
		||||
#if __LINUX_ARM_ARCH__ >= 6
 | 
			
		||||
| 
						 | 
				
			
			@ -70,7 +71,7 @@ UNWIND(	.fnstart	)
 | 
			
		|||
	\instr	r2, r2, r3
 | 
			
		||||
	str	r2, [r1, r0, lsl #2]
 | 
			
		||||
	restore_irqs ip
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
UNWIND(	.fnend		)
 | 
			
		||||
ENDPROC(\name		)
 | 
			
		||||
	.endm
 | 
			
		||||
| 
						 | 
				
			
			@ -98,7 +99,7 @@ UNWIND(	.fnstart	)
 | 
			
		|||
	\store	r2, [r1]
 | 
			
		||||
	moveq	r0, #0
 | 
			
		||||
	restore_irqs ip
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
UNWIND(	.fnend		)
 | 
			
		||||
ENDPROC(\name		)
 | 
			
		||||
	.endm
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
#include <linux/linkage.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
 | 
			
		||||
#if __LINUX_ARM_ARCH__ >= 6
 | 
			
		||||
ENTRY(__bswapsi2)
 | 
			
		||||
| 
						 | 
				
			
			@ -18,7 +19,7 @@ ENTRY(__bswapsi2)
 | 
			
		|||
	mov r3, r3, lsr #8
 | 
			
		||||
	bic r3, r3, #0xff00
 | 
			
		||||
	eor r0, r3, r0, ror #8
 | 
			
		||||
	mov pc, lr
 | 
			
		||||
	ret lr
 | 
			
		||||
ENDPROC(__bswapsi2)
 | 
			
		||||
 | 
			
		||||
ENTRY(__bswapdi2)
 | 
			
		||||
| 
						 | 
				
			
			@ -31,6 +32,6 @@ ENTRY(__bswapdi2)
 | 
			
		|||
	bic r1, r1, #0xff00
 | 
			
		||||
	eor r1, r1, r0, ror #8
 | 
			
		||||
	eor r0, r3, ip, ror #8
 | 
			
		||||
	mov pc, lr
 | 
			
		||||
	ret lr
 | 
			
		||||
ENDPROC(__bswapdi2)
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,9 +36,9 @@ ENTRY(call_with_stack)
 | 
			
		|||
	mov	r0, r1
 | 
			
		||||
 | 
			
		||||
	adr	lr, BSYM(1f)
 | 
			
		||||
	mov	pc, r2
 | 
			
		||||
	ret	r2
 | 
			
		||||
 | 
			
		||||
1:	ldr	lr, [sp]
 | 
			
		||||
	ldr	sp, [sp, #4]
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(call_with_stack)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -97,7 +97,7 @@ td3	.req	lr
 | 
			
		|||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
		adcnes	sum, sum, td0		@ update checksum
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
 | 
			
		||||
ENTRY(csum_partial)
 | 
			
		||||
		stmfd	sp!, {buf, lr}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,6 +7,7 @@
 | 
			
		|||
 * it under the terms of the GNU General Public License version 2 as
 | 
			
		||||
 * published by the Free Software Foundation.
 | 
			
		||||
 */
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * unsigned int
 | 
			
		||||
| 
						 | 
				
			
			@ -40,7 +41,7 @@ sum	.req	r3
 | 
			
		|||
		adcs	sum, sum, ip, put_byte_1	@ update checksum
 | 
			
		||||
		strb	ip, [dst], #1
 | 
			
		||||
		tst	dst, #2
 | 
			
		||||
		moveq	pc, lr			@ dst is now 32bit aligned
 | 
			
		||||
		reteq	lr			@ dst is now 32bit aligned
 | 
			
		||||
 | 
			
		||||
.Ldst_16bit:	load2b	r8, ip
 | 
			
		||||
		sub	len, len, #2
 | 
			
		||||
| 
						 | 
				
			
			@ -48,7 +49,7 @@ sum	.req	r3
 | 
			
		|||
		strb	r8, [dst], #1
 | 
			
		||||
		adcs	sum, sum, ip, put_byte_1
 | 
			
		||||
		strb	ip, [dst], #1
 | 
			
		||||
		mov	pc, lr			@ dst is now 32bit aligned
 | 
			
		||||
		ret	lr			@ dst is now 32bit aligned
 | 
			
		||||
 | 
			
		||||
		/*
 | 
			
		||||
		 * Handle 0 to 7 bytes, with any alignment of source and
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,7 +35,7 @@ ENTRY(__loop_const_udelay)			@ 0 <= r0 <= 0x7fffff06
 | 
			
		|||
		mul	r0, r2, r0		@ max = 2^32-1
 | 
			
		||||
		add	r0, r0, r1, lsr #32-6
 | 
			
		||||
		movs	r0, r0, lsr #6
 | 
			
		||||
		moveq	pc, lr
 | 
			
		||||
		reteq	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * loops = r0 * HZ * loops_per_jiffy / 1000000
 | 
			
		||||
| 
						 | 
				
			
			@ -46,23 +46,23 @@ ENTRY(__loop_const_udelay)			@ 0 <= r0 <= 0x7fffff06
 | 
			
		|||
ENTRY(__loop_delay)
 | 
			
		||||
		subs	r0, r0, #1
 | 
			
		||||
#if 0
 | 
			
		||||
		movls	pc, lr
 | 
			
		||||
		retls	lr
 | 
			
		||||
		subs	r0, r0, #1
 | 
			
		||||
		movls	pc, lr
 | 
			
		||||
		retls	lr
 | 
			
		||||
		subs	r0, r0, #1
 | 
			
		||||
		movls	pc, lr
 | 
			
		||||
		retls	lr
 | 
			
		||||
		subs	r0, r0, #1
 | 
			
		||||
		movls	pc, lr
 | 
			
		||||
		retls	lr
 | 
			
		||||
		subs	r0, r0, #1
 | 
			
		||||
		movls	pc, lr
 | 
			
		||||
		retls	lr
 | 
			
		||||
		subs	r0, r0, #1
 | 
			
		||||
		movls	pc, lr
 | 
			
		||||
		retls	lr
 | 
			
		||||
		subs	r0, r0, #1
 | 
			
		||||
		movls	pc, lr
 | 
			
		||||
		retls	lr
 | 
			
		||||
		subs	r0, r0, #1
 | 
			
		||||
#endif
 | 
			
		||||
		bhi	__loop_delay
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
ENDPROC(__loop_udelay)
 | 
			
		||||
ENDPROC(__loop_const_udelay)
 | 
			
		||||
ENDPROC(__loop_delay)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,6 +13,7 @@
 | 
			
		|||
 */
 | 
			
		||||
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
#include <asm/unwind.h>
 | 
			
		||||
 | 
			
		||||
#ifdef __ARMEB__
 | 
			
		||||
| 
						 | 
				
			
			@ -97,7 +98,7 @@ UNWIND(.fnstart)
 | 
			
		|||
	mov	yl, #0
 | 
			
		||||
	cmpeq	xl, r4
 | 
			
		||||
	movlo	xh, xl
 | 
			
		||||
	movlo	pc, lr
 | 
			
		||||
	retlo	lr
 | 
			
		||||
 | 
			
		||||
	@ The division loop for lower bit positions.
 | 
			
		||||
	@ Here we shift remainer bits leftwards rather than moving the
 | 
			
		||||
| 
						 | 
				
			
			@ -111,14 +112,14 @@ UNWIND(.fnstart)
 | 
			
		|||
	subcs	xh, xh, r4
 | 
			
		||||
	movs	ip, ip, lsr #1
 | 
			
		||||
	bne	4b
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	@ The top part of remainder became zero.  If carry is set
 | 
			
		||||
	@ (the 33th bit) this is a false positive so resume the loop.
 | 
			
		||||
	@ Otherwise, if lower part is also null then we are done.
 | 
			
		||||
6:	bcs	5b
 | 
			
		||||
	cmp	xl, #0
 | 
			
		||||
	moveq	pc, lr
 | 
			
		||||
	reteq	lr
 | 
			
		||||
 | 
			
		||||
	@ We still have remainer bits in the low part.  Bring them up.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -144,7 +145,7 @@ UNWIND(.fnstart)
 | 
			
		|||
	movs	ip, ip, lsr #1
 | 
			
		||||
	mov	xh, #1
 | 
			
		||||
	bne	4b
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
8:	@ Division by a power of 2: determine what that divisor order is
 | 
			
		||||
	@ then simply shift values around
 | 
			
		||||
| 
						 | 
				
			
			@ -184,13 +185,13 @@ UNWIND(.fnstart)
 | 
			
		|||
 THUMB(	orr	yl, yl, xh		)
 | 
			
		||||
	mov	xh, xl, lsl ip
 | 
			
		||||
	mov	xh, xh, lsr ip
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	@ eq -> division by 1: obvious enough...
 | 
			
		||||
9:	moveq	yl, xl
 | 
			
		||||
	moveq	yh, xh
 | 
			
		||||
	moveq	xh, #0
 | 
			
		||||
	moveq	pc, lr
 | 
			
		||||
	reteq	lr
 | 
			
		||||
UNWIND(.fnend)
 | 
			
		||||
 | 
			
		||||
UNWIND(.fnstart)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,7 +35,7 @@ ENTRY(_find_first_zero_bit_le)
 | 
			
		|||
2:		cmp	r2, r1			@ any more?
 | 
			
		||||
		blo	1b
 | 
			
		||||
3:		mov	r0, r1			@ no free bits
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
ENDPROC(_find_first_zero_bit_le)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -76,7 +76,7 @@ ENTRY(_find_first_bit_le)
 | 
			
		|||
2:		cmp	r2, r1			@ any more?
 | 
			
		||||
		blo	1b
 | 
			
		||||
3:		mov	r0, r1			@ no free bits
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
ENDPROC(_find_first_bit_le)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -114,7 +114,7 @@ ENTRY(_find_first_zero_bit_be)
 | 
			
		|||
2:		cmp	r2, r1			@ any more?
 | 
			
		||||
		blo	1b
 | 
			
		||||
3:		mov	r0, r1			@ no free bits
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
ENDPROC(_find_first_zero_bit_be)
 | 
			
		||||
 | 
			
		||||
ENTRY(_find_next_zero_bit_be)
 | 
			
		||||
| 
						 | 
				
			
			@ -148,7 +148,7 @@ ENTRY(_find_first_bit_be)
 | 
			
		|||
2:		cmp	r2, r1			@ any more?
 | 
			
		||||
		blo	1b
 | 
			
		||||
3:		mov	r0, r1			@ no free bits
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
ENDPROC(_find_first_bit_be)
 | 
			
		||||
 | 
			
		||||
ENTRY(_find_next_bit_be)
 | 
			
		||||
| 
						 | 
				
			
			@ -192,5 +192,5 @@ ENDPROC(_find_next_bit_be)
 | 
			
		|||
#endif
 | 
			
		||||
		cmp	r1, r0			@ Clamp to maxbit
 | 
			
		||||
		movlo	r0, r1
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,7 +36,7 @@ ENTRY(__get_user_1)
 | 
			
		|||
	check_uaccess r0, 1, r1, r2, __get_user_bad
 | 
			
		||||
1: TUSER(ldrb)	r2, [r0]
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(__get_user_1)
 | 
			
		||||
 | 
			
		||||
ENTRY(__get_user_2)
 | 
			
		||||
| 
						 | 
				
			
			@ -56,20 +56,20 @@ rb	.req	r0
 | 
			
		|||
	orr	r2, rb, r2, lsl #8
 | 
			
		||||
#endif
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(__get_user_2)
 | 
			
		||||
 | 
			
		||||
ENTRY(__get_user_4)
 | 
			
		||||
	check_uaccess r0, 4, r1, r2, __get_user_bad
 | 
			
		||||
4: TUSER(ldr)	r2, [r0]
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(__get_user_4)
 | 
			
		||||
 | 
			
		||||
__get_user_bad:
 | 
			
		||||
	mov	r2, #0
 | 
			
		||||
	mov	r0, #-EFAULT
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(__get_user_bad)
 | 
			
		||||
 | 
			
		||||
.pushsection __ex_table, "a"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,7 +25,7 @@
 | 
			
		|||
 | 
			
		||||
ENTRY(__raw_readsb)
 | 
			
		||||
		teq	r2, #0		@ do we have to check for the zero len?
 | 
			
		||||
		moveq	pc, lr
 | 
			
		||||
		reteq	lr
 | 
			
		||||
		ands	ip, r1, #3
 | 
			
		||||
		bne	.Linsb_align
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,7 +12,7 @@
 | 
			
		|||
 | 
			
		||||
ENTRY(__raw_readsl)
 | 
			
		||||
		teq	r2, #0		@ do we have to check for the zero len?
 | 
			
		||||
		moveq	pc, lr
 | 
			
		||||
		reteq	lr
 | 
			
		||||
		ands	ip, r1, #3
 | 
			
		||||
		bne	3f
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -33,7 +33,7 @@ ENTRY(__raw_readsl)
 | 
			
		|||
		stmcsia	r1!, {r3, ip}
 | 
			
		||||
		ldrne	r3, [r0, #0]
 | 
			
		||||
		strne	r3, [r1, #0]
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
 | 
			
		||||
3:		ldr	r3, [r0]
 | 
			
		||||
		cmp	ip, #2
 | 
			
		||||
| 
						 | 
				
			
			@ -75,5 +75,5 @@ ENTRY(__raw_readsl)
 | 
			
		|||
		strb	r3, [r1, #1]
 | 
			
		||||
8:		mov	r3, ip, get_byte_0
 | 
			
		||||
		strb	r3, [r1, #0]
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
ENDPROC(__raw_readsl)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,11 +27,11 @@
 | 
			
		|||
		strb	r3, [r1], #1
 | 
			
		||||
 | 
			
		||||
		subs	r2, r2, #1
 | 
			
		||||
		moveq	pc, lr
 | 
			
		||||
		reteq	lr
 | 
			
		||||
 | 
			
		||||
ENTRY(__raw_readsw)
 | 
			
		||||
		teq	r2, #0		@ do we have to check for the zero len?
 | 
			
		||||
		moveq	pc, lr
 | 
			
		||||
		reteq	lr
 | 
			
		||||
		tst	r1, #3
 | 
			
		||||
		bne	.Linsw_align
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,7 +26,7 @@
 | 
			
		|||
 | 
			
		||||
ENTRY(__raw_readsw)
 | 
			
		||||
		teq	r2, #0
 | 
			
		||||
		moveq	pc, lr
 | 
			
		||||
		reteq	lr
 | 
			
		||||
		tst	r1, #3
 | 
			
		||||
		bne	.Linsw_align
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -45,7 +45,7 @@
 | 
			
		|||
 | 
			
		||||
ENTRY(__raw_writesb)
 | 
			
		||||
		teq	r2, #0		@ do we have to check for the zero len?
 | 
			
		||||
		moveq	pc, lr
 | 
			
		||||
		reteq	lr
 | 
			
		||||
		ands	ip, r1, #3
 | 
			
		||||
		bne	.Loutsb_align
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,7 +12,7 @@
 | 
			
		|||
 | 
			
		||||
ENTRY(__raw_writesl)
 | 
			
		||||
		teq	r2, #0		@ do we have to check for the zero len?
 | 
			
		||||
		moveq	pc, lr
 | 
			
		||||
		reteq	lr
 | 
			
		||||
		ands	ip, r1, #3
 | 
			
		||||
		bne	3f
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -33,7 +33,7 @@ ENTRY(__raw_writesl)
 | 
			
		|||
		ldrne	r3, [r1, #0]
 | 
			
		||||
		strcs	ip, [r0, #0]
 | 
			
		||||
		strne	r3, [r0, #0]
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
 | 
			
		||||
3:		bic	r1, r1, #3
 | 
			
		||||
		ldr	r3, [r1], #4
 | 
			
		||||
| 
						 | 
				
			
			@ -47,7 +47,7 @@ ENTRY(__raw_writesl)
 | 
			
		|||
		orr	ip, ip, r3, lspush #16
 | 
			
		||||
		str	ip, [r0]
 | 
			
		||||
		bne	4b
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
 | 
			
		||||
5:		mov	ip, r3, lspull #8
 | 
			
		||||
		ldr	r3, [r1], #4
 | 
			
		||||
| 
						 | 
				
			
			@ -55,7 +55,7 @@ ENTRY(__raw_writesl)
 | 
			
		|||
		orr	ip, ip, r3, lspush #24
 | 
			
		||||
		str	ip, [r0]
 | 
			
		||||
		bne	5b
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
 | 
			
		||||
6:		mov	ip, r3, lspull #24
 | 
			
		||||
		ldr	r3, [r1], #4
 | 
			
		||||
| 
						 | 
				
			
			@ -63,5 +63,5 @@ ENTRY(__raw_writesl)
 | 
			
		|||
		orr	ip, ip, r3, lspush #8
 | 
			
		||||
		str	ip, [r0]
 | 
			
		||||
		bne	6b
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
ENDPROC(__raw_writesl)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,11 +28,11 @@
 | 
			
		|||
		orr	r3, r3, r3, lsl #16
 | 
			
		||||
		str	r3, [r0]
 | 
			
		||||
		subs	r2, r2, #1
 | 
			
		||||
		moveq	pc, lr
 | 
			
		||||
		reteq	lr
 | 
			
		||||
 | 
			
		||||
ENTRY(__raw_writesw)
 | 
			
		||||
		teq	r2, #0		@ do we have to check for the zero len?
 | 
			
		||||
		moveq	pc, lr
 | 
			
		||||
		reteq	lr
 | 
			
		||||
		tst	r1, #3
 | 
			
		||||
		bne	.Loutsw_align
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,7 +31,7 @@
 | 
			
		|||
 | 
			
		||||
ENTRY(__raw_writesw)
 | 
			
		||||
		teq	r2, #0
 | 
			
		||||
		moveq	pc, lr
 | 
			
		||||
		reteq	lr
 | 
			
		||||
		ands	r3, r1, #3
 | 
			
		||||
		bne	.Loutsw_align
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -96,5 +96,5 @@ ENTRY(__raw_writesw)
 | 
			
		|||
		tst	r2, #1
 | 
			
		||||
3:		movne	ip, r3, lsr #8
 | 
			
		||||
		strneh	ip, [r0]
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
ENDPROC(__raw_writesw)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -210,7 +210,7 @@ ENTRY(__aeabi_uidiv)
 | 
			
		|||
UNWIND(.fnstart)
 | 
			
		||||
 | 
			
		||||
	subs	r2, r1, #1
 | 
			
		||||
	moveq	pc, lr
 | 
			
		||||
	reteq	lr
 | 
			
		||||
	bcc	Ldiv0
 | 
			
		||||
	cmp	r0, r1
 | 
			
		||||
	bls	11f
 | 
			
		||||
| 
						 | 
				
			
			@ -220,16 +220,16 @@ UNWIND(.fnstart)
 | 
			
		|||
	ARM_DIV_BODY r0, r1, r2, r3
 | 
			
		||||
 | 
			
		||||
	mov	r0, r2
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
11:	moveq	r0, #1
 | 
			
		||||
	movne	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
12:	ARM_DIV2_ORDER r1, r2
 | 
			
		||||
 | 
			
		||||
	mov	r0, r0, lsr r2
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
UNWIND(.fnend)
 | 
			
		||||
ENDPROC(__udivsi3)
 | 
			
		||||
| 
						 | 
				
			
			@ -244,11 +244,11 @@ UNWIND(.fnstart)
 | 
			
		|||
	moveq   r0, #0
 | 
			
		||||
	tsthi	r1, r2				@ see if divisor is power of 2
 | 
			
		||||
	andeq	r0, r0, r2
 | 
			
		||||
	movls	pc, lr
 | 
			
		||||
	retls	lr
 | 
			
		||||
 | 
			
		||||
	ARM_MOD_BODY r0, r1, r2, r3
 | 
			
		||||
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
UNWIND(.fnend)
 | 
			
		||||
ENDPROC(__umodsi3)
 | 
			
		||||
| 
						 | 
				
			
			@ -274,23 +274,23 @@ UNWIND(.fnstart)
 | 
			
		|||
 | 
			
		||||
	cmp	ip, #0
 | 
			
		||||
	rsbmi	r0, r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
10:	teq	ip, r0				@ same sign ?
 | 
			
		||||
	rsbmi	r0, r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
11:	movlo	r0, #0
 | 
			
		||||
	moveq	r0, ip, asr #31
 | 
			
		||||
	orreq	r0, r0, #1
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
12:	ARM_DIV2_ORDER r1, r2
 | 
			
		||||
 | 
			
		||||
	cmp	ip, #0
 | 
			
		||||
	mov	r0, r3, lsr r2
 | 
			
		||||
	rsbmi	r0, r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
UNWIND(.fnend)
 | 
			
		||||
ENDPROC(__divsi3)
 | 
			
		||||
| 
						 | 
				
			
			@ -315,7 +315,7 @@ UNWIND(.fnstart)
 | 
			
		|||
 | 
			
		||||
10:	cmp	ip, #0
 | 
			
		||||
	rsbmi	r0, r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
UNWIND(.fnend)
 | 
			
		||||
ENDPROC(__modsi3)
 | 
			
		||||
| 
						 | 
				
			
			@ -331,7 +331,7 @@ UNWIND(.save {r0, r1, ip, lr}	)
 | 
			
		|||
	ldmfd	sp!, {r1, r2, ip, lr}
 | 
			
		||||
	mul	r3, r0, r2
 | 
			
		||||
	sub	r1, r1, r3
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
UNWIND(.fnend)
 | 
			
		||||
ENDPROC(__aeabi_uidivmod)
 | 
			
		||||
| 
						 | 
				
			
			@ -344,7 +344,7 @@ UNWIND(.save {r0, r1, ip, lr}	)
 | 
			
		|||
	ldmfd	sp!, {r1, r2, ip, lr}
 | 
			
		||||
	mul	r3, r0, r2
 | 
			
		||||
	sub	r1, r1, r3
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
UNWIND(.fnend)
 | 
			
		||||
ENDPROC(__aeabi_idivmod)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,6 +27,7 @@ Boston, MA 02110-1301, USA.  */
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
 | 
			
		||||
#ifdef __ARMEB__
 | 
			
		||||
#define al r1
 | 
			
		||||
| 
						 | 
				
			
			@ -47,7 +48,7 @@ ENTRY(__aeabi_llsr)
 | 
			
		|||
 THUMB(	lslmi	r3, ah, ip		)
 | 
			
		||||
 THUMB(	orrmi	al, al, r3		)
 | 
			
		||||
	mov	ah, ah, lsr r2
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
ENDPROC(__lshrdi3)
 | 
			
		||||
ENDPROC(__aeabi_llsr)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,5 +22,5 @@ ENTRY(memchr)
 | 
			
		|||
	bne	1b
 | 
			
		||||
	sub	r0, r0, #1
 | 
			
		||||
2:	movne	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(memchr)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -110,7 +110,7 @@ ENTRY(memset)
 | 
			
		|||
	strneb	r1, [ip], #1
 | 
			
		||||
	tst	r2, #1
 | 
			
		||||
	strneb	r1, [ip], #1
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
6:	subs	r2, r2, #4		@ 1 do we have enough
 | 
			
		||||
	blt	5b			@ 1 bytes to align with?
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -121,5 +121,5 @@ ENTRY(__memzero)
 | 
			
		|||
	strneb	r2, [r0], #1		@ 1
 | 
			
		||||
	tst	r1, #1			@ 1 a byte left over
 | 
			
		||||
	strneb	r2, [r0], #1		@ 1
 | 
			
		||||
	mov	pc, lr			@ 1
 | 
			
		||||
	ret	lr			@ 1
 | 
			
		||||
ENDPROC(__memzero)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,6 +11,7 @@
 | 
			
		|||
 */
 | 
			
		||||
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
 | 
			
		||||
#ifdef __ARMEB__
 | 
			
		||||
#define xh r0
 | 
			
		||||
| 
						 | 
				
			
			@ -41,7 +42,7 @@ ENTRY(__aeabi_lmul)
 | 
			
		|||
	adc	xh, xh, yh, lsr #16
 | 
			
		||||
	adds	xl, xl, ip, lsl #16
 | 
			
		||||
	adc	xh, xh, ip, lsr #16
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
ENDPROC(__muldi3)
 | 
			
		||||
ENDPROC(__aeabi_lmul)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,7 +36,7 @@ ENTRY(__put_user_1)
 | 
			
		|||
	check_uaccess r0, 1, r1, ip, __put_user_bad
 | 
			
		||||
1: TUSER(strb)	r2, [r0]
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(__put_user_1)
 | 
			
		||||
 | 
			
		||||
ENTRY(__put_user_2)
 | 
			
		||||
| 
						 | 
				
			
			@ -60,14 +60,14 @@ ENTRY(__put_user_2)
 | 
			
		|||
#endif
 | 
			
		||||
#endif	/* CONFIG_THUMB2_KERNEL */
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(__put_user_2)
 | 
			
		||||
 | 
			
		||||
ENTRY(__put_user_4)
 | 
			
		||||
	check_uaccess r0, 4, r1, ip, __put_user_bad
 | 
			
		||||
4: TUSER(str)	r2, [r0]
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(__put_user_4)
 | 
			
		||||
 | 
			
		||||
ENTRY(__put_user_8)
 | 
			
		||||
| 
						 | 
				
			
			@ -80,12 +80,12 @@ ENTRY(__put_user_8)
 | 
			
		|||
6: TUSER(str)	r3, [r0]
 | 
			
		||||
#endif
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(__put_user_8)
 | 
			
		||||
 | 
			
		||||
__put_user_bad:
 | 
			
		||||
	mov	r0, #-EFAULT
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(__put_user_bad)
 | 
			
		||||
 | 
			
		||||
.pushsection __ex_table, "a"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,5 +23,5 @@ ENTRY(strchr)
 | 
			
		|||
		teq	r2, r1
 | 
			
		||||
		movne	r0, #0
 | 
			
		||||
		subeq	r0, r0, #1
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
ENDPROC(strchr)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,5 +22,5 @@ ENTRY(strrchr)
 | 
			
		|||
		teq	r2, #0
 | 
			
		||||
		bne	1b
 | 
			
		||||
		mov	r0, r3
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
ENDPROC(strrchr)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,6 +11,7 @@
 | 
			
		|||
 */
 | 
			
		||||
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
 | 
			
		||||
#ifdef __ARMEB__
 | 
			
		||||
#define xh r0
 | 
			
		||||
| 
						 | 
				
			
			@ -31,7 +32,7 @@ ENTRY(__ucmpdi2)
 | 
			
		|||
	movlo	r0, #0
 | 
			
		||||
	moveq	r0, #1
 | 
			
		||||
	movhi	r0, #2
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
ENDPROC(__ucmpdi2)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +45,7 @@ ENTRY(__aeabi_ulcmp)
 | 
			
		|||
	movlo	r0, #-1
 | 
			
		||||
	moveq	r0, #0
 | 
			
		||||
	movhi	r0, #1
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
ENDPROC(__aeabi_ulcmp)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -213,7 +213,7 @@ ddr2clk_stop_done:
 | 
			
		|||
	cmp	ip, r0
 | 
			
		||||
	bne	ddr2clk_stop_done
 | 
			
		||||
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(davinci_ddr_psc_config)
 | 
			
		||||
 | 
			
		||||
CACHE_FLUSH:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -198,7 +198,7 @@ crunch_load:
 | 
			
		|||
	get_thread_info r10
 | 
			
		||||
#endif
 | 
			
		||||
2:	dec_preempt_count r10, r3
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Back up crunch regs to save area and disable access to them
 | 
			
		||||
| 
						 | 
				
			
			@ -277,7 +277,7 @@ ENTRY(crunch_task_copy)
 | 
			
		|||
	mov	r3, lr				@ preserve return address
 | 
			
		||||
	bl	crunch_save
 | 
			
		||||
	msr	cpsr_c, ip			@ restore interrupt mode
 | 
			
		||||
	mov	pc, r3
 | 
			
		||||
	ret	r3
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Restore crunch state from given memory address
 | 
			
		||||
| 
						 | 
				
			
			@ -310,4 +310,4 @@ ENTRY(crunch_task_restore)
 | 
			
		|||
	mov	r3, lr				@ preserve return address
 | 
			
		||||
	bl	crunch_load
 | 
			
		||||
	msr	cpsr_c, ip			@ restore interrupt mode
 | 
			
		||||
	mov	pc, r3
 | 
			
		||||
	ret	r3
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,6 +10,7 @@
 | 
			
		|||
 */
 | 
			
		||||
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
#include <asm/asm-offsets.h>
 | 
			
		||||
#include <asm/hardware/cache-l2x0.h>
 | 
			
		||||
#include "hardware.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -301,7 +302,7 @@ rbc_loop:
 | 
			
		|||
	resume_mmdc
 | 
			
		||||
 | 
			
		||||
	/* return to suspend finish */
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
resume:
 | 
			
		||||
	/* invalidate L1 I-cache first */
 | 
			
		||||
| 
						 | 
				
			
			@ -325,7 +326,7 @@ resume:
 | 
			
		|||
	mov	r5, #0x1
 | 
			
		||||
	resume_mmdc
 | 
			
		||||
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(imx6_suspend)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -46,7 +46,7 @@ ENTRY(ll_get_coherency_base)
 | 
			
		|||
	ldr	r1, =coherency_base
 | 
			
		||||
	ldr	r1, [r1]
 | 
			
		||||
2:
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(ll_get_coherency_base)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -63,7 +63,7 @@ ENTRY(ll_get_coherency_cpumask)
 | 
			
		|||
	mov	r2, #(1 << 24)
 | 
			
		||||
	lsl	r3, r2, r3
 | 
			
		||||
ARM_BE8(rev	r3, r3)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(ll_get_coherency_cpumask)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -94,7 +94,7 @@ ENTRY(ll_add_cpu_to_smp_group)
 | 
			
		|||
	strex	r1, r2, [r0]
 | 
			
		||||
	cmp	r1, #0
 | 
			
		||||
	bne	1b
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(ll_add_cpu_to_smp_group)
 | 
			
		||||
 | 
			
		||||
ENTRY(ll_enable_coherency)
 | 
			
		||||
| 
						 | 
				
			
			@ -118,7 +118,7 @@ ENTRY(ll_enable_coherency)
 | 
			
		|||
	bne	1b
 | 
			
		||||
	dsb
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(ll_enable_coherency)
 | 
			
		||||
 | 
			
		||||
ENTRY(ll_disable_coherency)
 | 
			
		||||
| 
						 | 
				
			
			@ -141,7 +141,7 @@ ENTRY(ll_disable_coherency)
 | 
			
		|||
	cmp	r1, #0
 | 
			
		||||
	bne	1b
 | 
			
		||||
	dsb
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(ll_disable_coherency)
 | 
			
		||||
 | 
			
		||||
	.align 2
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,7 @@
 | 
			
		|||
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <linux/init.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
 | 
			
		||||
	__CPUINIT
 | 
			
		||||
#define CPU_RESUME_ADDR_REG 0xf10182d4
 | 
			
		||||
| 
						 | 
				
			
			@ -24,7 +25,7 @@
 | 
			
		|||
armada_375_smp_cpu1_enable_code_start:
 | 
			
		||||
	ldr     r0, [pc, #4]
 | 
			
		||||
	ldr     r1, [r0]
 | 
			
		||||
	mov     pc, r1
 | 
			
		||||
	ret     r1
 | 
			
		||||
	.word   CPU_RESUME_ADDR_REG
 | 
			
		||||
armada_375_smp_cpu1_enable_code_end:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,6 +10,7 @@
 | 
			
		|||
 */
 | 
			
		||||
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
#include <asm/smp_scu.h>
 | 
			
		||||
#include <asm/memory.h>
 | 
			
		||||
#include <asm/hardware/cache-l2x0.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -334,7 +335,7 @@ ENDPROC(omap4_cpu_resume)
 | 
			
		|||
 | 
			
		||||
#ifndef CONFIG_OMAP4_ERRATA_I688
 | 
			
		||||
ENTRY(omap_bus_sync)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(omap_bus_sync)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -101,7 +101,7 @@ i_dll_wait:
 | 
			
		|||
i_dll_delay:
 | 
			
		||||
	subs	r4, r4, #0x1
 | 
			
		||||
	bne	i_dll_delay
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * shift up or down voltage, use R9 as input to tell level.
 | 
			
		||||
| 
						 | 
				
			
			@ -125,7 +125,7 @@ volt_delay:
 | 
			
		|||
	ldr	r7, [r3]		@ get timer value
 | 
			
		||||
	cmp	r5, r7			@ time up?
 | 
			
		||||
	bhi	volt_delay		@ not yet->branch
 | 
			
		||||
	mov	pc, lr			@ back to caller.
 | 
			
		||||
	ret	lr			@ back to caller.
 | 
			
		||||
 | 
			
		||||
omap242x_sdi_cm_clksel2_pll:
 | 
			
		||||
	.word OMAP2420_CM_REGADDR(PLL_MOD, CM_CLKSEL2)
 | 
			
		||||
| 
						 | 
				
			
			@ -220,7 +220,7 @@ volt_delay_c:
 | 
			
		|||
	ldr	r7, [r10]		@ get timer value
 | 
			
		||||
	cmp	r8, r7			@ time up?
 | 
			
		||||
	bhi	volt_delay_c		@ not yet->branch
 | 
			
		||||
	mov	pc, lr			@ back to caller
 | 
			
		||||
	ret	lr			@ back to caller
 | 
			
		||||
 | 
			
		||||
omap242x_srs_cm_clksel2_pll:
 | 
			
		||||
	.word OMAP2420_CM_REGADDR(PLL_MOD, CM_CLKSEL2)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -101,7 +101,7 @@ i_dll_wait:
 | 
			
		|||
i_dll_delay:
 | 
			
		||||
	subs	r4, r4, #0x1
 | 
			
		||||
	bne	i_dll_delay
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * shift up or down voltage, use R9 as input to tell level.
 | 
			
		||||
| 
						 | 
				
			
			@ -125,7 +125,7 @@ volt_delay:
 | 
			
		|||
	ldr	r7, [r3]		@ get timer value
 | 
			
		||||
	cmp	r5, r7			@ time up?
 | 
			
		||||
	bhi	volt_delay		@ not yet->branch
 | 
			
		||||
	mov	pc, lr			@ back to caller.
 | 
			
		||||
	ret	lr			@ back to caller.
 | 
			
		||||
 | 
			
		||||
omap243x_sdi_cm_clksel2_pll:
 | 
			
		||||
	.word OMAP2430_CM_REGADDR(PLL_MOD, CM_CLKSEL2)
 | 
			
		||||
| 
						 | 
				
			
			@ -220,7 +220,7 @@ volt_delay_c:
 | 
			
		|||
	ldr	r7, [r10]		@ get timer value
 | 
			
		||||
	cmp	r8, r7			@ time up?
 | 
			
		||||
	bhi	volt_delay_c		@ not yet->branch
 | 
			
		||||
	mov	pc, lr			@ back to caller
 | 
			
		||||
	ret	lr			@ back to caller
 | 
			
		||||
 | 
			
		||||
omap243x_srs_cm_clksel2_pll:
 | 
			
		||||
	.word OMAP2430_CM_REGADDR(PLL_MOD, CM_CLKSEL2)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,7 +29,7 @@ ENTRY(mioa701_jumpaddr)
 | 
			
		|||
	str	r1, [r0]		@ Early disable resume for next boot
 | 
			
		||||
	ldr	r0, mioa701_jumpaddr	@ (Murphy's Law)
 | 
			
		||||
	ldr	r0, [r0]
 | 
			
		||||
	mov	pc, r0
 | 
			
		||||
	ret	r0
 | 
			
		||||
2:
 | 
			
		||||
 | 
			
		||||
ENTRY(mioa701_bootstrap_lg)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,7 +29,7 @@ ENTRY(pxa_cpu_standby)
 | 
			
		|||
	.align	5
 | 
			
		||||
1:	mcr	p14, 0, r2, c7, c0, 0	@ put the system into Standby
 | 
			
		||||
	str	r1, [r0]		@ make sure PSSR_PH/STS are clear
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -108,7 +108,7 @@ ENTRY(pm_enter_standby_start)
 | 
			
		|||
	bic	r0, r0, #0x20000000
 | 
			
		||||
	str	r0, [r1, #PXA3_DMCIER]
 | 
			
		||||
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENTRY(pm_enter_standby_end)
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -66,4 +66,4 @@ s3c2410_do_sleep:
 | 
			
		|||
	streq	r8, [r5]			@ SDRAM power-down config
 | 
			
		||||
	streq	r9, [r6]			@ CPU sleep
 | 
			
		||||
1:	beq	1b
 | 
			
		||||
	mov	pc, r14
 | 
			
		||||
	ret	lr
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -65,4 +65,4 @@ s3c2412_sleep_enter1:
 | 
			
		|||
	strne	r9, [r3]
 | 
			
		||||
	bne	s3c2412_sleep_enter1
 | 
			
		||||
 | 
			
		||||
	mov	pc, r14
 | 
			
		||||
	ret	lr
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,6 +12,7 @@
 | 
			
		|||
 */
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <linux/init.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
#include <asm/memory.h>
 | 
			
		||||
 | 
			
		||||
ENTRY(shmobile_invalidate_start)
 | 
			
		||||
| 
						 | 
				
			
			@ -75,7 +76,7 @@ shmobile_smp_boot_next:
 | 
			
		|||
 | 
			
		||||
shmobile_smp_boot_found:
 | 
			
		||||
	ldr	r0, [r7, r1, lsl #2]
 | 
			
		||||
	mov	pc, r9
 | 
			
		||||
	ret	r9
 | 
			
		||||
ENDPROC(shmobile_smp_boot)
 | 
			
		||||
 | 
			
		||||
ENTRY(shmobile_smp_sleep)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -78,7 +78,7 @@ ENTRY(tegra20_hotplug_shutdown)
 | 
			
		|||
	/* Put this CPU down */
 | 
			
		||||
	cpu_id	r0
 | 
			
		||||
	bl	tegra20_cpu_shutdown
 | 
			
		||||
	mov	pc, lr			@ should never get here
 | 
			
		||||
	ret	lr			@ should never get here
 | 
			
		||||
ENDPROC(tegra20_hotplug_shutdown)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -96,7 +96,7 @@ ENDPROC(tegra20_hotplug_shutdown)
 | 
			
		|||
 */
 | 
			
		||||
ENTRY(tegra20_cpu_shutdown)
 | 
			
		||||
	cmp	r0, #0
 | 
			
		||||
	moveq	pc, lr			@ must not be called for CPU 0
 | 
			
		||||
	reteq	lr			@ must not be called for CPU 0
 | 
			
		||||
	mov32	r1, TEGRA_PMC_VIRT + PMC_SCRATCH41
 | 
			
		||||
	mov	r12, #CPU_RESETTABLE
 | 
			
		||||
	str	r12, [r1]
 | 
			
		||||
| 
						 | 
				
			
			@ -117,7 +117,7 @@ ENTRY(tegra20_cpu_shutdown)
 | 
			
		|||
	cpu_id	r3
 | 
			
		||||
	cmp	r3, r0
 | 
			
		||||
	beq	.
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(tegra20_cpu_shutdown)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -164,7 +164,7 @@ ENTRY(tegra_pen_lock)
 | 
			
		|||
	cmpeq	r12, r0			@ !turn == cpu?
 | 
			
		||||
	beq	1b			@ while !turn == cpu && flag[!cpu] == 1
 | 
			
		||||
 | 
			
		||||
	mov	pc, lr			@ locked
 | 
			
		||||
	ret	lr			@ locked
 | 
			
		||||
ENDPROC(tegra_pen_lock)
 | 
			
		||||
 | 
			
		||||
ENTRY(tegra_pen_unlock)
 | 
			
		||||
| 
						 | 
				
			
			@ -176,7 +176,7 @@ ENTRY(tegra_pen_unlock)
 | 
			
		|||
	addne	r2, r3, #PMC_SCRATCH39
 | 
			
		||||
	mov	r12, #0
 | 
			
		||||
	str	r12, [r2]
 | 
			
		||||
	mov     pc, lr
 | 
			
		||||
	ret     lr
 | 
			
		||||
ENDPROC(tegra_pen_unlock)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -189,7 +189,7 @@ ENTRY(tegra20_cpu_clear_resettable)
 | 
			
		|||
	mov32	r1, TEGRA_PMC_VIRT + PMC_SCRATCH41
 | 
			
		||||
	mov	r12, #CPU_NOT_RESETTABLE
 | 
			
		||||
	str	r12, [r1]
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(tegra20_cpu_clear_resettable)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -202,7 +202,7 @@ ENTRY(tegra20_cpu_set_resettable_soon)
 | 
			
		|||
	mov32	r1, TEGRA_PMC_VIRT + PMC_SCRATCH41
 | 
			
		||||
	mov	r12, #CPU_RESETTABLE_SOON
 | 
			
		||||
	str	r12, [r1]
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(tegra20_cpu_set_resettable_soon)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -217,7 +217,7 @@ ENTRY(tegra20_cpu_is_resettable_soon)
 | 
			
		|||
	cmp	r12, #CPU_RESETTABLE_SOON
 | 
			
		||||
	moveq	r0, #1
 | 
			
		||||
	movne	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(tegra20_cpu_is_resettable_soon)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -239,7 +239,7 @@ ENTRY(tegra20_sleep_core_finish)
 | 
			
		|||
	mov32	r1, TEGRA_IRAM_LPx_RESUME_AREA
 | 
			
		||||
	add	r0, r0, r1
 | 
			
		||||
 | 
			
		||||
	mov	pc, r3
 | 
			
		||||
	ret	r3
 | 
			
		||||
ENDPROC(tegra20_sleep_core_finish)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -402,7 +402,7 @@ exit_selfrefresh_loop:
 | 
			
		|||
 | 
			
		||||
	mov32	r0, TEGRA_PMC_BASE
 | 
			
		||||
	ldr	r0, [r0, #PMC_SCRATCH41]
 | 
			
		||||
	mov	pc, r0			@ jump to tegra_resume
 | 
			
		||||
	ret	r0			@ jump to tegra_resume
 | 
			
		||||
ENDPROC(tegra20_lp1_reset)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -455,7 +455,7 @@ tegra20_switch_cpu_to_clk32k:
 | 
			
		|||
	mov	r0, #0	/* brust policy = 32KHz */
 | 
			
		||||
	str	r0, [r5, #CLK_RESET_SCLK_BURST]
 | 
			
		||||
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * tegra20_enter_sleep
 | 
			
		||||
| 
						 | 
				
			
			@ -535,7 +535,7 @@ padsave_done:
 | 
			
		|||
	adr	r2, tegra20_sclk_save
 | 
			
		||||
	str	r0, [r2]
 | 
			
		||||
	dsb
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
tegra20_sdram_pad_address:
 | 
			
		||||
	.word	TEGRA_APB_MISC_BASE + APB_MISC_XM2CFGCPADCTRL
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -142,7 +142,7 @@ ENTRY(tegra30_hotplug_shutdown)
 | 
			
		|||
	/* Powergate this CPU */
 | 
			
		||||
	mov	r0, #TEGRA30_POWER_HOTPLUG_SHUTDOWN
 | 
			
		||||
	bl	tegra30_cpu_shutdown
 | 
			
		||||
	mov	pc, lr			@ should never get here
 | 
			
		||||
	ret	lr			@ should never get here
 | 
			
		||||
ENDPROC(tegra30_hotplug_shutdown)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -161,7 +161,7 @@ ENTRY(tegra30_cpu_shutdown)
 | 
			
		|||
	bne	_no_cpu0_chk	@ It's not Tegra30
 | 
			
		||||
 | 
			
		||||
	cmp	r3, #0
 | 
			
		||||
	moveq	pc, lr		@ Must never be called for CPU 0
 | 
			
		||||
	reteq	lr		@ Must never be called for CPU 0
 | 
			
		||||
_no_cpu0_chk:
 | 
			
		||||
 | 
			
		||||
	ldr	r12, =TEGRA_FLOW_CTRL_VIRT
 | 
			
		||||
| 
						 | 
				
			
			@ -266,7 +266,7 @@ ENTRY(tegra30_sleep_core_finish)
 | 
			
		|||
	mov32	r1, TEGRA_IRAM_LPx_RESUME_AREA
 | 
			
		||||
	add	r0, r0, r1
 | 
			
		||||
 | 
			
		||||
	mov	pc, r3
 | 
			
		||||
	ret	r3
 | 
			
		||||
ENDPROC(tegra30_sleep_core_finish)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -285,7 +285,7 @@ ENTRY(tegra30_sleep_cpu_secondary_finish)
 | 
			
		|||
	mov	r0, #0                          @ power mode flags (!hotplug)
 | 
			
		||||
	bl	tegra30_cpu_shutdown
 | 
			
		||||
	mov	r0, #1                          @ never return here
 | 
			
		||||
	mov	pc, r7
 | 
			
		||||
	ret	r7
 | 
			
		||||
ENDPROC(tegra30_sleep_cpu_secondary_finish)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -529,7 +529,7 @@ __no_dual_emc_chanl:
 | 
			
		|||
 | 
			
		||||
	mov32	r0, TEGRA_PMC_BASE
 | 
			
		||||
	ldr	r0, [r0, #PMC_SCRATCH41]
 | 
			
		||||
	mov	pc, r0			@ jump to tegra_resume
 | 
			
		||||
	ret	r0			@ jump to tegra_resume
 | 
			
		||||
ENDPROC(tegra30_lp1_reset)
 | 
			
		||||
 | 
			
		||||
	.align	L1_CACHE_SHIFT
 | 
			
		||||
| 
						 | 
				
			
			@ -659,7 +659,7 @@ _no_pll_in_iddq:
 | 
			
		|||
	mov	r0, #0	/* brust policy = 32KHz */
 | 
			
		||||
	str	r0, [r5, #CLK_RESET_SCLK_BURST]
 | 
			
		||||
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * tegra30_enter_sleep
 | 
			
		||||
| 
						 | 
				
			
			@ -819,7 +819,7 @@ pmc_io_dpd_skip:
 | 
			
		|||
 | 
			
		||||
	dsb
 | 
			
		||||
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	.ltorg
 | 
			
		||||
/* dummy symbol for end of IRAM */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -87,7 +87,7 @@ ENTRY(tegra_init_l2_for_a15)
 | 
			
		|||
	mcrne	p15, 0x1, r0, c9, c0, 2
 | 
			
		||||
_exit_init_l2_a15:
 | 
			
		||||
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(tegra_init_l2_for_a15)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -111,7 +111,7 @@ ENTRY(tegra_sleep_cpu_finish)
 | 
			
		|||
	add	r3, r3, r0
 | 
			
		||||
	mov	r0, r1
 | 
			
		||||
 | 
			
		||||
	mov	pc, r3
 | 
			
		||||
	ret	r3
 | 
			
		||||
ENDPROC(tegra_sleep_cpu_finish)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -139,7 +139,7 @@ ENTRY(tegra_shut_off_mmu)
 | 
			
		|||
	moveq	r3, #0
 | 
			
		||||
	streq	r3, [r2, #L2X0_CTRL]
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, r0
 | 
			
		||||
	ret	r0
 | 
			
		||||
ENDPROC(tegra_shut_off_mmu)
 | 
			
		||||
	.popsection
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -156,6 +156,6 @@ ENTRY(tegra_switch_cpu_to_pllp)
 | 
			
		|||
	str	r0, [r5, #CLK_RESET_CCLK_BURST]
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	str	r0, [r5, #CLK_RESET_CCLK_DIVIDER]
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(tegra_switch_cpu_to_pllp)
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,6 +15,7 @@
 | 
			
		|||
 */
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <linux/init.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
#include <asm/memory.h>
 | 
			
		||||
#include <asm/page.h>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -45,7 +46,7 @@
 | 
			
		|||
ENTRY(fa_flush_icache_all)
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(fa_flush_icache_all)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -71,7 +72,7 @@ __flush_whole_cache:
 | 
			
		|||
	mcrne	p15, 0, ip, c7, c5, 6		@ invalidate BTB
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain write buffer
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c5, 4		@ prefetch flush
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_user_cache_range(start, end, flags)
 | 
			
		||||
| 
						 | 
				
			
			@ -99,7 +100,7 @@ ENTRY(fa_flush_user_cache_range)
 | 
			
		|||
	mcrne	p15, 0, ip, c7, c5, 6		@ invalidate BTB
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ data write barrier
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c5, 4		@ prefetch flush
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	coherent_kern_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -135,7 +136,7 @@ ENTRY(fa_coherent_user_range)
 | 
			
		|||
	mcr	p15, 0, r0, c7, c5, 6		@ invalidate BTB
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain write buffer
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 4		@ prefetch flush
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_kern_dcache_area(void *addr, size_t size)
 | 
			
		||||
| 
						 | 
				
			
			@ -155,7 +156,7 @@ ENTRY(fa_flush_kern_dcache_area)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain write buffer
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_inv_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -181,7 +182,7 @@ fa_dma_inv_range:
 | 
			
		|||
	blo	1b
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain write buffer
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_clean_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -199,7 +200,7 @@ fa_dma_clean_range:
 | 
			
		|||
	blo	1b
 | 
			
		||||
	mov	r0, #0	
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain write buffer
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_flush_range(start,end)
 | 
			
		||||
| 
						 | 
				
			
			@ -214,7 +215,7 @@ ENTRY(fa_dma_flush_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
	mov	r0, #0	
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain write buffer
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_map_area(start, size, dir)
 | 
			
		||||
| 
						 | 
				
			
			@ -237,7 +238,7 @@ ENDPROC(fa_dma_map_area)
 | 
			
		|||
 *	- dir	- DMA direction
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(fa_dma_unmap_area)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(fa_dma_unmap_area)
 | 
			
		||||
 | 
			
		||||
	.globl	fa_flush_kern_cache_louis
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,11 +5,12 @@
 | 
			
		|||
 */
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <linux/init.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
 | 
			
		||||
#include "proc-macros.S"
 | 
			
		||||
 | 
			
		||||
ENTRY(nop_flush_icache_all)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(nop_flush_icache_all)
 | 
			
		||||
 | 
			
		||||
	.globl nop_flush_kern_cache_all
 | 
			
		||||
| 
						 | 
				
			
			@ -29,7 +30,7 @@ ENDPROC(nop_flush_icache_all)
 | 
			
		|||
 | 
			
		||||
ENTRY(nop_coherent_user_range)
 | 
			
		||||
	mov	r0, 0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(nop_coherent_user_range)
 | 
			
		||||
 | 
			
		||||
	.globl nop_flush_kern_dcache_area
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,6 +9,7 @@
 | 
			
		|||
 */
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <linux/init.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
#include <asm/page.h>
 | 
			
		||||
#include "proc-macros.S"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -18,7 +19,7 @@
 | 
			
		|||
 *	Unconditionally clean and invalidate the entire icache.
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(v4_flush_icache_all)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(v4_flush_icache_all)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -40,7 +41,7 @@ ENTRY(v4_flush_kern_cache_all)
 | 
			
		|||
#ifdef CONFIG_CPU_CP15
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c7, 0		@ flush ID cache
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
#else
 | 
			
		||||
	/* FALLTHROUGH */
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -59,7 +60,7 @@ ENTRY(v4_flush_user_cache_range)
 | 
			
		|||
#ifdef CONFIG_CPU_CP15
 | 
			
		||||
	mov	ip, #0
 | 
			
		||||
	mcr	p15, 0, ip, c7, c7, 0		@ flush ID cache
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
#else
 | 
			
		||||
	/* FALLTHROUGH */
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -89,7 +90,7 @@ ENTRY(v4_coherent_kern_range)
 | 
			
		|||
 */
 | 
			
		||||
ENTRY(v4_coherent_user_range)
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_kern_dcache_area(void *addr, size_t size)
 | 
			
		||||
| 
						 | 
				
			
			@ -116,7 +117,7 @@ ENTRY(v4_dma_flush_range)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c7, 0		@ flush ID cache
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_unmap_area(start, size, dir)
 | 
			
		||||
| 
						 | 
				
			
			@ -136,7 +137,7 @@ ENTRY(v4_dma_unmap_area)
 | 
			
		|||
 *	- dir	- DMA direction
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(v4_dma_map_area)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(v4_dma_unmap_area)
 | 
			
		||||
ENDPROC(v4_dma_map_area)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,6 +9,7 @@
 | 
			
		|||
 */
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <linux/init.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
#include <asm/memory.h>
 | 
			
		||||
#include <asm/page.h>
 | 
			
		||||
#include "proc-macros.S"
 | 
			
		||||
| 
						 | 
				
			
			@ -58,7 +59,7 @@ flush_base:
 | 
			
		|||
ENTRY(v4wb_flush_icache_all)
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(v4wb_flush_icache_all)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -94,7 +95,7 @@ __flush_whole_cache:
 | 
			
		|||
	blo	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain write buffer
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_user_cache_range(start, end, flags)
 | 
			
		||||
| 
						 | 
				
			
			@ -122,7 +123,7 @@ ENTRY(v4wb_flush_user_cache_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
	tst	r2, #VM_EXEC
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain write buffer
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_kern_dcache_area(void *addr, size_t size)
 | 
			
		||||
| 
						 | 
				
			
			@ -170,7 +171,7 @@ ENTRY(v4wb_coherent_user_range)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -195,7 +196,7 @@ v4wb_dma_inv_range:
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain write buffer
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_clean_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -212,7 +213,7 @@ v4wb_dma_clean_range:
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain write buffer
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_flush_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -248,7 +249,7 @@ ENDPROC(v4wb_dma_map_area)
 | 
			
		|||
 *	- dir	- DMA direction
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(v4wb_dma_unmap_area)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(v4wb_dma_unmap_area)
 | 
			
		||||
 | 
			
		||||
	.globl	v4wb_flush_kern_cache_louis
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,6 +13,7 @@
 | 
			
		|||
 */
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <linux/init.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
#include <asm/page.h>
 | 
			
		||||
#include "proc-macros.S"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -48,7 +49,7 @@
 | 
			
		|||
ENTRY(v4wt_flush_icache_all)
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(v4wt_flush_icache_all)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -71,7 +72,7 @@ __flush_whole_cache:
 | 
			
		|||
	tst	r2, #VM_EXEC
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mcr	p15, 0, ip, c7, c6, 0		@ invalidate D cache
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_user_cache_range(start, end, flags)
 | 
			
		||||
| 
						 | 
				
			
			@ -94,7 +95,7 @@ ENTRY(v4wt_flush_user_cache_range)
 | 
			
		|||
	add	r0, r0, #CACHE_DLINESIZE
 | 
			
		||||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	coherent_kern_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -126,7 +127,7 @@ ENTRY(v4wt_coherent_user_range)
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_kern_dcache_area(void *addr, size_t size)
 | 
			
		||||
| 
						 | 
				
			
			@ -160,7 +161,7 @@ v4wt_dma_inv_range:
 | 
			
		|||
	add	r0, r0, #CACHE_DLINESIZE
 | 
			
		||||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_flush_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -192,7 +193,7 @@ ENTRY(v4wt_dma_unmap_area)
 | 
			
		|||
 *	- dir	- DMA direction
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(v4wt_dma_map_area)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(v4wt_dma_unmap_area)
 | 
			
		||||
ENDPROC(v4wt_dma_map_area)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -51,7 +51,7 @@ ENTRY(v6_flush_icache_all)
 | 
			
		|||
#else
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I-cache
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(v6_flush_icache_all)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -73,7 +73,7 @@ ENTRY(v6_flush_kern_cache_all)
 | 
			
		|||
#else
 | 
			
		||||
	mcr	p15, 0, r0, c7, c15, 0		@ Cache clean+invalidate
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	v6_flush_cache_all()
 | 
			
		||||
| 
						 | 
				
			
			@ -98,7 +98,7 @@ ENTRY(v6_flush_user_cache_all)
 | 
			
		|||
 *	- we have a VIPT cache.
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(v6_flush_user_cache_range)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	v6_coherent_kern_range(start,end)
 | 
			
		||||
| 
						 | 
				
			
			@ -150,7 +150,7 @@ ENTRY(v6_coherent_user_range)
 | 
			
		|||
#else
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 6		@ invalidate BTB
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Fault handling for the cache operation above. If the virtual address in r0
 | 
			
		||||
| 
						 | 
				
			
			@ -158,7 +158,7 @@ ENTRY(v6_coherent_user_range)
 | 
			
		|||
 */
 | 
			
		||||
9001:
 | 
			
		||||
	mov	r0, #-EFAULT
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 UNWIND(.fnend		)
 | 
			
		||||
ENDPROC(v6_coherent_user_range)
 | 
			
		||||
ENDPROC(v6_coherent_kern_range)
 | 
			
		||||
| 
						 | 
				
			
			@ -188,7 +188,7 @@ ENTRY(v6_flush_kern_dcache_area)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -239,7 +239,7 @@ v6_dma_inv_range:
 | 
			
		|||
	blo	1b
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain write buffer
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	v6_dma_clean_range(start,end)
 | 
			
		||||
| 
						 | 
				
			
			@ -262,7 +262,7 @@ v6_dma_clean_range:
 | 
			
		|||
	blo	1b
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain write buffer
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	v6_dma_flush_range(start,end)
 | 
			
		||||
| 
						 | 
				
			
			@ -290,7 +290,7 @@ ENTRY(v6_dma_flush_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain write buffer
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_map_area(start, size, dir)
 | 
			
		||||
| 
						 | 
				
			
			@ -323,7 +323,7 @@ ENTRY(v6_dma_unmap_area)
 | 
			
		|||
	teq	r2, #DMA_TO_DEVICE
 | 
			
		||||
	bne	v6_dma_inv_range
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(v6_dma_unmap_area)
 | 
			
		||||
 | 
			
		||||
	.globl	v6_flush_kern_cache_louis
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -61,7 +61,7 @@ ENTRY(v7_invalidate_l1)
 | 
			
		|||
       bgt     1b
 | 
			
		||||
       dsb     st
 | 
			
		||||
       isb
 | 
			
		||||
       mov     pc, lr
 | 
			
		||||
       ret     lr
 | 
			
		||||
ENDPROC(v7_invalidate_l1)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -76,7 +76,7 @@ ENTRY(v7_flush_icache_all)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	ALT_SMP(mcr	p15, 0, r0, c7, c1, 0)		@ invalidate I-cache inner shareable
 | 
			
		||||
	ALT_UP(mcr	p15, 0, r0, c7, c5, 0)		@ I+BTB cache invalidate
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(v7_flush_icache_all)
 | 
			
		||||
 | 
			
		||||
 /*
 | 
			
		||||
| 
						 | 
				
			
			@ -94,7 +94,7 @@ ENTRY(v7_flush_dcache_louis)
 | 
			
		|||
	ALT_UP(ands	r3, r0, #(7 << 27))	@ extract LoUU from clidr
 | 
			
		||||
#ifdef CONFIG_ARM_ERRATA_643719
 | 
			
		||||
	ALT_SMP(mrceq	p15, 0, r2, c0, c0, 0)	@ read main ID register
 | 
			
		||||
	ALT_UP(moveq	pc, lr)			@ LoUU is zero, so nothing to do
 | 
			
		||||
	ALT_UP(reteq	lr)			@ LoUU is zero, so nothing to do
 | 
			
		||||
	ldreq	r1, =0x410fc090                 @ ID of ARM Cortex A9 r0p?
 | 
			
		||||
	biceq	r2, r2, #0x0000000f             @ clear minor revision number
 | 
			
		||||
	teqeq	r2, r1                          @ test for errata affected core and if so...
 | 
			
		||||
| 
						 | 
				
			
			@ -102,7 +102,7 @@ ENTRY(v7_flush_dcache_louis)
 | 
			
		|||
#endif
 | 
			
		||||
	ALT_SMP(mov	r3, r3, lsr #20)	@ r3 = LoUIS * 2
 | 
			
		||||
	ALT_UP(mov	r3, r3, lsr #26)	@ r3 = LoUU * 2
 | 
			
		||||
	moveq	pc, lr				@ return if level == 0
 | 
			
		||||
	reteq	lr				@ return if level == 0
 | 
			
		||||
	mov	r10, #0				@ r10 (starting level) = 0
 | 
			
		||||
	b	flush_levels			@ start flushing cache levels
 | 
			
		||||
ENDPROC(v7_flush_dcache_louis)
 | 
			
		||||
| 
						 | 
				
			
			@ -168,7 +168,7 @@ finished:
 | 
			
		|||
	mcr	p15, 2, r10, c0, c0, 0		@ select current cache level in cssr
 | 
			
		||||
	dsb	st
 | 
			
		||||
	isb
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(v7_flush_dcache_all)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -191,7 +191,7 @@ ENTRY(v7_flush_kern_cache_all)
 | 
			
		|||
	ALT_UP(mcr	p15, 0, r0, c7, c5, 0)	@ I+BTB cache invalidate
 | 
			
		||||
 ARM(	ldmfd	sp!, {r4-r5, r7, r9-r11, lr}	)
 | 
			
		||||
 THUMB(	ldmfd	sp!, {r4-r7, r9-r11, lr}	)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(v7_flush_kern_cache_all)
 | 
			
		||||
 | 
			
		||||
 /*
 | 
			
		||||
| 
						 | 
				
			
			@ -209,7 +209,7 @@ ENTRY(v7_flush_kern_cache_louis)
 | 
			
		|||
	ALT_UP(mcr	p15, 0, r0, c7, c5, 0)	@ I+BTB cache invalidate
 | 
			
		||||
 ARM(	ldmfd	sp!, {r4-r5, r7, r9-r11, lr}	)
 | 
			
		||||
 THUMB(	ldmfd	sp!, {r4-r7, r9-r11, lr}	)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(v7_flush_kern_cache_louis)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -235,7 +235,7 @@ ENTRY(v7_flush_user_cache_all)
 | 
			
		|||
 *	- we have a VIPT cache.
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(v7_flush_user_cache_range)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(v7_flush_user_cache_all)
 | 
			
		||||
ENDPROC(v7_flush_user_cache_range)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -296,7 +296,7 @@ ENTRY(v7_coherent_user_range)
 | 
			
		|||
	ALT_UP(mcr	p15, 0, r0, c7, c5, 6)	@ invalidate BTB
 | 
			
		||||
	dsb	ishst
 | 
			
		||||
	isb
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Fault handling for the cache operation above. If the virtual address in r0
 | 
			
		||||
| 
						 | 
				
			
			@ -307,7 +307,7 @@ ENTRY(v7_coherent_user_range)
 | 
			
		|||
	dsb
 | 
			
		||||
#endif
 | 
			
		||||
	mov	r0, #-EFAULT
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 UNWIND(.fnend		)
 | 
			
		||||
ENDPROC(v7_coherent_kern_range)
 | 
			
		||||
ENDPROC(v7_coherent_user_range)
 | 
			
		||||
| 
						 | 
				
			
			@ -336,7 +336,7 @@ ENTRY(v7_flush_kern_dcache_area)
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	dsb	st
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(v7_flush_kern_dcache_area)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -369,7 +369,7 @@ v7_dma_inv_range:
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	dsb	st
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(v7_dma_inv_range)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -391,7 +391,7 @@ v7_dma_clean_range:
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	dsb	st
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(v7_dma_clean_range)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -413,7 +413,7 @@ ENTRY(v7_dma_flush_range)
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	dsb	st
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(v7_dma_flush_range)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -439,7 +439,7 @@ ENTRY(v7_dma_unmap_area)
 | 
			
		|||
	add	r1, r1, r0
 | 
			
		||||
	teq	r2, #DMA_TO_DEVICE
 | 
			
		||||
	bne	v7_dma_inv_range
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(v7_dma_unmap_area)
 | 
			
		||||
 | 
			
		||||
	__INITDATA
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,6 +6,7 @@
 | 
			
		|||
 * This code can only be used to if you are running in the secure world.
 | 
			
		||||
 */
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
#include <asm/hardware/cache-l2x0.h>
 | 
			
		||||
 | 
			
		||||
	.text
 | 
			
		||||
| 
						 | 
				
			
			@ -27,7 +28,7 @@ ENTRY(l2c310_early_resume)
 | 
			
		|||
 | 
			
		||||
	@ Check that the address has been initialised
 | 
			
		||||
	teq	r1, #0
 | 
			
		||||
	moveq	pc, lr
 | 
			
		||||
	reteq	lr
 | 
			
		||||
 | 
			
		||||
	@ The prefetch and power control registers are revision dependent
 | 
			
		||||
	@ and can be written whether or not the L2 cache is enabled
 | 
			
		||||
| 
						 | 
				
			
			@ -41,7 +42,7 @@ ENTRY(l2c310_early_resume)
 | 
			
		|||
	@ Don't setup the L2 cache if it is already enabled
 | 
			
		||||
	ldr	r0, [r1, #L2X0_CTRL]
 | 
			
		||||
	tst	r0, #L2X0_CTRL_EN
 | 
			
		||||
	movne	pc, lr
 | 
			
		||||
	retne	lr
 | 
			
		||||
 | 
			
		||||
	str	r3, [r1, #L310_TAG_LATENCY_CTRL]
 | 
			
		||||
	str	r4, [r1, #L310_DATA_LATENCY_CTRL]
 | 
			
		||||
| 
						 | 
				
			
			@ -51,7 +52,7 @@ ENTRY(l2c310_early_resume)
 | 
			
		|||
	str	r2, [r1, #L2X0_AUX_CTRL]
 | 
			
		||||
	mov	r9, #L2X0_CTRL_EN
 | 
			
		||||
	str	r9, [r1, #L2X0_CTRL]
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(l2c310_early_resume)
 | 
			
		||||
 | 
			
		||||
	.align
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -73,7 +73,7 @@
 | 
			
		|||
 * cpu_arm1020_proc_init()
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(cpu_arm1020_proc_init)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm1020_proc_fin()
 | 
			
		||||
| 
						 | 
				
			
			@ -83,7 +83,7 @@ ENTRY(cpu_arm1020_proc_fin)
 | 
			
		|||
	bic	r0, r0, #0x1000 		@ ...i............
 | 
			
		||||
	bic	r0, r0, #0x000e 		@ ............wca.
 | 
			
		||||
	mcr	p15, 0, r0, c1, c0, 0		@ disable caches
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm1020_reset(loc)
 | 
			
		||||
| 
						 | 
				
			
			@ -107,7 +107,7 @@ ENTRY(cpu_arm1020_reset)
 | 
			
		|||
	bic	ip, ip, #0x000f 		@ ............wcam
 | 
			
		||||
	bic	ip, ip, #0x1100 		@ ...i...s........
 | 
			
		||||
	mcr	p15, 0, ip, c1, c0, 0		@ ctrl register
 | 
			
		||||
	mov	pc, r0
 | 
			
		||||
	ret	r0
 | 
			
		||||
ENDPROC(cpu_arm1020_reset)
 | 
			
		||||
	.popsection
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -117,7 +117,7 @@ ENDPROC(cpu_arm1020_reset)
 | 
			
		|||
	.align	5
 | 
			
		||||
ENTRY(cpu_arm1020_do_idle)
 | 
			
		||||
	mcr	p15, 0, r0, c7, c0, 4		@ Wait for interrupt
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* ================================= CACHE ================================ */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -133,7 +133,7 @@ ENTRY(arm1020_flush_icache_all)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(arm1020_flush_icache_all)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -169,7 +169,7 @@ __flush_whole_cache:
 | 
			
		|||
	mcrne	p15, 0, ip, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
#endif
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_user_cache_range(start, end, flags)
 | 
			
		||||
| 
						 | 
				
			
			@ -200,7 +200,7 @@ ENTRY(arm1020_flush_user_cache_range)
 | 
			
		|||
	mcrne	p15, 0, ip, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
#endif
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	coherent_kern_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -242,7 +242,7 @@ ENTRY(arm1020_coherent_user_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_kern_dcache_area(void *addr, size_t size)
 | 
			
		||||
| 
						 | 
				
			
			@ -264,7 +264,7 @@ ENTRY(arm1020_flush_kern_dcache_area)
 | 
			
		|||
	blo	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_inv_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -297,7 +297,7 @@ arm1020_dma_inv_range:
 | 
			
		|||
	blo	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_clean_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -320,7 +320,7 @@ arm1020_dma_clean_range:
 | 
			
		|||
	blo	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_flush_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -342,7 +342,7 @@ ENTRY(arm1020_dma_flush_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_map_area(start, size, dir)
 | 
			
		||||
| 
						 | 
				
			
			@ -365,7 +365,7 @@ ENDPROC(arm1020_dma_map_area)
 | 
			
		|||
 *	- dir	- DMA direction
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(arm1020_dma_unmap_area)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(arm1020_dma_unmap_area)
 | 
			
		||||
 | 
			
		||||
	.globl	arm1020_flush_kern_cache_louis
 | 
			
		||||
| 
						 | 
				
			
			@ -384,7 +384,7 @@ ENTRY(cpu_arm1020_dcache_clean_area)
 | 
			
		|||
	subs	r1, r1, #CACHE_DLINESIZE
 | 
			
		||||
	bhi	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* =============================== PageTable ============================== */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -423,7 +423,7 @@ ENTRY(cpu_arm1020_switch_mm)
 | 
			
		|||
	mcr	p15, 0, r0, c2, c0, 0		@ load page table pointer
 | 
			
		||||
	mcr	p15, 0, r1, c8, c7, 0		@ invalidate I & D TLBs
 | 
			
		||||
#endif /* CONFIG_MMU */
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
        
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm1020_set_pte(ptep, pte)
 | 
			
		||||
| 
						 | 
				
			
			@ -441,7 +441,7 @@ ENTRY(cpu_arm1020_set_pte_ext)
 | 
			
		|||
#endif
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
#endif /* CONFIG_MMU */
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	.type	__arm1020_setup, #function
 | 
			
		||||
__arm1020_setup:
 | 
			
		||||
| 
						 | 
				
			
			@ -460,7 +460,7 @@ __arm1020_setup:
 | 
			
		|||
#ifdef CONFIG_CPU_CACHE_ROUND_ROBIN
 | 
			
		||||
	orr	r0, r0, #0x4000 		@ .R.. .... .... ....
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
	.size	__arm1020_setup, . - __arm1020_setup
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -73,7 +73,7 @@
 | 
			
		|||
 * cpu_arm1020e_proc_init()
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(cpu_arm1020e_proc_init)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm1020e_proc_fin()
 | 
			
		||||
| 
						 | 
				
			
			@ -83,7 +83,7 @@ ENTRY(cpu_arm1020e_proc_fin)
 | 
			
		|||
	bic	r0, r0, #0x1000 		@ ...i............
 | 
			
		||||
	bic	r0, r0, #0x000e 		@ ............wca.
 | 
			
		||||
	mcr	p15, 0, r0, c1, c0, 0		@ disable caches
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm1020e_reset(loc)
 | 
			
		||||
| 
						 | 
				
			
			@ -107,7 +107,7 @@ ENTRY(cpu_arm1020e_reset)
 | 
			
		|||
	bic	ip, ip, #0x000f 		@ ............wcam
 | 
			
		||||
	bic	ip, ip, #0x1100 		@ ...i...s........
 | 
			
		||||
	mcr	p15, 0, ip, c1, c0, 0		@ ctrl register
 | 
			
		||||
	mov	pc, r0
 | 
			
		||||
	ret	r0
 | 
			
		||||
ENDPROC(cpu_arm1020e_reset)
 | 
			
		||||
	.popsection
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -117,7 +117,7 @@ ENDPROC(cpu_arm1020e_reset)
 | 
			
		|||
	.align	5
 | 
			
		||||
ENTRY(cpu_arm1020e_do_idle)
 | 
			
		||||
	mcr	p15, 0, r0, c7, c0, 4		@ Wait for interrupt
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* ================================= CACHE ================================ */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -133,7 +133,7 @@ ENTRY(arm1020e_flush_icache_all)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(arm1020e_flush_icache_all)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -168,7 +168,7 @@ __flush_whole_cache:
 | 
			
		|||
	mcrne	p15, 0, ip, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
#endif
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_user_cache_range(start, end, flags)
 | 
			
		||||
| 
						 | 
				
			
			@ -197,7 +197,7 @@ ENTRY(arm1020e_flush_user_cache_range)
 | 
			
		|||
	mcrne	p15, 0, ip, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
#endif
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	coherent_kern_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -236,7 +236,7 @@ ENTRY(arm1020e_coherent_user_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_kern_dcache_area(void *addr, size_t size)
 | 
			
		||||
| 
						 | 
				
			
			@ -257,7 +257,7 @@ ENTRY(arm1020e_flush_kern_dcache_area)
 | 
			
		|||
	blo	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_inv_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -286,7 +286,7 @@ arm1020e_dma_inv_range:
 | 
			
		|||
	blo	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_clean_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -308,7 +308,7 @@ arm1020e_dma_clean_range:
 | 
			
		|||
	blo	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_flush_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -328,7 +328,7 @@ ENTRY(arm1020e_dma_flush_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_map_area(start, size, dir)
 | 
			
		||||
| 
						 | 
				
			
			@ -351,7 +351,7 @@ ENDPROC(arm1020e_dma_map_area)
 | 
			
		|||
 *	- dir	- DMA direction
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(arm1020e_dma_unmap_area)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(arm1020e_dma_unmap_area)
 | 
			
		||||
 | 
			
		||||
	.globl	arm1020e_flush_kern_cache_louis
 | 
			
		||||
| 
						 | 
				
			
			@ -369,7 +369,7 @@ ENTRY(cpu_arm1020e_dcache_clean_area)
 | 
			
		|||
	subs	r1, r1, #CACHE_DLINESIZE
 | 
			
		||||
	bhi	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* =============================== PageTable ============================== */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -407,7 +407,7 @@ ENTRY(cpu_arm1020e_switch_mm)
 | 
			
		|||
	mcr	p15, 0, r0, c2, c0, 0		@ load page table pointer
 | 
			
		||||
	mcr	p15, 0, r1, c8, c7, 0		@ invalidate I & D TLBs
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
        
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm1020e_set_pte(ptep, pte)
 | 
			
		||||
| 
						 | 
				
			
			@ -423,7 +423,7 @@ ENTRY(cpu_arm1020e_set_pte_ext)
 | 
			
		|||
	mcr	p15, 0, r0, c7, c10, 1		@ clean D entry
 | 
			
		||||
#endif
 | 
			
		||||
#endif /* CONFIG_MMU */
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	.type	__arm1020e_setup, #function
 | 
			
		||||
__arm1020e_setup:
 | 
			
		||||
| 
						 | 
				
			
			@ -441,7 +441,7 @@ __arm1020e_setup:
 | 
			
		|||
#ifdef CONFIG_CPU_CACHE_ROUND_ROBIN
 | 
			
		||||
	orr	r0, r0, #0x4000 		@ .R.. .... .... ....
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
	.size	__arm1020e_setup, . - __arm1020e_setup
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -62,7 +62,7 @@
 | 
			
		|||
 * cpu_arm1022_proc_init()
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(cpu_arm1022_proc_init)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm1022_proc_fin()
 | 
			
		||||
| 
						 | 
				
			
			@ -72,7 +72,7 @@ ENTRY(cpu_arm1022_proc_fin)
 | 
			
		|||
	bic	r0, r0, #0x1000 		@ ...i............
 | 
			
		||||
	bic	r0, r0, #0x000e 		@ ............wca.
 | 
			
		||||
	mcr	p15, 0, r0, c1, c0, 0		@ disable caches
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm1022_reset(loc)
 | 
			
		||||
| 
						 | 
				
			
			@ -96,7 +96,7 @@ ENTRY(cpu_arm1022_reset)
 | 
			
		|||
	bic	ip, ip, #0x000f 		@ ............wcam
 | 
			
		||||
	bic	ip, ip, #0x1100 		@ ...i...s........
 | 
			
		||||
	mcr	p15, 0, ip, c1, c0, 0		@ ctrl register
 | 
			
		||||
	mov	pc, r0
 | 
			
		||||
	ret	r0
 | 
			
		||||
ENDPROC(cpu_arm1022_reset)
 | 
			
		||||
	.popsection
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -106,7 +106,7 @@ ENDPROC(cpu_arm1022_reset)
 | 
			
		|||
	.align	5
 | 
			
		||||
ENTRY(cpu_arm1022_do_idle)
 | 
			
		||||
	mcr	p15, 0, r0, c7, c0, 4		@ Wait for interrupt
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* ================================= CACHE ================================ */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -122,7 +122,7 @@ ENTRY(arm1022_flush_icache_all)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(arm1022_flush_icache_all)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -156,7 +156,7 @@ __flush_whole_cache:
 | 
			
		|||
	mcrne	p15, 0, ip, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
#endif
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_user_cache_range(start, end, flags)
 | 
			
		||||
| 
						 | 
				
			
			@ -185,7 +185,7 @@ ENTRY(arm1022_flush_user_cache_range)
 | 
			
		|||
	mcrne	p15, 0, ip, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
#endif
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	coherent_kern_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -225,7 +225,7 @@ ENTRY(arm1022_coherent_user_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_kern_dcache_area(void *addr, size_t size)
 | 
			
		||||
| 
						 | 
				
			
			@ -246,7 +246,7 @@ ENTRY(arm1022_flush_kern_dcache_area)
 | 
			
		|||
	blo	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_inv_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -275,7 +275,7 @@ arm1022_dma_inv_range:
 | 
			
		|||
	blo	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_clean_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -297,7 +297,7 @@ arm1022_dma_clean_range:
 | 
			
		|||
	blo	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_flush_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -317,7 +317,7 @@ ENTRY(arm1022_dma_flush_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_map_area(start, size, dir)
 | 
			
		||||
| 
						 | 
				
			
			@ -340,7 +340,7 @@ ENDPROC(arm1022_dma_map_area)
 | 
			
		|||
 *	- dir	- DMA direction
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(arm1022_dma_unmap_area)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(arm1022_dma_unmap_area)
 | 
			
		||||
 | 
			
		||||
	.globl	arm1022_flush_kern_cache_louis
 | 
			
		||||
| 
						 | 
				
			
			@ -358,7 +358,7 @@ ENTRY(cpu_arm1022_dcache_clean_area)
 | 
			
		|||
	subs	r1, r1, #CACHE_DLINESIZE
 | 
			
		||||
	bhi	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* =============================== PageTable ============================== */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -389,7 +389,7 @@ ENTRY(cpu_arm1022_switch_mm)
 | 
			
		|||
	mcr	p15, 0, r0, c2, c0, 0		@ load page table pointer
 | 
			
		||||
	mcr	p15, 0, r1, c8, c7, 0		@ invalidate I & D TLBs
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
        
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm1022_set_pte_ext(ptep, pte, ext)
 | 
			
		||||
| 
						 | 
				
			
			@ -405,7 +405,7 @@ ENTRY(cpu_arm1022_set_pte_ext)
 | 
			
		|||
	mcr	p15, 0, r0, c7, c10, 1		@ clean D entry
 | 
			
		||||
#endif
 | 
			
		||||
#endif /* CONFIG_MMU */
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	.type	__arm1022_setup, #function
 | 
			
		||||
__arm1022_setup:
 | 
			
		||||
| 
						 | 
				
			
			@ -423,7 +423,7 @@ __arm1022_setup:
 | 
			
		|||
#ifdef CONFIG_CPU_CACHE_ROUND_ROBIN
 | 
			
		||||
	orr	r0, r0, #0x4000 		@ .R..............
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
	.size	__arm1022_setup, . - __arm1022_setup
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -62,7 +62,7 @@
 | 
			
		|||
 * cpu_arm1026_proc_init()
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(cpu_arm1026_proc_init)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm1026_proc_fin()
 | 
			
		||||
| 
						 | 
				
			
			@ -72,7 +72,7 @@ ENTRY(cpu_arm1026_proc_fin)
 | 
			
		|||
	bic	r0, r0, #0x1000 		@ ...i............
 | 
			
		||||
	bic	r0, r0, #0x000e 		@ ............wca.
 | 
			
		||||
	mcr	p15, 0, r0, c1, c0, 0		@ disable caches
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm1026_reset(loc)
 | 
			
		||||
| 
						 | 
				
			
			@ -96,7 +96,7 @@ ENTRY(cpu_arm1026_reset)
 | 
			
		|||
	bic	ip, ip, #0x000f 		@ ............wcam
 | 
			
		||||
	bic	ip, ip, #0x1100 		@ ...i...s........
 | 
			
		||||
	mcr	p15, 0, ip, c1, c0, 0		@ ctrl register
 | 
			
		||||
	mov	pc, r0
 | 
			
		||||
	ret	r0
 | 
			
		||||
ENDPROC(cpu_arm1026_reset)
 | 
			
		||||
	.popsection
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -106,7 +106,7 @@ ENDPROC(cpu_arm1026_reset)
 | 
			
		|||
	.align	5
 | 
			
		||||
ENTRY(cpu_arm1026_do_idle)
 | 
			
		||||
	mcr	p15, 0, r0, c7, c0, 4		@ Wait for interrupt
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* ================================= CACHE ================================ */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -122,7 +122,7 @@ ENTRY(arm1026_flush_icache_all)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(arm1026_flush_icache_all)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -151,7 +151,7 @@ __flush_whole_cache:
 | 
			
		|||
	mcrne	p15, 0, ip, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
#endif
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_user_cache_range(start, end, flags)
 | 
			
		||||
| 
						 | 
				
			
			@ -180,7 +180,7 @@ ENTRY(arm1026_flush_user_cache_range)
 | 
			
		|||
	mcrne	p15, 0, ip, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
#endif
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	coherent_kern_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -219,7 +219,7 @@ ENTRY(arm1026_coherent_user_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_kern_dcache_area(void *addr, size_t size)
 | 
			
		||||
| 
						 | 
				
			
			@ -240,7 +240,7 @@ ENTRY(arm1026_flush_kern_dcache_area)
 | 
			
		|||
	blo	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_inv_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -269,7 +269,7 @@ arm1026_dma_inv_range:
 | 
			
		|||
	blo	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_clean_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -291,7 +291,7 @@ arm1026_dma_clean_range:
 | 
			
		|||
	blo	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_flush_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -311,7 +311,7 @@ ENTRY(arm1026_dma_flush_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_map_area(start, size, dir)
 | 
			
		||||
| 
						 | 
				
			
			@ -334,7 +334,7 @@ ENDPROC(arm1026_dma_map_area)
 | 
			
		|||
 *	- dir	- DMA direction
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(arm1026_dma_unmap_area)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(arm1026_dma_unmap_area)
 | 
			
		||||
 | 
			
		||||
	.globl	arm1026_flush_kern_cache_louis
 | 
			
		||||
| 
						 | 
				
			
			@ -352,7 +352,7 @@ ENTRY(cpu_arm1026_dcache_clean_area)
 | 
			
		|||
	subs	r1, r1, #CACHE_DLINESIZE
 | 
			
		||||
	bhi	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* =============================== PageTable ============================== */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -378,7 +378,7 @@ ENTRY(cpu_arm1026_switch_mm)
 | 
			
		|||
	mcr	p15, 0, r0, c2, c0, 0		@ load page table pointer
 | 
			
		||||
	mcr	p15, 0, r1, c8, c7, 0		@ invalidate I & D TLBs
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
        
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm1026_set_pte_ext(ptep, pte, ext)
 | 
			
		||||
| 
						 | 
				
			
			@ -394,7 +394,7 @@ ENTRY(cpu_arm1026_set_pte_ext)
 | 
			
		|||
	mcr	p15, 0, r0, c7, c10, 1		@ clean D entry
 | 
			
		||||
#endif
 | 
			
		||||
#endif /* CONFIG_MMU */
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	.type	__arm1026_setup, #function
 | 
			
		||||
__arm1026_setup:
 | 
			
		||||
| 
						 | 
				
			
			@ -417,7 +417,7 @@ __arm1026_setup:
 | 
			
		|||
#ifdef CONFIG_CPU_CACHE_ROUND_ROBIN
 | 
			
		||||
	orr	r0, r0, #0x4000 		@ .R.. .... .... ....
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
	.size	__arm1026_setup, . - __arm1026_setup
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -51,14 +51,14 @@
 | 
			
		|||
 */
 | 
			
		||||
ENTRY(cpu_arm720_dcache_clean_area)
 | 
			
		||||
ENTRY(cpu_arm720_proc_init)
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
 | 
			
		||||
ENTRY(cpu_arm720_proc_fin)
 | 
			
		||||
		mrc	p15, 0, r0, c1, c0, 0
 | 
			
		||||
		bic	r0, r0, #0x1000			@ ...i............
 | 
			
		||||
		bic	r0, r0, #0x000e			@ ............wca.
 | 
			
		||||
		mcr	p15, 0, r0, c1, c0, 0		@ disable caches
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Function: arm720_proc_do_idle(void)
 | 
			
		||||
| 
						 | 
				
			
			@ -66,7 +66,7 @@ ENTRY(cpu_arm720_proc_fin)
 | 
			
		|||
 * Purpose : put the processor in proper idle mode
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(cpu_arm720_do_idle)
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Function: arm720_switch_mm(unsigned long pgd_phys)
 | 
			
		||||
| 
						 | 
				
			
			@ -81,7 +81,7 @@ ENTRY(cpu_arm720_switch_mm)
 | 
			
		|||
		mcr	p15, 0, r0, c2, c0, 0		@ update page table ptr
 | 
			
		||||
		mcr	p15, 0, r1, c8, c7, 0		@ flush TLB (v4)
 | 
			
		||||
#endif
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Function: arm720_set_pte_ext(pte_t *ptep, pte_t pte, unsigned int ext)
 | 
			
		||||
| 
						 | 
				
			
			@ -94,7 +94,7 @@ ENTRY(cpu_arm720_set_pte_ext)
 | 
			
		|||
#ifdef CONFIG_MMU
 | 
			
		||||
	armv3_set_pte_ext wc_disable=0
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Function: arm720_reset
 | 
			
		||||
| 
						 | 
				
			
			@ -112,7 +112,7 @@ ENTRY(cpu_arm720_reset)
 | 
			
		|||
		bic	ip, ip, #0x000f			@ ............wcam
 | 
			
		||||
		bic	ip, ip, #0x2100			@ ..v....s........
 | 
			
		||||
		mcr	p15, 0, ip, c1, c0, 0		@ ctrl register
 | 
			
		||||
		mov	pc, r0
 | 
			
		||||
		ret	r0
 | 
			
		||||
ENDPROC(cpu_arm720_reset)
 | 
			
		||||
		.popsection
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -128,7 +128,7 @@ __arm710_setup:
 | 
			
		|||
	bic	r0, r0, r5
 | 
			
		||||
	ldr	r5, arm710_cr1_set
 | 
			
		||||
	orr	r0, r0, r5
 | 
			
		||||
	mov	pc, lr				@ __ret (head.S)
 | 
			
		||||
	ret	lr				@ __ret (head.S)
 | 
			
		||||
	.size	__arm710_setup, . - __arm710_setup
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
| 
						 | 
				
			
			@ -156,7 +156,7 @@ __arm720_setup:
 | 
			
		|||
	mrc	p15, 0, r0, c1, c0		@ get control register
 | 
			
		||||
	bic	r0, r0, r5
 | 
			
		||||
	orr	r0, r0, r6
 | 
			
		||||
	mov	pc, lr				@ __ret (head.S)
 | 
			
		||||
	ret	lr				@ __ret (head.S)
 | 
			
		||||
	.size	__arm720_setup, . - __arm720_setup
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,7 +32,7 @@ ENTRY(cpu_arm740_proc_init)
 | 
			
		|||
ENTRY(cpu_arm740_do_idle)
 | 
			
		||||
ENTRY(cpu_arm740_dcache_clean_area)
 | 
			
		||||
ENTRY(cpu_arm740_switch_mm)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm740_proc_fin()
 | 
			
		||||
| 
						 | 
				
			
			@ -42,7 +42,7 @@ ENTRY(cpu_arm740_proc_fin)
 | 
			
		|||
	bic	r0, r0, #0x3f000000		@ bank/f/lock/s
 | 
			
		||||
	bic	r0, r0, #0x0000000c		@ w-buffer/cache
 | 
			
		||||
	mcr	p15, 0, r0, c1, c0, 0		@ disable caches
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm740_reset(loc)
 | 
			
		||||
| 
						 | 
				
			
			@ -56,7 +56,7 @@ ENTRY(cpu_arm740_reset)
 | 
			
		|||
	mrc	p15, 0, ip, c1, c0, 0		@ get ctrl register
 | 
			
		||||
	bic	ip, ip, #0x0000000c		@ ............wc..
 | 
			
		||||
	mcr	p15, 0, ip, c1, c0, 0		@ ctrl register
 | 
			
		||||
	mov	pc, r0
 | 
			
		||||
	ret	r0
 | 
			
		||||
ENDPROC(cpu_arm740_reset)
 | 
			
		||||
	.popsection
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -115,7 +115,7 @@ __arm740_setup:
 | 
			
		|||
						@ need some benchmark
 | 
			
		||||
	orr	r0, r0, #0x0000000d		@ MPU/Cache/WB
 | 
			
		||||
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	.size	__arm740_setup, . - __arm740_setup
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,13 +32,13 @@ ENTRY(cpu_arm7tdmi_proc_init)
 | 
			
		|||
ENTRY(cpu_arm7tdmi_do_idle)
 | 
			
		||||
ENTRY(cpu_arm7tdmi_dcache_clean_area)
 | 
			
		||||
ENTRY(cpu_arm7tdmi_switch_mm)
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm7tdmi_proc_fin()
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(cpu_arm7tdmi_proc_fin)
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Function: cpu_arm7tdmi_reset(loc)
 | 
			
		||||
| 
						 | 
				
			
			@ -47,13 +47,13 @@ ENTRY(cpu_arm7tdmi_proc_fin)
 | 
			
		|||
 */
 | 
			
		||||
		.pushsection	.idmap.text, "ax"
 | 
			
		||||
ENTRY(cpu_arm7tdmi_reset)
 | 
			
		||||
		mov	pc, r0
 | 
			
		||||
		ret	r0
 | 
			
		||||
ENDPROC(cpu_arm7tdmi_reset)
 | 
			
		||||
		.popsection
 | 
			
		||||
 | 
			
		||||
		.type	__arm7tdmi_setup, #function
 | 
			
		||||
__arm7tdmi_setup:
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
		.size	__arm7tdmi_setup, . - __arm7tdmi_setup
 | 
			
		||||
 | 
			
		||||
		__INITDATA
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -63,7 +63,7 @@
 | 
			
		|||
 * cpu_arm920_proc_init()
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(cpu_arm920_proc_init)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm920_proc_fin()
 | 
			
		||||
| 
						 | 
				
			
			@ -73,7 +73,7 @@ ENTRY(cpu_arm920_proc_fin)
 | 
			
		|||
	bic	r0, r0, #0x1000			@ ...i............
 | 
			
		||||
	bic	r0, r0, #0x000e			@ ............wca.
 | 
			
		||||
	mcr	p15, 0, r0, c1, c0, 0		@ disable caches
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm920_reset(loc)
 | 
			
		||||
| 
						 | 
				
			
			@ -97,7 +97,7 @@ ENTRY(cpu_arm920_reset)
 | 
			
		|||
	bic	ip, ip, #0x000f			@ ............wcam
 | 
			
		||||
	bic	ip, ip, #0x1100			@ ...i...s........
 | 
			
		||||
	mcr	p15, 0, ip, c1, c0, 0		@ ctrl register
 | 
			
		||||
	mov	pc, r0
 | 
			
		||||
	ret	r0
 | 
			
		||||
ENDPROC(cpu_arm920_reset)
 | 
			
		||||
	.popsection
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -107,7 +107,7 @@ ENDPROC(cpu_arm920_reset)
 | 
			
		|||
	.align	5
 | 
			
		||||
ENTRY(cpu_arm920_do_idle)
 | 
			
		||||
	mcr	p15, 0, r0, c7, c0, 4		@ Wait for interrupt
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef CONFIG_CPU_DCACHE_WRITETHROUGH
 | 
			
		||||
| 
						 | 
				
			
			@ -120,7 +120,7 @@ ENTRY(cpu_arm920_do_idle)
 | 
			
		|||
ENTRY(arm920_flush_icache_all)
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(arm920_flush_icache_all)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -151,7 +151,7 @@ __flush_whole_cache:
 | 
			
		|||
	tst	r2, #VM_EXEC
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_user_cache_range(start, end, flags)
 | 
			
		||||
| 
						 | 
				
			
			@ -177,7 +177,7 @@ ENTRY(arm920_flush_user_cache_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
	tst	r2, #VM_EXEC
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	coherent_kern_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -211,7 +211,7 @@ ENTRY(arm920_coherent_user_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_kern_dcache_area(void *addr, size_t size)
 | 
			
		||||
| 
						 | 
				
			
			@ -231,7 +231,7 @@ ENTRY(arm920_flush_kern_dcache_area)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_inv_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -257,7 +257,7 @@ arm920_dma_inv_range:
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_clean_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -276,7 +276,7 @@ arm920_dma_clean_range:
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_flush_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -293,7 +293,7 @@ ENTRY(arm920_dma_flush_range)
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_map_area(start, size, dir)
 | 
			
		||||
| 
						 | 
				
			
			@ -316,7 +316,7 @@ ENDPROC(arm920_dma_map_area)
 | 
			
		|||
 *	- dir	- DMA direction
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(arm920_dma_unmap_area)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(arm920_dma_unmap_area)
 | 
			
		||||
 | 
			
		||||
	.globl	arm920_flush_kern_cache_louis
 | 
			
		||||
| 
						 | 
				
			
			@ -332,7 +332,7 @@ ENTRY(cpu_arm920_dcache_clean_area)
 | 
			
		|||
	add	r0, r0, #CACHE_DLINESIZE
 | 
			
		||||
	subs	r1, r1, #CACHE_DLINESIZE
 | 
			
		||||
	bhi	1b
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* =============================== PageTable ============================== */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -367,7 +367,7 @@ ENTRY(cpu_arm920_switch_mm)
 | 
			
		|||
	mcr	p15, 0, r0, c2, c0, 0		@ load page table pointer
 | 
			
		||||
	mcr	p15, 0, ip, c8, c7, 0		@ invalidate I & D TLBs
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm920_set_pte(ptep, pte, ext)
 | 
			
		||||
| 
						 | 
				
			
			@ -382,7 +382,7 @@ ENTRY(cpu_arm920_set_pte_ext)
 | 
			
		|||
	mcr	p15, 0, r0, c7, c10, 1		@ clean D entry
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */
 | 
			
		||||
.globl	cpu_arm920_suspend_size
 | 
			
		||||
| 
						 | 
				
			
			@ -423,7 +423,7 @@ __arm920_setup:
 | 
			
		|||
	mrc	p15, 0, r0, c1, c0		@ get control register v4
 | 
			
		||||
	bic	r0, r0, r5
 | 
			
		||||
	orr	r0, r0, r6
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
	.size	__arm920_setup, . - __arm920_setup
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -65,7 +65,7 @@
 | 
			
		|||
 * cpu_arm922_proc_init()
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(cpu_arm922_proc_init)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm922_proc_fin()
 | 
			
		||||
| 
						 | 
				
			
			@ -75,7 +75,7 @@ ENTRY(cpu_arm922_proc_fin)
 | 
			
		|||
	bic	r0, r0, #0x1000			@ ...i............
 | 
			
		||||
	bic	r0, r0, #0x000e			@ ............wca.
 | 
			
		||||
	mcr	p15, 0, r0, c1, c0, 0		@ disable caches
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm922_reset(loc)
 | 
			
		||||
| 
						 | 
				
			
			@ -99,7 +99,7 @@ ENTRY(cpu_arm922_reset)
 | 
			
		|||
	bic	ip, ip, #0x000f			@ ............wcam
 | 
			
		||||
	bic	ip, ip, #0x1100			@ ...i...s........
 | 
			
		||||
	mcr	p15, 0, ip, c1, c0, 0		@ ctrl register
 | 
			
		||||
	mov	pc, r0
 | 
			
		||||
	ret	r0
 | 
			
		||||
ENDPROC(cpu_arm922_reset)
 | 
			
		||||
	.popsection
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -109,7 +109,7 @@ ENDPROC(cpu_arm922_reset)
 | 
			
		|||
	.align	5
 | 
			
		||||
ENTRY(cpu_arm922_do_idle)
 | 
			
		||||
	mcr	p15, 0, r0, c7, c0, 4		@ Wait for interrupt
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef CONFIG_CPU_DCACHE_WRITETHROUGH
 | 
			
		||||
| 
						 | 
				
			
			@ -122,7 +122,7 @@ ENTRY(cpu_arm922_do_idle)
 | 
			
		|||
ENTRY(arm922_flush_icache_all)
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(arm922_flush_icache_all)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -153,7 +153,7 @@ __flush_whole_cache:
 | 
			
		|||
	tst	r2, #VM_EXEC
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_user_cache_range(start, end, flags)
 | 
			
		||||
| 
						 | 
				
			
			@ -179,7 +179,7 @@ ENTRY(arm922_flush_user_cache_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
	tst	r2, #VM_EXEC
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	coherent_kern_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -213,7 +213,7 @@ ENTRY(arm922_coherent_user_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_kern_dcache_area(void *addr, size_t size)
 | 
			
		||||
| 
						 | 
				
			
			@ -233,7 +233,7 @@ ENTRY(arm922_flush_kern_dcache_area)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_inv_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -259,7 +259,7 @@ arm922_dma_inv_range:
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_clean_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -278,7 +278,7 @@ arm922_dma_clean_range:
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_flush_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -295,7 +295,7 @@ ENTRY(arm922_dma_flush_range)
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_map_area(start, size, dir)
 | 
			
		||||
| 
						 | 
				
			
			@ -318,7 +318,7 @@ ENDPROC(arm922_dma_map_area)
 | 
			
		|||
 *	- dir	- DMA direction
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(arm922_dma_unmap_area)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(arm922_dma_unmap_area)
 | 
			
		||||
 | 
			
		||||
	.globl	arm922_flush_kern_cache_louis
 | 
			
		||||
| 
						 | 
				
			
			@ -336,7 +336,7 @@ ENTRY(cpu_arm922_dcache_clean_area)
 | 
			
		|||
	subs	r1, r1, #CACHE_DLINESIZE
 | 
			
		||||
	bhi	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* =============================== PageTable ============================== */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -371,7 +371,7 @@ ENTRY(cpu_arm922_switch_mm)
 | 
			
		|||
	mcr	p15, 0, r0, c2, c0, 0		@ load page table pointer
 | 
			
		||||
	mcr	p15, 0, ip, c8, c7, 0		@ invalidate I & D TLBs
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm922_set_pte_ext(ptep, pte, ext)
 | 
			
		||||
| 
						 | 
				
			
			@ -386,7 +386,7 @@ ENTRY(cpu_arm922_set_pte_ext)
 | 
			
		|||
	mcr	p15, 0, r0, c7, c10, 1		@ clean D entry
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
#endif /* CONFIG_MMU */
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	.type	__arm922_setup, #function
 | 
			
		||||
__arm922_setup:
 | 
			
		||||
| 
						 | 
				
			
			@ -401,7 +401,7 @@ __arm922_setup:
 | 
			
		|||
	mrc	p15, 0, r0, c1, c0		@ get control register v4
 | 
			
		||||
	bic	r0, r0, r5
 | 
			
		||||
	orr	r0, r0, r6
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
	.size	__arm922_setup, . - __arm922_setup
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -86,7 +86,7 @@
 | 
			
		|||
 * cpu_arm925_proc_init()
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(cpu_arm925_proc_init)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm925_proc_fin()
 | 
			
		||||
| 
						 | 
				
			
			@ -96,7 +96,7 @@ ENTRY(cpu_arm925_proc_fin)
 | 
			
		|||
	bic	r0, r0, #0x1000			@ ...i............
 | 
			
		||||
	bic	r0, r0, #0x000e			@ ............wca.
 | 
			
		||||
	mcr	p15, 0, r0, c1, c0, 0		@ disable caches
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm925_reset(loc)
 | 
			
		||||
| 
						 | 
				
			
			@ -129,7 +129,7 @@ ENDPROC(cpu_arm925_reset)
 | 
			
		|||
	bic	ip, ip, #0x000f			@ ............wcam
 | 
			
		||||
	bic	ip, ip, #0x1100			@ ...i...s........
 | 
			
		||||
	mcr	p15, 0, ip, c1, c0, 0		@ ctrl register
 | 
			
		||||
	mov	pc, r0
 | 
			
		||||
	ret	r0
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm925_do_idle()
 | 
			
		||||
| 
						 | 
				
			
			@ -145,7 +145,7 @@ ENTRY(cpu_arm925_do_idle)
 | 
			
		|||
	mcr	p15, 0, r2, c1, c0, 0		@ Disable I cache
 | 
			
		||||
	mcr	p15, 0, r0, c7, c0, 4		@ Wait for interrupt
 | 
			
		||||
	mcr	p15, 0, r1, c1, c0, 0		@ Restore ICache enable
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_icache_all()
 | 
			
		||||
| 
						 | 
				
			
			@ -155,7 +155,7 @@ ENTRY(cpu_arm925_do_idle)
 | 
			
		|||
ENTRY(arm925_flush_icache_all)
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(arm925_flush_icache_all)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -188,7 +188,7 @@ __flush_whole_cache:
 | 
			
		|||
	tst	r2, #VM_EXEC
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_user_cache_range(start, end, flags)
 | 
			
		||||
| 
						 | 
				
			
			@ -225,7 +225,7 @@ ENTRY(arm925_flush_user_cache_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
	tst	r2, #VM_EXEC
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	coherent_kern_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -259,7 +259,7 @@ ENTRY(arm925_coherent_user_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_kern_dcache_area(void *addr, size_t size)
 | 
			
		||||
| 
						 | 
				
			
			@ -279,7 +279,7 @@ ENTRY(arm925_flush_kern_dcache_area)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_inv_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -307,7 +307,7 @@ arm925_dma_inv_range:
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_clean_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -328,7 +328,7 @@ arm925_dma_clean_range:
 | 
			
		|||
	blo	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_flush_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -350,7 +350,7 @@ ENTRY(arm925_dma_flush_range)
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_map_area(start, size, dir)
 | 
			
		||||
| 
						 | 
				
			
			@ -373,7 +373,7 @@ ENDPROC(arm925_dma_map_area)
 | 
			
		|||
 *	- dir	- DMA direction
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(arm925_dma_unmap_area)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(arm925_dma_unmap_area)
 | 
			
		||||
 | 
			
		||||
	.globl	arm925_flush_kern_cache_louis
 | 
			
		||||
| 
						 | 
				
			
			@ -390,7 +390,7 @@ ENTRY(cpu_arm925_dcache_clean_area)
 | 
			
		|||
	bhi	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* =============================== PageTable ============================== */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -419,7 +419,7 @@ ENTRY(cpu_arm925_switch_mm)
 | 
			
		|||
	mcr	p15, 0, r0, c2, c0, 0		@ load page table pointer
 | 
			
		||||
	mcr	p15, 0, ip, c8, c7, 0		@ invalidate I & D TLBs
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm925_set_pte_ext(ptep, pte, ext)
 | 
			
		||||
| 
						 | 
				
			
			@ -436,7 +436,7 @@ ENTRY(cpu_arm925_set_pte_ext)
 | 
			
		|||
#endif
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
#endif /* CONFIG_MMU */
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	.type	__arm925_setup, #function
 | 
			
		||||
__arm925_setup:
 | 
			
		||||
| 
						 | 
				
			
			@ -469,7 +469,7 @@ __arm925_setup:
 | 
			
		|||
#ifdef CONFIG_CPU_CACHE_ROUND_ROBIN
 | 
			
		||||
	orr	r0, r0, #0x4000			@ .1.. .... .... ....
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
	.size	__arm925_setup, . - __arm925_setup
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -55,7 +55,7 @@
 | 
			
		|||
 * cpu_arm926_proc_init()
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(cpu_arm926_proc_init)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm926_proc_fin()
 | 
			
		||||
| 
						 | 
				
			
			@ -65,7 +65,7 @@ ENTRY(cpu_arm926_proc_fin)
 | 
			
		|||
	bic	r0, r0, #0x1000			@ ...i............
 | 
			
		||||
	bic	r0, r0, #0x000e			@ ............wca.
 | 
			
		||||
	mcr	p15, 0, r0, c1, c0, 0		@ disable caches
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm926_reset(loc)
 | 
			
		||||
| 
						 | 
				
			
			@ -89,7 +89,7 @@ ENTRY(cpu_arm926_reset)
 | 
			
		|||
	bic	ip, ip, #0x000f			@ ............wcam
 | 
			
		||||
	bic	ip, ip, #0x1100			@ ...i...s........
 | 
			
		||||
	mcr	p15, 0, ip, c1, c0, 0		@ ctrl register
 | 
			
		||||
	mov	pc, r0
 | 
			
		||||
	ret	r0
 | 
			
		||||
ENDPROC(cpu_arm926_reset)
 | 
			
		||||
	.popsection
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -111,7 +111,7 @@ ENTRY(cpu_arm926_do_idle)
 | 
			
		|||
	mcr	p15, 0, r0, c7, c0, 4		@ Wait for interrupt
 | 
			
		||||
	mcr	p15, 0, r1, c1, c0, 0		@ Restore ICache enable
 | 
			
		||||
	msr	cpsr_c, r3			@ Restore FIQ state
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_icache_all()
 | 
			
		||||
| 
						 | 
				
			
			@ -121,7 +121,7 @@ ENTRY(cpu_arm926_do_idle)
 | 
			
		|||
ENTRY(arm926_flush_icache_all)
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(arm926_flush_icache_all)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -151,7 +151,7 @@ __flush_whole_cache:
 | 
			
		|||
	tst	r2, #VM_EXEC
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_user_cache_range(start, end, flags)
 | 
			
		||||
| 
						 | 
				
			
			@ -188,7 +188,7 @@ ENTRY(arm926_flush_user_cache_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
	tst	r2, #VM_EXEC
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	coherent_kern_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -222,7 +222,7 @@ ENTRY(arm926_coherent_user_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_kern_dcache_area(void *addr, size_t size)
 | 
			
		||||
| 
						 | 
				
			
			@ -242,7 +242,7 @@ ENTRY(arm926_flush_kern_dcache_area)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_inv_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -270,7 +270,7 @@ arm926_dma_inv_range:
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_clean_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -291,7 +291,7 @@ arm926_dma_clean_range:
 | 
			
		|||
	blo	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_flush_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -313,7 +313,7 @@ ENTRY(arm926_dma_flush_range)
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_map_area(start, size, dir)
 | 
			
		||||
| 
						 | 
				
			
			@ -336,7 +336,7 @@ ENDPROC(arm926_dma_map_area)
 | 
			
		|||
 *	- dir	- DMA direction
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(arm926_dma_unmap_area)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(arm926_dma_unmap_area)
 | 
			
		||||
 | 
			
		||||
	.globl	arm926_flush_kern_cache_louis
 | 
			
		||||
| 
						 | 
				
			
			@ -353,7 +353,7 @@ ENTRY(cpu_arm926_dcache_clean_area)
 | 
			
		|||
	bhi	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* =============================== PageTable ============================== */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -380,7 +380,7 @@ ENTRY(cpu_arm926_switch_mm)
 | 
			
		|||
	mcr	p15, 0, r0, c2, c0, 0		@ load page table pointer
 | 
			
		||||
	mcr	p15, 0, ip, c8, c7, 0		@ invalidate I & D TLBs
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm926_set_pte_ext(ptep, pte, ext)
 | 
			
		||||
| 
						 | 
				
			
			@ -397,7 +397,7 @@ ENTRY(cpu_arm926_set_pte_ext)
 | 
			
		|||
#endif
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */
 | 
			
		||||
.globl	cpu_arm926_suspend_size
 | 
			
		||||
| 
						 | 
				
			
			@ -448,7 +448,7 @@ __arm926_setup:
 | 
			
		|||
#ifdef CONFIG_CPU_CACHE_ROUND_ROBIN
 | 
			
		||||
	orr	r0, r0, #0x4000			@ .1.. .... .... ....
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
	.size	__arm926_setup, . - __arm926_setup
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,7 +31,7 @@
 | 
			
		|||
 */
 | 
			
		||||
ENTRY(cpu_arm940_proc_init)
 | 
			
		||||
ENTRY(cpu_arm940_switch_mm)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm940_proc_fin()
 | 
			
		||||
| 
						 | 
				
			
			@ -41,7 +41,7 @@ ENTRY(cpu_arm940_proc_fin)
 | 
			
		|||
	bic	r0, r0, #0x00001000		@ i-cache
 | 
			
		||||
	bic	r0, r0, #0x00000004		@ d-cache
 | 
			
		||||
	mcr	p15, 0, r0, c1, c0, 0		@ disable caches
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm940_reset(loc)
 | 
			
		||||
| 
						 | 
				
			
			@ -58,7 +58,7 @@ ENTRY(cpu_arm940_reset)
 | 
			
		|||
	bic	ip, ip, #0x00000005		@ .............c.p
 | 
			
		||||
	bic	ip, ip, #0x00001000		@ i-cache
 | 
			
		||||
	mcr	p15, 0, ip, c1, c0, 0		@ ctrl register
 | 
			
		||||
	mov	pc, r0
 | 
			
		||||
	ret	r0
 | 
			
		||||
ENDPROC(cpu_arm940_reset)
 | 
			
		||||
	.popsection
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -68,7 +68,7 @@ ENDPROC(cpu_arm940_reset)
 | 
			
		|||
	.align	5
 | 
			
		||||
ENTRY(cpu_arm940_do_idle)
 | 
			
		||||
	mcr	p15, 0, r0, c7, c0, 4		@ Wait for interrupt
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_icache_all()
 | 
			
		||||
| 
						 | 
				
			
			@ -78,7 +78,7 @@ ENTRY(cpu_arm940_do_idle)
 | 
			
		|||
ENTRY(arm940_flush_icache_all)
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(arm940_flush_icache_all)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -122,7 +122,7 @@ ENTRY(arm940_flush_user_cache_range)
 | 
			
		|||
	tst	r2, #VM_EXEC
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	coherent_kern_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -170,7 +170,7 @@ ENTRY(arm940_flush_kern_dcache_area)
 | 
			
		|||
	bcs	1b				@ segments 7 to 0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_inv_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -191,7 +191,7 @@ arm940_dma_inv_range:
 | 
			
		|||
	subs	r1, r1, #1 << 4
 | 
			
		||||
	bcs	1b				@ segments 7 to 0
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_clean_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -215,7 +215,7 @@ ENTRY(cpu_arm940_dcache_clean_area)
 | 
			
		|||
	bcs	1b				@ segments 7 to 0
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_flush_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -241,7 +241,7 @@ ENTRY(arm940_dma_flush_range)
 | 
			
		|||
	subs	r1, r1, #1 << 4
 | 
			
		||||
	bcs	1b				@ segments 7 to 0
 | 
			
		||||
	mcr	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_map_area(start, size, dir)
 | 
			
		||||
| 
						 | 
				
			
			@ -264,7 +264,7 @@ ENDPROC(arm940_dma_map_area)
 | 
			
		|||
 *	- dir	- DMA direction
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(arm940_dma_unmap_area)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(arm940_dma_unmap_area)
 | 
			
		||||
 | 
			
		||||
	.globl	arm940_flush_kern_cache_louis
 | 
			
		||||
| 
						 | 
				
			
			@ -337,7 +337,7 @@ __arm940_setup:
 | 
			
		|||
	orr	r0, r0, #0x00001000		@ I-cache
 | 
			
		||||
	orr	r0, r0, #0x00000005		@ MPU/D-cache
 | 
			
		||||
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	.size	__arm940_setup, . - __arm940_setup
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,7 +38,7 @@
 | 
			
		|||
 */
 | 
			
		||||
ENTRY(cpu_arm946_proc_init)
 | 
			
		||||
ENTRY(cpu_arm946_switch_mm)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm946_proc_fin()
 | 
			
		||||
| 
						 | 
				
			
			@ -48,7 +48,7 @@ ENTRY(cpu_arm946_proc_fin)
 | 
			
		|||
	bic	r0, r0, #0x00001000		@ i-cache
 | 
			
		||||
	bic	r0, r0, #0x00000004		@ d-cache
 | 
			
		||||
	mcr	p15, 0, r0, c1, c0, 0		@ disable caches
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm946_reset(loc)
 | 
			
		||||
| 
						 | 
				
			
			@ -65,7 +65,7 @@ ENTRY(cpu_arm946_reset)
 | 
			
		|||
	bic	ip, ip, #0x00000005		@ .............c.p
 | 
			
		||||
	bic	ip, ip, #0x00001000		@ i-cache
 | 
			
		||||
	mcr	p15, 0, ip, c1, c0, 0		@ ctrl register
 | 
			
		||||
	mov	pc, r0
 | 
			
		||||
	ret	r0
 | 
			
		||||
ENDPROC(cpu_arm946_reset)
 | 
			
		||||
	.popsection
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -75,7 +75,7 @@ ENDPROC(cpu_arm946_reset)
 | 
			
		|||
	.align	5
 | 
			
		||||
ENTRY(cpu_arm946_do_idle)
 | 
			
		||||
	mcr	p15, 0, r0, c7, c0, 4		@ Wait for interrupt
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_icache_all()
 | 
			
		||||
| 
						 | 
				
			
			@ -85,7 +85,7 @@ ENTRY(cpu_arm946_do_idle)
 | 
			
		|||
ENTRY(arm946_flush_icache_all)
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(arm946_flush_icache_all)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -117,7 +117,7 @@ __flush_whole_cache:
 | 
			
		|||
	tst	r2, #VM_EXEC
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c5, 0		@ flush I cache
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_user_cache_range(start, end, flags)
 | 
			
		||||
| 
						 | 
				
			
			@ -156,7 +156,7 @@ ENTRY(arm946_flush_user_cache_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
	tst	r2, #VM_EXEC
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	coherent_kern_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -191,7 +191,7 @@ ENTRY(arm946_coherent_user_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_kern_dcache_area(void *addr, size_t size)
 | 
			
		||||
| 
						 | 
				
			
			@ -212,7 +212,7 @@ ENTRY(arm946_flush_kern_dcache_area)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_inv_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -239,7 +239,7 @@ arm946_dma_inv_range:
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_clean_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -260,7 +260,7 @@ arm946_dma_clean_range:
 | 
			
		|||
	blo	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_flush_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -284,7 +284,7 @@ ENTRY(arm946_dma_flush_range)
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_map_area(start, size, dir)
 | 
			
		||||
| 
						 | 
				
			
			@ -307,7 +307,7 @@ ENDPROC(arm946_dma_map_area)
 | 
			
		|||
 *	- dir	- DMA direction
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(arm946_dma_unmap_area)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(arm946_dma_unmap_area)
 | 
			
		||||
 | 
			
		||||
	.globl	arm946_flush_kern_cache_louis
 | 
			
		||||
| 
						 | 
				
			
			@ -324,7 +324,7 @@ ENTRY(cpu_arm946_dcache_clean_area)
 | 
			
		|||
	bhi	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	.type	__arm946_setup, #function
 | 
			
		||||
__arm946_setup:
 | 
			
		||||
| 
						 | 
				
			
			@ -392,7 +392,7 @@ __arm946_setup:
 | 
			
		|||
#ifdef CONFIG_CPU_CACHE_ROUND_ROBIN
 | 
			
		||||
	orr	r0, r0, #0x00004000		@ .1.. .... .... ....
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	.size	__arm946_setup, . - __arm946_setup
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,13 +32,13 @@ ENTRY(cpu_arm9tdmi_proc_init)
 | 
			
		|||
ENTRY(cpu_arm9tdmi_do_idle)
 | 
			
		||||
ENTRY(cpu_arm9tdmi_dcache_clean_area)
 | 
			
		||||
ENTRY(cpu_arm9tdmi_switch_mm)
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_arm9tdmi_proc_fin()
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(cpu_arm9tdmi_proc_fin)
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Function: cpu_arm9tdmi_reset(loc)
 | 
			
		||||
| 
						 | 
				
			
			@ -47,13 +47,13 @@ ENTRY(cpu_arm9tdmi_proc_fin)
 | 
			
		|||
 */
 | 
			
		||||
		.pushsection	.idmap.text, "ax"
 | 
			
		||||
ENTRY(cpu_arm9tdmi_reset)
 | 
			
		||||
		mov	pc, r0
 | 
			
		||||
		ret	r0
 | 
			
		||||
ENDPROC(cpu_arm9tdmi_reset)
 | 
			
		||||
		.popsection
 | 
			
		||||
 | 
			
		||||
		.type	__arm9tdmi_setup, #function
 | 
			
		||||
__arm9tdmi_setup:
 | 
			
		||||
		mov	pc, lr
 | 
			
		||||
		ret	lr
 | 
			
		||||
		.size	__arm9tdmi_setup, . - __arm9tdmi_setup
 | 
			
		||||
 | 
			
		||||
		__INITDATA
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,7 +32,7 @@
 | 
			
		|||
 * cpu_fa526_proc_init()
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(cpu_fa526_proc_init)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_fa526_proc_fin()
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +44,7 @@ ENTRY(cpu_fa526_proc_fin)
 | 
			
		|||
	mcr	p15, 0, r0, c1, c0, 0		@ disable caches
 | 
			
		||||
	nop
 | 
			
		||||
	nop
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_fa526_reset(loc)
 | 
			
		||||
| 
						 | 
				
			
			@ -72,7 +72,7 @@ ENTRY(cpu_fa526_reset)
 | 
			
		|||
	mcr	p15, 0, ip, c1, c0, 0		@ ctrl register
 | 
			
		||||
	nop
 | 
			
		||||
	nop
 | 
			
		||||
	mov	pc, r0
 | 
			
		||||
	ret	r0
 | 
			
		||||
ENDPROC(cpu_fa526_reset)
 | 
			
		||||
	.popsection
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -81,7 +81,7 @@ ENDPROC(cpu_fa526_reset)
 | 
			
		|||
 */
 | 
			
		||||
	.align	4
 | 
			
		||||
ENTRY(cpu_fa526_do_idle)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ENTRY(cpu_fa526_dcache_clean_area)
 | 
			
		||||
| 
						 | 
				
			
			@ -90,7 +90,7 @@ ENTRY(cpu_fa526_dcache_clean_area)
 | 
			
		|||
	subs	r1, r1, #CACHE_DLINESIZE
 | 
			
		||||
	bhi	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* =============================== PageTable ============================== */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -117,7 +117,7 @@ ENTRY(cpu_fa526_switch_mm)
 | 
			
		|||
	mcr	p15, 0, r0, c2, c0, 0		@ load page table pointer
 | 
			
		||||
	mcr	p15, 0, ip, c8, c7, 0		@ invalidate UTLB
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_fa526_set_pte_ext(ptep, pte, ext)
 | 
			
		||||
| 
						 | 
				
			
			@ -133,7 +133,7 @@ ENTRY(cpu_fa526_set_pte_ext)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	.type	__fa526_setup, #function
 | 
			
		||||
__fa526_setup:
 | 
			
		||||
| 
						 | 
				
			
			@ -162,7 +162,7 @@ __fa526_setup:
 | 
			
		|||
	bic	r0, r0, r5
 | 
			
		||||
	ldr	r5, fa526_cr1_set
 | 
			
		||||
	orr	r0, r0, r5
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
	.size	__fa526_setup, . - __fa526_setup
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -69,7 +69,7 @@ ENTRY(cpu_feroceon_proc_init)
 | 
			
		|||
	movne	r2, r2, lsr #2			@ turned into # of sets
 | 
			
		||||
	sub	r2, r2, #(1 << 5)
 | 
			
		||||
	stmia	r1, {r2, r3}
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_feroceon_proc_fin()
 | 
			
		||||
| 
						 | 
				
			
			@ -86,7 +86,7 @@ ENTRY(cpu_feroceon_proc_fin)
 | 
			
		|||
	bic	r0, r0, #0x1000			@ ...i............
 | 
			
		||||
	bic	r0, r0, #0x000e			@ ............wca.
 | 
			
		||||
	mcr	p15, 0, r0, c1, c0, 0		@ disable caches
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_feroceon_reset(loc)
 | 
			
		||||
| 
						 | 
				
			
			@ -110,7 +110,7 @@ ENTRY(cpu_feroceon_reset)
 | 
			
		|||
	bic	ip, ip, #0x000f			@ ............wcam
 | 
			
		||||
	bic	ip, ip, #0x1100			@ ...i...s........
 | 
			
		||||
	mcr	p15, 0, ip, c1, c0, 0		@ ctrl register
 | 
			
		||||
	mov	pc, r0
 | 
			
		||||
	ret	r0
 | 
			
		||||
ENDPROC(cpu_feroceon_reset)
 | 
			
		||||
	.popsection
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -124,7 +124,7 @@ ENTRY(cpu_feroceon_do_idle)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ Drain write buffer
 | 
			
		||||
	mcr	p15, 0, r0, c7, c0, 4		@ Wait for interrupt
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_icache_all()
 | 
			
		||||
| 
						 | 
				
			
			@ -134,7 +134,7 @@ ENTRY(cpu_feroceon_do_idle)
 | 
			
		|||
ENTRY(feroceon_flush_icache_all)
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(feroceon_flush_icache_all)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -169,7 +169,7 @@ __flush_whole_cache:
 | 
			
		|||
	mov	ip, #0
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_user_cache_range(start, end, flags)
 | 
			
		||||
| 
						 | 
				
			
			@ -198,7 +198,7 @@ ENTRY(feroceon_flush_user_cache_range)
 | 
			
		|||
	tst	r2, #VM_EXEC
 | 
			
		||||
	mov	ip, #0
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	coherent_kern_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -233,7 +233,7 @@ ENTRY(feroceon_coherent_user_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_kern_dcache_area(void *addr, size_t size)
 | 
			
		||||
| 
						 | 
				
			
			@ -254,7 +254,7 @@ ENTRY(feroceon_flush_kern_dcache_area)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	.align	5
 | 
			
		||||
ENTRY(feroceon_range_flush_kern_dcache_area)
 | 
			
		||||
| 
						 | 
				
			
			@ -268,7 +268,7 @@ ENTRY(feroceon_range_flush_kern_dcache_area)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_inv_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -295,7 +295,7 @@ feroceon_dma_inv_range:
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	.align	5
 | 
			
		||||
feroceon_range_dma_inv_range:
 | 
			
		||||
| 
						 | 
				
			
			@ -311,7 +311,7 @@ feroceon_range_dma_inv_range:
 | 
			
		|||
	mcr	p15, 5, r0, c15, c14, 0		@ D inv range start
 | 
			
		||||
	mcr	p15, 5, r1, c15, c14, 1		@ D inv range top
 | 
			
		||||
	msr	cpsr_c, r2			@ restore interrupts
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_clean_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -331,7 +331,7 @@ feroceon_dma_clean_range:
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	.align	5
 | 
			
		||||
feroceon_range_dma_clean_range:
 | 
			
		||||
| 
						 | 
				
			
			@ -344,7 +344,7 @@ feroceon_range_dma_clean_range:
 | 
			
		|||
	mcr	p15, 5, r1, c15, c13, 1		@ D clean range top
 | 
			
		||||
	msr	cpsr_c, r2			@ restore interrupts
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_flush_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -362,7 +362,7 @@ ENTRY(feroceon_dma_flush_range)
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	.align	5
 | 
			
		||||
ENTRY(feroceon_range_dma_flush_range)
 | 
			
		||||
| 
						 | 
				
			
			@ -375,7 +375,7 @@ ENTRY(feroceon_range_dma_flush_range)
 | 
			
		|||
	mcr	p15, 5, r1, c15, c15, 1		@ D clean/inv range top
 | 
			
		||||
	msr	cpsr_c, r2			@ restore interrupts
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_map_area(start, size, dir)
 | 
			
		||||
| 
						 | 
				
			
			@ -412,7 +412,7 @@ ENDPROC(feroceon_range_dma_map_area)
 | 
			
		|||
 *	- dir	- DMA direction
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(feroceon_dma_unmap_area)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(feroceon_dma_unmap_area)
 | 
			
		||||
 | 
			
		||||
	.globl	feroceon_flush_kern_cache_louis
 | 
			
		||||
| 
						 | 
				
			
			@ -461,7 +461,7 @@ ENTRY(cpu_feroceon_dcache_clean_area)
 | 
			
		|||
	bhi	1b
 | 
			
		||||
#endif
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* =============================== PageTable ============================== */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -490,9 +490,9 @@ ENTRY(cpu_feroceon_switch_mm)
 | 
			
		|||
 | 
			
		||||
	mcr	p15, 0, r0, c2, c0, 0		@ load page table pointer
 | 
			
		||||
	mcr	p15, 0, ip, c8, c7, 0		@ invalidate I & D TLBs
 | 
			
		||||
	mov	pc, r2
 | 
			
		||||
	ret	r2
 | 
			
		||||
#else
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -512,7 +512,7 @@ ENTRY(cpu_feroceon_set_pte_ext)
 | 
			
		|||
#endif
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* Suspend/resume support: taken from arch/arm/mm/proc-arm926.S */
 | 
			
		||||
.globl	cpu_feroceon_suspend_size
 | 
			
		||||
| 
						 | 
				
			
			@ -554,7 +554,7 @@ __feroceon_setup:
 | 
			
		|||
	mrc	p15, 0, r0, c1, c0		@ get control register v4
 | 
			
		||||
	bic	r0, r0, r5
 | 
			
		||||
	orr	r0, r0, r6
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
	.size	__feroceon_setup, . - __feroceon_setup
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -45,7 +45,7 @@
 | 
			
		|||
 * cpu_mohawk_proc_init()
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(cpu_mohawk_proc_init)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_mohawk_proc_fin()
 | 
			
		||||
| 
						 | 
				
			
			@ -55,7 +55,7 @@ ENTRY(cpu_mohawk_proc_fin)
 | 
			
		|||
	bic	r0, r0, #0x1800			@ ...iz...........
 | 
			
		||||
	bic	r0, r0, #0x0006			@ .............ca.
 | 
			
		||||
	mcr	p15, 0, r0, c1, c0, 0		@ disable caches
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_mohawk_reset(loc)
 | 
			
		||||
| 
						 | 
				
			
			@ -79,7 +79,7 @@ ENTRY(cpu_mohawk_reset)
 | 
			
		|||
	bic	ip, ip, #0x0007			@ .............cam
 | 
			
		||||
	bic	ip, ip, #0x1100			@ ...i...s........
 | 
			
		||||
	mcr	p15, 0, ip, c1, c0, 0		@ ctrl register
 | 
			
		||||
	mov	pc, r0
 | 
			
		||||
	ret	r0
 | 
			
		||||
ENDPROC(cpu_mohawk_reset)
 | 
			
		||||
	.popsection
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -93,7 +93,7 @@ ENTRY(cpu_mohawk_do_idle)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain write buffer
 | 
			
		||||
	mcr	p15, 0, r0, c7, c0, 4		@ wait for interrupt
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_icache_all()
 | 
			
		||||
| 
						 | 
				
			
			@ -103,7 +103,7 @@ ENTRY(cpu_mohawk_do_idle)
 | 
			
		|||
ENTRY(mohawk_flush_icache_all)
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(mohawk_flush_icache_all)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -128,7 +128,7 @@ __flush_whole_cache:
 | 
			
		|||
	tst	r2, #VM_EXEC
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 0		@ drain write buffer
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_user_cache_range(start, end, flags)
 | 
			
		||||
| 
						 | 
				
			
			@ -158,7 +158,7 @@ ENTRY(mohawk_flush_user_cache_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
	tst	r2, #VM_EXEC
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	coherent_kern_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -194,7 +194,7 @@ ENTRY(mohawk_coherent_user_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_kern_dcache_area(void *addr, size_t size)
 | 
			
		||||
| 
						 | 
				
			
			@ -214,7 +214,7 @@ ENTRY(mohawk_flush_kern_dcache_area)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_inv_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -240,7 +240,7 @@ mohawk_dma_inv_range:
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_clean_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -259,7 +259,7 @@ mohawk_dma_clean_range:
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_flush_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -277,7 +277,7 @@ ENTRY(mohawk_dma_flush_range)
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_map_area(start, size, dir)
 | 
			
		||||
| 
						 | 
				
			
			@ -300,7 +300,7 @@ ENDPROC(mohawk_dma_map_area)
 | 
			
		|||
 *	- dir	- DMA direction
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(mohawk_dma_unmap_area)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(mohawk_dma_unmap_area)
 | 
			
		||||
 | 
			
		||||
	.globl	mohawk_flush_kern_cache_louis
 | 
			
		||||
| 
						 | 
				
			
			@ -315,7 +315,7 @@ ENTRY(cpu_mohawk_dcache_clean_area)
 | 
			
		|||
	subs	r1, r1, #CACHE_DLINESIZE
 | 
			
		||||
	bhi	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_mohawk_switch_mm(pgd)
 | 
			
		||||
| 
						 | 
				
			
			@ -333,7 +333,7 @@ ENTRY(cpu_mohawk_switch_mm)
 | 
			
		|||
	orr	r0, r0, #0x18			@ cache the page table in L2
 | 
			
		||||
	mcr	p15, 0, r0, c2, c0, 0		@ load page table pointer
 | 
			
		||||
	mcr	p15, 0, ip, c8, c7, 0		@ invalidate I & D TLBs
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_mohawk_set_pte_ext(ptep, pte, ext)
 | 
			
		||||
| 
						 | 
				
			
			@ -346,7 +346,7 @@ ENTRY(cpu_mohawk_set_pte_ext)
 | 
			
		|||
	mov	r0, r0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 1		@ clean D entry
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
.globl	cpu_mohawk_suspend_size
 | 
			
		||||
.equ	cpu_mohawk_suspend_size, 4 * 6
 | 
			
		||||
| 
						 | 
				
			
			@ -400,7 +400,7 @@ __mohawk_setup:
 | 
			
		|||
	mrc	p15, 0, r0, c1, c0		@ get control register
 | 
			
		||||
	bic	r0, r0, r5
 | 
			
		||||
	orr	r0, r0, r6
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	.size	__mohawk_setup, . - __mohawk_setup
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,7 +38,7 @@
 | 
			
		|||
ENTRY(cpu_sa110_proc_init)
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c15, c1, 2		@ Enable clock switching
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_sa110_proc_fin()
 | 
			
		||||
| 
						 | 
				
			
			@ -50,7 +50,7 @@ ENTRY(cpu_sa110_proc_fin)
 | 
			
		|||
	bic	r0, r0, #0x1000			@ ...i............
 | 
			
		||||
	bic	r0, r0, #0x000e			@ ............wca.
 | 
			
		||||
	mcr	p15, 0, r0, c1, c0, 0		@ disable caches
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_sa110_reset(loc)
 | 
			
		||||
| 
						 | 
				
			
			@ -74,7 +74,7 @@ ENTRY(cpu_sa110_reset)
 | 
			
		|||
	bic	ip, ip, #0x000f			@ ............wcam
 | 
			
		||||
	bic	ip, ip, #0x1100			@ ...i...s........
 | 
			
		||||
	mcr	p15, 0, ip, c1, c0, 0		@ ctrl register
 | 
			
		||||
	mov	pc, r0
 | 
			
		||||
	ret	r0
 | 
			
		||||
ENDPROC(cpu_sa110_reset)
 | 
			
		||||
	.popsection
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -103,7 +103,7 @@ ENTRY(cpu_sa110_do_idle)
 | 
			
		|||
	mov	r0, r0				@ safety
 | 
			
		||||
	mov	r0, r0				@ safety
 | 
			
		||||
	mcr	p15, 0, r0, c15, c1, 2		@ enable clock switching
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* ================================= CACHE ================================ */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -121,7 +121,7 @@ ENTRY(cpu_sa110_dcache_clean_area)
 | 
			
		|||
	add	r0, r0, #DCACHELINESIZE
 | 
			
		||||
	subs	r1, r1, #DCACHELINESIZE
 | 
			
		||||
	bhi	1b
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* =============================== PageTable ============================== */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -141,7 +141,7 @@ ENTRY(cpu_sa110_switch_mm)
 | 
			
		|||
	mcr	p15, 0, ip, c8, c7, 0		@ invalidate I & D TLBs
 | 
			
		||||
	ldr	pc, [sp], #4
 | 
			
		||||
#else
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -157,7 +157,7 @@ ENTRY(cpu_sa110_set_pte_ext)
 | 
			
		|||
	mcr	p15, 0, r0, c7, c10, 1		@ clean D entry
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	.type	__sa110_setup, #function
 | 
			
		||||
__sa110_setup:
 | 
			
		||||
| 
						 | 
				
			
			@ -173,7 +173,7 @@ __sa110_setup:
 | 
			
		|||
	mrc	p15, 0, r0, c1, c0		@ get control register v4
 | 
			
		||||
	bic	r0, r0, r5
 | 
			
		||||
	orr	r0, r0, r6
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
	.size	__sa110_setup, . - __sa110_setup
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,7 +43,7 @@ ENTRY(cpu_sa1100_proc_init)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c15, c1, 2		@ Enable clock switching
 | 
			
		||||
	mcr	p15, 0, r0, c9, c0, 5		@ Allow read-buffer operations from userland
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_sa1100_proc_fin()
 | 
			
		||||
| 
						 | 
				
			
			@ -58,7 +58,7 @@ ENTRY(cpu_sa1100_proc_fin)
 | 
			
		|||
	bic	r0, r0, #0x1000			@ ...i............
 | 
			
		||||
	bic	r0, r0, #0x000e			@ ............wca.
 | 
			
		||||
	mcr	p15, 0, r0, c1, c0, 0		@ disable caches
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_sa1100_reset(loc)
 | 
			
		||||
| 
						 | 
				
			
			@ -82,7 +82,7 @@ ENTRY(cpu_sa1100_reset)
 | 
			
		|||
	bic	ip, ip, #0x000f			@ ............wcam
 | 
			
		||||
	bic	ip, ip, #0x1100			@ ...i...s........
 | 
			
		||||
	mcr	p15, 0, ip, c1, c0, 0		@ ctrl register
 | 
			
		||||
	mov	pc, r0
 | 
			
		||||
	ret	r0
 | 
			
		||||
ENDPROC(cpu_sa1100_reset)
 | 
			
		||||
	.popsection
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -113,7 +113,7 @@ ENTRY(cpu_sa1100_do_idle)
 | 
			
		|||
	mcr	p15, 0, r0, c15, c8, 2		@ wait for interrupt
 | 
			
		||||
	mov	r0, r0				@ safety
 | 
			
		||||
	mcr	p15, 0, r0, c15, c1, 2		@ enable clock switching
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* ================================= CACHE ================================ */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -131,7 +131,7 @@ ENTRY(cpu_sa1100_dcache_clean_area)
 | 
			
		|||
	add	r0, r0, #DCACHELINESIZE
 | 
			
		||||
	subs	r1, r1, #DCACHELINESIZE
 | 
			
		||||
	bhi	1b
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* =============================== PageTable ============================== */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -152,7 +152,7 @@ ENTRY(cpu_sa1100_switch_mm)
 | 
			
		|||
	mcr	p15, 0, ip, c8, c7, 0		@ invalidate I & D TLBs
 | 
			
		||||
	ldr	pc, [sp], #4
 | 
			
		||||
#else
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -168,7 +168,7 @@ ENTRY(cpu_sa1100_set_pte_ext)
 | 
			
		|||
	mcr	p15, 0, r0, c7, c10, 1		@ clean D entry
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ drain WB
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
.globl	cpu_sa1100_suspend_size
 | 
			
		||||
.equ	cpu_sa1100_suspend_size, 4 * 3
 | 
			
		||||
| 
						 | 
				
			
			@ -211,7 +211,7 @@ __sa1100_setup:
 | 
			
		|||
	mrc	p15, 0, r0, c1, c0		@ get control register v4
 | 
			
		||||
	bic	r0, r0, r5
 | 
			
		||||
	orr	r0, r0, r6
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
	.size	__sa1100_setup, . - __sa1100_setup
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,14 +36,14 @@
 | 
			
		|||
#define PMD_FLAGS_SMP	PMD_SECT_WBWA|PMD_SECT_S
 | 
			
		||||
 | 
			
		||||
ENTRY(cpu_v6_proc_init)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
ENTRY(cpu_v6_proc_fin)
 | 
			
		||||
	mrc	p15, 0, r0, c1, c0, 0		@ ctrl register
 | 
			
		||||
	bic	r0, r0, #0x1000			@ ...i............
 | 
			
		||||
	bic	r0, r0, #0x0006			@ .............ca.
 | 
			
		||||
	mcr	p15, 0, r0, c1, c0, 0		@ disable caches
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	cpu_v6_reset(loc)
 | 
			
		||||
| 
						 | 
				
			
			@ -62,7 +62,7 @@ ENTRY(cpu_v6_reset)
 | 
			
		|||
	mcr	p15, 0, r1, c1, c0, 0		@ disable MMU
 | 
			
		||||
	mov	r1, #0
 | 
			
		||||
	mcr	p15, 0, r1, c7, c5, 4		@ ISB
 | 
			
		||||
	mov	pc, r0
 | 
			
		||||
	ret	r0
 | 
			
		||||
ENDPROC(cpu_v6_reset)
 | 
			
		||||
	.popsection
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -77,14 +77,14 @@ ENTRY(cpu_v6_do_idle)
 | 
			
		|||
	mov	r1, #0
 | 
			
		||||
	mcr	p15, 0, r1, c7, c10, 4		@ DWB - WFI may enter a low-power mode
 | 
			
		||||
	mcr	p15, 0, r1, c7, c0, 4		@ wait for interrupt
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
ENTRY(cpu_v6_dcache_clean_area)
 | 
			
		||||
1:	mcr	p15, 0, r0, c7, c10, 1		@ clean D entry
 | 
			
		||||
	add	r0, r0, #D_CACHE_LINE_SIZE
 | 
			
		||||
	subs	r1, r1, #D_CACHE_LINE_SIZE
 | 
			
		||||
	bhi	1b
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	cpu_v6_switch_mm(pgd_phys, tsk)
 | 
			
		||||
| 
						 | 
				
			
			@ -113,7 +113,7 @@ ENTRY(cpu_v6_switch_mm)
 | 
			
		|||
#endif
 | 
			
		||||
	mcr	p15, 0, r1, c13, c0, 1		@ set context ID
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	cpu_v6_set_pte_ext(ptep, pte, ext)
 | 
			
		||||
| 
						 | 
				
			
			@ -131,7 +131,7 @@ ENTRY(cpu_v6_set_pte_ext)
 | 
			
		|||
#ifdef CONFIG_MMU
 | 
			
		||||
	armv6_set_pte_ext cpu_v6
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* Suspend/resume support: taken from arch/arm/mach-s3c64xx/sleep.S */
 | 
			
		||||
.globl	cpu_v6_suspend_size
 | 
			
		||||
| 
						 | 
				
			
			@ -241,7 +241,7 @@ __v6_setup:
 | 
			
		|||
	mcreq	p15, 0, r5, c1, c0, 1		@ write aux control reg
 | 
			
		||||
	orreq	r0, r0, #(1 << 21)		@ low interrupt latency configuration
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr				@ return to head.S:__ret
 | 
			
		||||
	ret	lr				@ return to head.S:__ret
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 *         V X F   I D LR
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -59,7 +59,7 @@ ENTRY(cpu_v7_switch_mm)
 | 
			
		|||
	mcr	p15, 0, r0, c2, c0, 0		@ set TTB 0
 | 
			
		||||
	isb
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	bx	lr
 | 
			
		||||
ENDPROC(cpu_v7_switch_mm)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -106,7 +106,7 @@ ENTRY(cpu_v7_set_pte_ext)
 | 
			
		|||
	ALT_SMP(W(nop))
 | 
			
		||||
	ALT_UP (mcr	p15, 0, r0, c7, c10, 1)		@ flush_pte
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	bx	lr
 | 
			
		||||
ENDPROC(cpu_v7_set_pte_ext)
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,6 +19,7 @@
 | 
			
		|||
 * along with this program; if not, write to the Free Software
 | 
			
		||||
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 | 
			
		||||
 */
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
 | 
			
		||||
#define TTB_IRGN_NC	(0 << 8)
 | 
			
		||||
#define TTB_IRGN_WBWA	(1 << 8)
 | 
			
		||||
| 
						 | 
				
			
			@ -61,7 +62,7 @@ ENTRY(cpu_v7_switch_mm)
 | 
			
		|||
	mcrr	p15, 0, rpgdl, rpgdh, c2		@ set TTB 0
 | 
			
		||||
	isb
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(cpu_v7_switch_mm)
 | 
			
		||||
 | 
			
		||||
#ifdef __ARMEB__
 | 
			
		||||
| 
						 | 
				
			
			@ -92,7 +93,7 @@ ENTRY(cpu_v7_set_pte_ext)
 | 
			
		|||
	ALT_SMP(W(nop))
 | 
			
		||||
	ALT_UP (mcr	p15, 0, r0, c7, c10, 1)		@ flush_pte
 | 
			
		||||
#endif
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(cpu_v7_set_pte_ext)
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,7 +26,7 @@
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
ENTRY(cpu_v7_proc_init)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(cpu_v7_proc_init)
 | 
			
		||||
 | 
			
		||||
ENTRY(cpu_v7_proc_fin)
 | 
			
		||||
| 
						 | 
				
			
			@ -34,7 +34,7 @@ ENTRY(cpu_v7_proc_fin)
 | 
			
		|||
	bic	r0, r0, #0x1000			@ ...i............
 | 
			
		||||
	bic	r0, r0, #0x0006			@ .............ca.
 | 
			
		||||
	mcr	p15, 0, r0, c1, c0, 0		@ disable caches
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(cpu_v7_proc_fin)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -71,20 +71,20 @@ ENDPROC(cpu_v7_reset)
 | 
			
		|||
ENTRY(cpu_v7_do_idle)
 | 
			
		||||
	dsb					@ WFI may enter a low-power mode
 | 
			
		||||
	wfi
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(cpu_v7_do_idle)
 | 
			
		||||
 | 
			
		||||
ENTRY(cpu_v7_dcache_clean_area)
 | 
			
		||||
	ALT_SMP(W(nop))			@ MP extensions imply L1 PTW
 | 
			
		||||
	ALT_UP_B(1f)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
1:	dcache_line_size r2, r3
 | 
			
		||||
2:	mcr	p15, 0, r0, c7, c10, 1		@ clean D entry
 | 
			
		||||
	add	r0, r0, r2
 | 
			
		||||
	subs	r1, r1, r2
 | 
			
		||||
	bhi	2b
 | 
			
		||||
	dsb	ishst
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(cpu_v7_dcache_clean_area)
 | 
			
		||||
 | 
			
		||||
	string	cpu_v7_name, "ARMv7 Processor"
 | 
			
		||||
| 
						 | 
				
			
			@ -163,7 +163,7 @@ ENTRY(cpu_pj4b_do_idle)
 | 
			
		|||
	dsb					@ WFI may enter a low-power mode
 | 
			
		||||
	wfi
 | 
			
		||||
	dsb					@barrier
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(cpu_pj4b_do_idle)
 | 
			
		||||
#else
 | 
			
		||||
	globl_equ	cpu_pj4b_do_idle,  	cpu_v7_do_idle
 | 
			
		||||
| 
						 | 
				
			
			@ -407,7 +407,7 @@ __v7_setup:
 | 
			
		|||
	bic	r0, r0, r5			@ clear bits them
 | 
			
		||||
	orr	r0, r0, r6			@ set them
 | 
			
		||||
 THUMB(	orr	r0, r0, #1 << 30	)	@ Thumb exceptions
 | 
			
		||||
	mov	pc, lr				@ return to head.S:__ret
 | 
			
		||||
	ret	lr				@ return to head.S:__ret
 | 
			
		||||
ENDPROC(__v7_setup)
 | 
			
		||||
 | 
			
		||||
	.align	2
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,11 +16,11 @@
 | 
			
		|||
#include "proc-macros.S"
 | 
			
		||||
 | 
			
		||||
ENTRY(cpu_v7m_proc_init)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(cpu_v7m_proc_init)
 | 
			
		||||
 | 
			
		||||
ENTRY(cpu_v7m_proc_fin)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(cpu_v7m_proc_fin)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -34,7 +34,7 @@ ENDPROC(cpu_v7m_proc_fin)
 | 
			
		|||
 */
 | 
			
		||||
	.align	5
 | 
			
		||||
ENTRY(cpu_v7m_reset)
 | 
			
		||||
	mov	pc, r0
 | 
			
		||||
	ret	r0
 | 
			
		||||
ENDPROC(cpu_v7m_reset)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -46,18 +46,18 @@ ENDPROC(cpu_v7m_reset)
 | 
			
		|||
 */
 | 
			
		||||
ENTRY(cpu_v7m_do_idle)
 | 
			
		||||
	wfi
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(cpu_v7m_do_idle)
 | 
			
		||||
 | 
			
		||||
ENTRY(cpu_v7m_dcache_clean_area)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(cpu_v7m_dcache_clean_area)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * There is no MMU, so here is nothing to do.
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(cpu_v7m_switch_mm)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(cpu_v7m_switch_mm)
 | 
			
		||||
 | 
			
		||||
.globl	cpu_v7m_suspend_size
 | 
			
		||||
| 
						 | 
				
			
			@ -65,11 +65,11 @@ ENDPROC(cpu_v7m_switch_mm)
 | 
			
		|||
 | 
			
		||||
#ifdef CONFIG_ARM_CPU_SUSPEND
 | 
			
		||||
ENTRY(cpu_v7m_do_suspend)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(cpu_v7m_do_suspend)
 | 
			
		||||
 | 
			
		||||
ENTRY(cpu_v7m_do_resume)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(cpu_v7m_do_resume)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -120,7 +120,7 @@ __v7m_setup:
 | 
			
		|||
	ldr	r12, [r0, V7M_SCB_CCR]	@ system control register
 | 
			
		||||
	orr	r12, #V7M_SCB_CCR_STKALIGN
 | 
			
		||||
	str	r12, [r0, V7M_SCB_CCR]
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(__v7m_setup)
 | 
			
		||||
 | 
			
		||||
	.align 2
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -83,7 +83,7 @@
 | 
			
		|||
 * Nothing too exciting at the moment
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(cpu_xsc3_proc_init)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_xsc3_proc_fin()
 | 
			
		||||
| 
						 | 
				
			
			@ -93,7 +93,7 @@ ENTRY(cpu_xsc3_proc_fin)
 | 
			
		|||
	bic	r0, r0, #0x1800			@ ...IZ...........
 | 
			
		||||
	bic	r0, r0, #0x0006			@ .............CA.
 | 
			
		||||
	mcr	p15, 0, r0, c1, c0, 0		@ disable caches
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_xsc3_reset(loc)
 | 
			
		||||
| 
						 | 
				
			
			@ -119,7 +119,7 @@ ENTRY(cpu_xsc3_reset)
 | 
			
		|||
	@ CAUTION: MMU turned off from this point.  We count on the pipeline
 | 
			
		||||
	@ already containing those two last instructions to survive.
 | 
			
		||||
	mcr	p15, 0, ip, c8, c7, 0		@ invalidate I and D TLBs
 | 
			
		||||
	mov	pc, r0
 | 
			
		||||
	ret	r0
 | 
			
		||||
ENDPROC(cpu_xsc3_reset)
 | 
			
		||||
	.popsection
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -138,7 +138,7 @@ ENDPROC(cpu_xsc3_reset)
 | 
			
		|||
ENTRY(cpu_xsc3_do_idle)
 | 
			
		||||
	mov	r0, #1
 | 
			
		||||
	mcr	p14, 0, r0, c7, c0, 0		@ go to idle
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* ================================= CACHE ================================ */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -150,7 +150,7 @@ ENTRY(cpu_xsc3_do_idle)
 | 
			
		|||
ENTRY(xsc3_flush_icache_all)
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(xsc3_flush_icache_all)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -176,7 +176,7 @@ __flush_whole_cache:
 | 
			
		|||
	mcrne	p15, 0, ip, c7, c5, 0		@ invalidate L1 I cache and BTB
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ data write barrier
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c5, 4		@ prefetch flush
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_user_cache_range(start, end, vm_flags)
 | 
			
		||||
| 
						 | 
				
			
			@ -205,7 +205,7 @@ ENTRY(xsc3_flush_user_cache_range)
 | 
			
		|||
	mcrne	p15, 0, ip, c7, c5, 6		@ invalidate BTB
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ data write barrier
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c5, 4		@ prefetch flush
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	coherent_kern_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -232,7 +232,7 @@ ENTRY(xsc3_coherent_user_range)
 | 
			
		|||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate L1 I cache and BTB
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ data write barrier
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 4		@ prefetch flush
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_kern_dcache_area(void *addr, size_t size)
 | 
			
		||||
| 
						 | 
				
			
			@ -253,7 +253,7 @@ ENTRY(xsc3_flush_kern_dcache_area)
 | 
			
		|||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate L1 I cache and BTB
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ data write barrier
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 4		@ prefetch flush
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_inv_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -277,7 +277,7 @@ xsc3_dma_inv_range:
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ data write barrier
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_clean_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -294,7 +294,7 @@ xsc3_dma_clean_range:
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ data write barrier
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_flush_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -311,7 +311,7 @@ ENTRY(xsc3_dma_flush_range)
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ data write barrier
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_map_area(start, size, dir)
 | 
			
		||||
| 
						 | 
				
			
			@ -334,7 +334,7 @@ ENDPROC(xsc3_dma_map_area)
 | 
			
		|||
 *	- dir	- DMA direction
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(xsc3_dma_unmap_area)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(xsc3_dma_unmap_area)
 | 
			
		||||
 | 
			
		||||
	.globl	xsc3_flush_kern_cache_louis
 | 
			
		||||
| 
						 | 
				
			
			@ -348,7 +348,7 @@ ENTRY(cpu_xsc3_dcache_clean_area)
 | 
			
		|||
	add	r0, r0, #CACHELINESIZE
 | 
			
		||||
	subs	r1, r1, #CACHELINESIZE
 | 
			
		||||
	bhi	1b
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* =============================== PageTable ============================== */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -406,7 +406,7 @@ ENTRY(cpu_xsc3_set_pte_ext)
 | 
			
		|||
	orr	r2, r2, ip
 | 
			
		||||
 | 
			
		||||
	xscale_set_pte_ext_epilogue
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	.ltorg
 | 
			
		||||
	.align
 | 
			
		||||
| 
						 | 
				
			
			@ -478,7 +478,7 @@ __xsc3_setup:
 | 
			
		|||
	bic	r0, r0, r5			@ ..V. ..R. .... ..A.
 | 
			
		||||
	orr	r0, r0, r6			@ ..VI Z..S .... .C.M (mmu)
 | 
			
		||||
						@ ...I Z..S .... .... (uc)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	.size	__xsc3_setup, . - __xsc3_setup
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -118,7 +118,7 @@ ENTRY(cpu_xscale_proc_init)
 | 
			
		|||
	mrc	p15, 0, r1, c1, c0, 1
 | 
			
		||||
	bic	r1, r1, #1
 | 
			
		||||
	mcr	p15, 0, r1, c1, c0, 1
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_xscale_proc_fin()
 | 
			
		||||
| 
						 | 
				
			
			@ -128,7 +128,7 @@ ENTRY(cpu_xscale_proc_fin)
 | 
			
		|||
	bic	r0, r0, #0x1800			@ ...IZ...........
 | 
			
		||||
	bic	r0, r0, #0x0006			@ .............CA.
 | 
			
		||||
	mcr	p15, 0, r0, c1, c0, 0		@ disable caches
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * cpu_xscale_reset(loc)
 | 
			
		||||
| 
						 | 
				
			
			@ -160,7 +160,7 @@ ENTRY(cpu_xscale_reset)
 | 
			
		|||
	@ CAUTION: MMU turned off from this point. We count on the pipeline
 | 
			
		||||
	@ already containing those two last instructions to survive.
 | 
			
		||||
	mcr	p15, 0, ip, c8, c7, 0		@ invalidate I & D TLBs
 | 
			
		||||
	mov	pc, r0
 | 
			
		||||
	ret	r0
 | 
			
		||||
ENDPROC(cpu_xscale_reset)
 | 
			
		||||
	.popsection
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -179,7 +179,7 @@ ENDPROC(cpu_xscale_reset)
 | 
			
		|||
ENTRY(cpu_xscale_do_idle)
 | 
			
		||||
	mov	r0, #1
 | 
			
		||||
	mcr	p14, 0, r0, c7, c0, 0		@ Go to IDLE
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* ================================= CACHE ================================ */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -191,7 +191,7 @@ ENTRY(cpu_xscale_do_idle)
 | 
			
		|||
ENTRY(xscale_flush_icache_all)
 | 
			
		||||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ invalidate I cache
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(xscale_flush_icache_all)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -216,7 +216,7 @@ __flush_whole_cache:
 | 
			
		|||
	tst	r2, #VM_EXEC
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c5, 0		@ Invalidate I cache & BTB
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ Drain Write (& Fill) Buffer
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_user_cache_range(start, end, vm_flags)
 | 
			
		||||
| 
						 | 
				
			
			@ -245,7 +245,7 @@ ENTRY(xscale_flush_user_cache_range)
 | 
			
		|||
	tst	r2, #VM_EXEC
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c5, 6		@ Invalidate BTB
 | 
			
		||||
	mcrne	p15, 0, ip, c7, c10, 4		@ Drain Write (& Fill) Buffer
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	coherent_kern_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -269,7 +269,7 @@ ENTRY(xscale_coherent_kern_range)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ Invalidate I cache & BTB
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ Drain Write (& Fill) Buffer
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	coherent_user_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -291,7 +291,7 @@ ENTRY(xscale_coherent_user_range)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 6		@ Invalidate BTB
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ Drain Write (& Fill) Buffer
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	flush_kern_dcache_area(void *addr, size_t size)
 | 
			
		||||
| 
						 | 
				
			
			@ -312,7 +312,7 @@ ENTRY(xscale_flush_kern_dcache_area)
 | 
			
		|||
	mov	r0, #0
 | 
			
		||||
	mcr	p15, 0, r0, c7, c5, 0		@ Invalidate I cache & BTB
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ Drain Write (& Fill) Buffer
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_inv_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -336,7 +336,7 @@ xscale_dma_inv_range:
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ Drain Write (& Fill) Buffer
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_clean_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -353,7 +353,7 @@ xscale_dma_clean_range:
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ Drain Write (& Fill) Buffer
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_flush_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -371,7 +371,7 @@ ENTRY(xscale_dma_flush_range)
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r0, c7, c10, 4		@ Drain Write (& Fill) Buffer
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	dma_map_area(start, size, dir)
 | 
			
		||||
| 
						 | 
				
			
			@ -407,7 +407,7 @@ ENDPROC(xscale_80200_A0_A1_dma_map_area)
 | 
			
		|||
 *	- dir	- DMA direction
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(xscale_dma_unmap_area)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
ENDPROC(xscale_dma_unmap_area)
 | 
			
		||||
 | 
			
		||||
	.globl	xscale_flush_kern_cache_louis
 | 
			
		||||
| 
						 | 
				
			
			@ -458,7 +458,7 @@ ENTRY(cpu_xscale_dcache_clean_area)
 | 
			
		|||
	add	r0, r0, #CACHELINESIZE
 | 
			
		||||
	subs	r1, r1, #CACHELINESIZE
 | 
			
		||||
	bhi	1b
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/* =============================== PageTable ============================== */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -521,7 +521,7 @@ ENTRY(cpu_xscale_set_pte_ext)
 | 
			
		|||
	orr	r2, r2, ip
 | 
			
		||||
 | 
			
		||||
	xscale_set_pte_ext_epilogue
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	.ltorg
 | 
			
		||||
	.align
 | 
			
		||||
| 
						 | 
				
			
			@ -572,7 +572,7 @@ __xscale_setup:
 | 
			
		|||
	mrc	p15, 0, r0, c1, c0, 0		@ get control register
 | 
			
		||||
	bic	r0, r0, r5
 | 
			
		||||
	orr	r0, r0, r6
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
	.size	__xscale_setup, . - __xscale_setup
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,6 +18,7 @@
 | 
			
		|||
 */
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <linux/init.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
#include <asm/asm-offsets.h>
 | 
			
		||||
#include <asm/tlbflush.h>
 | 
			
		||||
#include "proc-macros.S"
 | 
			
		||||
| 
						 | 
				
			
			@ -37,7 +38,7 @@ ENTRY(fa_flush_user_tlb_range)
 | 
			
		|||
	vma_vm_mm ip, r2
 | 
			
		||||
	act_mm	r3				@ get current->active_mm
 | 
			
		||||
	eors	r3, ip, r3			@ == mm ?
 | 
			
		||||
	movne	pc, lr				@ no, we dont do anything
 | 
			
		||||
	retne	lr				@ no, we dont do anything
 | 
			
		||||
	mov	r3, #0
 | 
			
		||||
	mcr	p15, 0, r3, c7, c10, 4		@ drain WB
 | 
			
		||||
	bic	r0, r0, #0x0ff
 | 
			
		||||
| 
						 | 
				
			
			@ -47,7 +48,7 @@ ENTRY(fa_flush_user_tlb_range)
 | 
			
		|||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r3, c7, c10, 4		@ data write barrier
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ENTRY(fa_flush_kern_tlb_range)
 | 
			
		||||
| 
						 | 
				
			
			@ -61,7 +62,7 @@ ENTRY(fa_flush_kern_tlb_range)
 | 
			
		|||
	blo	1b
 | 
			
		||||
	mcr	p15, 0, r3, c7, c10, 4		@ data write barrier
 | 
			
		||||
	mcr	p15, 0, r3, c7, c5, 4		@ prefetch flush (isb)
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	__INITDATA
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,7 @@
 | 
			
		|||
 */
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <linux/init.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
#include <asm/asm-offsets.h>
 | 
			
		||||
#include <asm/tlbflush.h>
 | 
			
		||||
#include "proc-macros.S"
 | 
			
		||||
| 
						 | 
				
			
			@ -33,7 +34,7 @@ ENTRY(v4_flush_user_tlb_range)
 | 
			
		|||
	vma_vm_mm ip, r2
 | 
			
		||||
	act_mm	r3				@ get current->active_mm
 | 
			
		||||
	eors	r3, ip, r3				@ == mm ?
 | 
			
		||||
	movne	pc, lr				@ no, we dont do anything
 | 
			
		||||
	retne	lr				@ no, we dont do anything
 | 
			
		||||
.v4_flush_kern_tlb_range:
 | 
			
		||||
	bic	r0, r0, #0x0ff
 | 
			
		||||
	bic	r0, r0, #0xf00
 | 
			
		||||
| 
						 | 
				
			
			@ -41,7 +42,7 @@ ENTRY(v4_flush_user_tlb_range)
 | 
			
		|||
	add	r0, r0, #PAGE_SZ
 | 
			
		||||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	v4_flush_kern_tlb_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,7 @@
 | 
			
		|||
 */
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <linux/init.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
#include <asm/asm-offsets.h>
 | 
			
		||||
#include <asm/tlbflush.h>
 | 
			
		||||
#include "proc-macros.S"
 | 
			
		||||
| 
						 | 
				
			
			@ -33,7 +34,7 @@ ENTRY(v4wb_flush_user_tlb_range)
 | 
			
		|||
	vma_vm_mm ip, r2
 | 
			
		||||
	act_mm	r3				@ get current->active_mm
 | 
			
		||||
	eors	r3, ip, r3				@ == mm ?
 | 
			
		||||
	movne	pc, lr				@ no, we dont do anything
 | 
			
		||||
	retne	lr				@ no, we dont do anything
 | 
			
		||||
	vma_vm_flags r2, r2
 | 
			
		||||
	mcr	p15, 0, r3, c7, c10, 4		@ drain WB
 | 
			
		||||
	tst	r2, #VM_EXEC
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +45,7 @@ ENTRY(v4wb_flush_user_tlb_range)
 | 
			
		|||
	add	r0, r0, #PAGE_SZ
 | 
			
		||||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *	v4_flush_kern_tlb_range(start, end)
 | 
			
		||||
| 
						 | 
				
			
			@ -65,7 +66,7 @@ ENTRY(v4wb_flush_kern_tlb_range)
 | 
			
		|||
	add	r0, r0, #PAGE_SZ
 | 
			
		||||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	__INITDATA
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,7 @@
 | 
			
		|||
 */
 | 
			
		||||
#include <linux/linkage.h>
 | 
			
		||||
#include <linux/init.h>
 | 
			
		||||
#include <asm/assembler.h>
 | 
			
		||||
#include <asm/asm-offsets.h>
 | 
			
		||||
#include <asm/tlbflush.h>
 | 
			
		||||
#include "proc-macros.S"
 | 
			
		||||
| 
						 | 
				
			
			@ -32,7 +33,7 @@ ENTRY(v4wbi_flush_user_tlb_range)
 | 
			
		|||
	vma_vm_mm ip, r2
 | 
			
		||||
	act_mm	r3				@ get current->active_mm
 | 
			
		||||
	eors	r3, ip, r3			@ == mm ?
 | 
			
		||||
	movne	pc, lr				@ no, we dont do anything
 | 
			
		||||
	retne	lr				@ no, we dont do anything
 | 
			
		||||
	mov	r3, #0
 | 
			
		||||
	mcr	p15, 0, r3, c7, c10, 4		@ drain WB
 | 
			
		||||
	vma_vm_flags r2, r2
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +45,7 @@ ENTRY(v4wbi_flush_user_tlb_range)
 | 
			
		|||
	add	r0, r0, #PAGE_SZ
 | 
			
		||||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
ENTRY(v4wbi_flush_kern_tlb_range)
 | 
			
		||||
	mov	r3, #0
 | 
			
		||||
| 
						 | 
				
			
			@ -56,7 +57,7 @@ ENTRY(v4wbi_flush_kern_tlb_range)
 | 
			
		|||
	add	r0, r0, #PAGE_SZ
 | 
			
		||||
	cmp	r0, r1
 | 
			
		||||
	blo	1b
 | 
			
		||||
	mov	pc, lr
 | 
			
		||||
	ret	lr
 | 
			
		||||
 | 
			
		||||
	__INITDATA
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
Some files were not shown because too many files have changed in this diff Show more
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue