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