18c2ecf20Sopenharmony_ci/*
28c2ecf20Sopenharmony_ci * This file is subject to the terms and conditions of the GNU General Public
38c2ecf20Sopenharmony_ci * License.  See the file "COPYING" in the main directory of this archive
48c2ecf20Sopenharmony_ci * for more details.
58c2ecf20Sopenharmony_ci *
68c2ecf20Sopenharmony_ci * Copyright (C) 1994, 1995 Waldorf Electronics
78c2ecf20Sopenharmony_ci * Written by Ralf Baechle and Andreas Busse
88c2ecf20Sopenharmony_ci * Copyright (C) 1995 - 1999 Ralf Baechle
98c2ecf20Sopenharmony_ci * Copyright (C) 1996 Paul M. Antoine
108c2ecf20Sopenharmony_ci * Modified for DECStation and hence R3000 support by Paul M. Antoine
118c2ecf20Sopenharmony_ci * Further modifications by David S. Miller and Harald Koerfgen
128c2ecf20Sopenharmony_ci * Copyright (C) 1999 Silicon Graphics, Inc.
138c2ecf20Sopenharmony_ci */
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ci#include <asm/asm.h>
168c2ecf20Sopenharmony_ci#include <asm/regdef.h>
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ci	.set noreorder
198c2ecf20Sopenharmony_ci	.cprestore
208c2ecf20Sopenharmony_ci	LEAF(start)
218c2ecf20Sopenharmony_cistart:
228c2ecf20Sopenharmony_ci	/* Save boot rom start args */
238c2ecf20Sopenharmony_ci	move	s0, a0
248c2ecf20Sopenharmony_ci	move	s1, a1
258c2ecf20Sopenharmony_ci	move	s2, a2
268c2ecf20Sopenharmony_ci	move	s3, a3
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci	/* Clear BSS */
298c2ecf20Sopenharmony_ci	PTR_LA	a0, _edata
308c2ecf20Sopenharmony_ci	PTR_LA	a2, _end
318c2ecf20Sopenharmony_ci1:	sw	zero, 0(a0)
328c2ecf20Sopenharmony_ci	bne	a2, a0, 1b
338c2ecf20Sopenharmony_ci	 addiu	a0, a0, 4
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ci	PTR_LA	a0, (.heap)	     /* heap address */
368c2ecf20Sopenharmony_ci	PTR_LA	sp, (.stack + 8192)  /* stack address */
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ci	PTR_LA	ra, 2f
398c2ecf20Sopenharmony_ci	PTR_LA	k0, decompress_kernel
408c2ecf20Sopenharmony_ci	jr	k0
418c2ecf20Sopenharmony_ci	 nop
428c2ecf20Sopenharmony_ci2:
438c2ecf20Sopenharmony_ci	move	a0, s0
448c2ecf20Sopenharmony_ci	move	a1, s1
458c2ecf20Sopenharmony_ci	move	a2, s2
468c2ecf20Sopenharmony_ci	move	a3, s3
478c2ecf20Sopenharmony_ci	PTR_LI	k0, KERNEL_ENTRY
488c2ecf20Sopenharmony_ci	jr	k0
498c2ecf20Sopenharmony_ci	 nop
508c2ecf20Sopenharmony_ci3:
518c2ecf20Sopenharmony_ci	b	3b
528c2ecf20Sopenharmony_ci	 nop
538c2ecf20Sopenharmony_ci	END(start)
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_ci	.comm .heap,BOOT_HEAP_SIZE,4
568c2ecf20Sopenharmony_ci	.comm .stack,4096*2,4
57