/* * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 1994, 1995 Waldorf Electronics * Written by Ralf Baechle and Andreas Busse * Copyright (C) 1995 - 1999 Ralf Baechle * Copyright (C) 1996 Paul M. Antoine * Modified for DECStation and hence R3000 support by Paul M. Antoine * Further modifications by David S. Miller and Harald Koerfgen * Copyright (C) 1999 Silicon Graphics, Inc. */ #include #include .set noreorder .cprestore LEAF(start) start: /* Save boot rom start args */ move s0, a0 move s1, a1 move s2, a2 move s3, a3 #ifdef CONFIG_MIPS_ZBOOT_APPENDED_DTB PTR_LA t0, __appended_dtb #ifdef CONFIG_CPU_BIG_ENDIAN li t1, 0xd00dfeed #else li t1, 0xedfe0dd0 #endif lw t2, (t0) bne t1, t2, not_found nop move s1, t0 PTR_LI s0, -2 not_found: #endif /* Clear BSS */ PTR_LA a0, _edata PTR_LA a2, _end 1: sw zero, 0(a0) bne a2, a0, 1b addiu a0, a0, 4 PTR_LA a0, (.heap) /* heap address */ PTR_LA sp, (.stack + 8192) /* stack address */ PTR_LA ra, 2f PTR_LA k0, decompress_kernel jr k0 nop 2: move a0, s0 move a1, s1 move a2, s2 move a3, s3 PTR_LI k0, KERNEL_ENTRY jr k0 nop 3: b 3b nop END(start) .comm .heap,BOOT_HEAP_SIZE,4 .comm .stack,4096*2,4