diff options
Diffstat (limited to 'arch/mips/boot/compressed/head.S')
-rw-r--r-- | arch/mips/boot/compressed/head.S | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/arch/mips/boot/compressed/head.S b/arch/mips/boot/compressed/head.S new file mode 100644 index 000000000000..4e65a8420bee --- /dev/null +++ b/arch/mips/boot/compressed/head.S | |||
@@ -0,0 +1,56 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 1994, 1995 Waldorf Electronics | ||
7 | * Written by Ralf Baechle and Andreas Busse | ||
8 | * Copyright (C) 1995 - 1999 Ralf Baechle | ||
9 | * Copyright (C) 1996 Paul M. Antoine | ||
10 | * Modified for DECStation and hence R3000 support by Paul M. Antoine | ||
11 | * Further modifications by David S. Miller and Harald Koerfgen | ||
12 | * Copyright (C) 1999 Silicon Graphics, Inc. | ||
13 | */ | ||
14 | |||
15 | #include <asm/asm.h> | ||
16 | #include <asm/regdef.h> | ||
17 | |||
18 | .set noreorder | ||
19 | .cprestore | ||
20 | LEAF(start) | ||
21 | start: | ||
22 | /* Save boot rom start args */ | ||
23 | move s0, a0 | ||
24 | move s1, a1 | ||
25 | move s2, a2 | ||
26 | move s3, a3 | ||
27 | |||
28 | /* Clear BSS */ | ||
29 | PTR_LA a0, _edata | ||
30 | PTR_LA a2, _end | ||
31 | 1: sw zero, 0(a0) | ||
32 | bne a2, a0, 1b | ||
33 | addiu a0, a0, 4 | ||
34 | |||
35 | PTR_LA a0, (.heap) /* heap address */ | ||
36 | PTR_LA sp, (.stack + 8192) /* stack address */ | ||
37 | |||
38 | PTR_LA ra, 2f | ||
39 | PTR_LA k0, decompress_kernel | ||
40 | jr k0 | ||
41 | nop | ||
42 | 2: | ||
43 | move a0, s0 | ||
44 | move a1, s1 | ||
45 | move a2, s2 | ||
46 | move a3, s3 | ||
47 | PTR_LI k0, KERNEL_ENTRY | ||
48 | jr k0 | ||
49 | nop | ||
50 | 3: | ||
51 | b 3b | ||
52 | nop | ||
53 | END(start) | ||
54 | |||
55 | .comm .heap,BOOT_HEAP_SIZE,4 | ||
56 | .comm .stack,4096*2,4 | ||