mirror of https://gitee.com/openkylin/linux.git
73 lines
1.3 KiB
ArmAsm
73 lines
1.3 KiB
ArmAsm
/*
|
|
* 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 <asm/asm.h>
|
|
#include <asm/regdef.h>
|
|
|
|
.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
|