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