Merge branch 'next' into for-linus
[linux-2.6-microblaze.git] / arch / mips / boot / compressed / head.S
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         LEAF(start)
19         /* Save boot rom start args */
20         move    s0, a0
21         move    s1, a1
22         move    s2, a2
23         move    s3, a3
24
25         /* Clear BSS */
26         PTR_LA  a0, _edata
27         PTR_LA  a2, _end
28 1:      sw      zero, 0(a0)
29         addiu   a0, a0, 4
30         bne     a2, a0, 1b
31
32         PTR_LA  a0, (.heap)          /* heap address */
33         PTR_LA  sp, (.stack + 8192)  /* stack address */
34
35         PTR_LA  t9, decompress_kernel
36         jalr    t9
37
38 2:
39         move    a0, s0
40         move    a1, s1
41         move    a2, s2
42         move    a3, s3
43         PTR_LI  t9, KERNEL_ENTRY
44         jalr    t9
45
46 3:
47         b       3b
48
49         END(start)
50
51         .comm .heap,BOOT_HEAP_SIZE,4
52         .comm .stack,4096*2,4