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
57