| /* | 
 |  * linux/arch/arm/boot/compressed/head.S | 
 |  * | 
 |  * Copyright (C) 1999, 2000, 2001 Nexus Electronics Ltd | 
 |  */ | 
 |  | 
 |  | 
 | 		/* There are three different ways the kernel can be | 
 | 		   booted on a 7500 system: from Angel (loaded in RAM), from | 
 | 		   16-bit ROM or from 32-bit Flash.  Luckily, a single kernel | 
 | 		   image does for them all. */ | 
 | 		/* This branch is taken if the CPU memory width matches the | 
 | 		   actual device in use.  The default at power on is 16 bits | 
 | 		   so we must be prepared for a mismatch. */ | 
 | 		.section ".start", "ax" | 
 | 2: | 
 | 		b	1f | 
 | 		.word	0xffff | 
 | 		.word	0xb632		@ mov r11, #0x03200000 | 
 | 		.word	0xe3a0 | 
 | 		.word	0x0000		@ mov r0, #0 | 
 | 		.word	0xe3a0 | 
 | 		.word	0x0080		@ strb r0, [r11, #0x80] | 
 | 		.word	0xe5cb | 
 | 		.word	0xf000		@ mov pc, #0 | 
 | 		.word	0xe3a0 | 
 | 1: | 
 | 		adr	r1, 2b | 
 | 		teq	r1, #0 | 
 | 		bne	.Langel | 
 | 		/* This is a direct-from-ROM boot.  Copy the kernel into  | 
 | 		   RAM and run it there. */ | 
 | 		mov	r0, #0x30 | 
 | 		mcr	p15, 0, r0, c1, c0, 0 | 
 | 		mov	r0, #0x13 | 
 | 		msr	cpsr_cxsf, r0 | 
 | 		mov	r12, #0x03000000	@ point to LEDs | 
 | 		orr	r12, r12, #0x00020000 | 
 | 		orr	r12, r12, #0xba00 | 
 | 		mov	r0, #0x5500 | 
 | 		str	r0, [r12] | 
 | 		mov	r0, #0x10000000 | 
 | 		orr	r0, r0, #0x8000 | 
 | 		mov	r4, r0 | 
 | 		ldr	r2, =_end | 
 | 2: | 
 | 		ldr	r3, [r1], #4 | 
 | 		str	r3, [r0], #4 | 
 | 		teq	r0, r2 | 
 | 		bne	2b | 
 | 		mov	r0, #0xff00 | 
 | 		str	r0, [r12] | 
 | 1:	 | 
 | 		mov	r12, #0x03000000	@ point to LEDs | 
 | 		orr	r12, r12, #0x00020000 | 
 | 		orr	r12, r12, #0xba00 | 
 | 		mov	r0, #0xfe00 | 
 | 		str	r0, [r12] | 
 |  | 
 | 		adr	lr, 1f | 
 | 		mov	r0, #0 | 
 | 		mov	r1, #14		/* MACH_TYPE_CLPS7500 */ | 
 | 		mov	pc, lr | 
 | .Langel: | 
 | #ifdef CONFIG_ANGELBOOT | 
 | 		/* Call Angel to switch into SVC mode. */ | 
 | 		mov	r0, #0x17 | 
 | 		swi	0x123456 | 
 | #endif | 
 | 		/* Ensure all interrupts are off and MMU disabled */ | 
 | 		mrs	r0, cpsr | 
 | 		orr	r0, r0, #0xc0 | 
 | 		msr	cpsr_cxsf, r0 | 
 |  | 
 | 		adr	lr, 1b | 
 | 		orr	lr, lr, #0x10000000 | 
 | 		mov	r0, #0x30		@ MMU off | 
 | 		mcr	p15, 0, r0, c1, c0, 0 | 
 | 		mov	r0, r0 | 
 | 	 	mov	pc, lr | 
 |  | 
 | 		.ltorg | 
 |  | 
 | 1: | 
 | /* And the rest */ | 
 | #include "head.S" |