2 * linux/arch/arm/boot/compressed/head.S
4 * Copyright (C) 1999, 2000, 2001 Nexus Electronics Ltd
7 #include <linux/config.h>
9 /* There are three different ways the kernel can be
10 booted on a 7500 system: from Angel (loaded in RAM), from
11 16-bit ROM or from 32-bit Flash. Luckily, a single kernel
12 image does for them all. */
13 /* This branch is taken if the CPU memory width matches the
14 actual device in use. The default at power on is 16 bits
15 so we must be prepared for a mismatch. */
16 .section ".start", "ax"
20 .word 0xb632 @ mov r11, #0x03200000
22 .word 0x0000 @ mov r0, #0
24 .word 0x0080 @ strb r0, [r11, #0x80]
26 .word 0xf000 @ mov pc, #0
32 /* This is a direct-from-ROM boot. Copy the kernel into
33 RAM and run it there. */
35 mcr p15, 0, r0, c1, c0, 0
38 mov r12, #0x03000000 @ point to LEDs
39 orr r12, r12, #0x00020000
55 mov r12, #0x03000000 @ point to LEDs
56 orr r12, r12, #0x00020000
63 mov r1, #14 /* MACH_TYPE_CLPS7500 */
66 #ifdef CONFIG_ANGELBOOT
67 /* Call Angel to switch into SVC mode. */
71 /* Ensure all interrupts are off and MMU disabled */
77 orr lr, lr, #0x10000000
78 mov r0, #0x30 @ MMU off
79 mcr p15, 0, r0, c1, c0, 0