1 /* $NetBSD: start.S,v 1.2 2003/02/07 17:52:08 cgd Exp $ */ 2 3 /* 4 * Copyright 2000, 2001 5 * Broadcom Corporation. All rights reserved. 6 * 7 * This software is furnished under license and may be used and copied only 8 * in accordance with the following terms and conditions. Subject to these 9 * conditions, you may download, copy, install, use, modify and distribute 10 * modified or unmodified copies of this software in source and/or binary 11 * form. No title or ownership is transferred hereby. 12 * 13 * 1) Any source code used, modified or distributed must reproduce and 14 * retain this copyright notice and list of conditions as they appear in 15 * the source file. 16 * 17 * 2) No right is granted to use any trade name, trademark, or logo of 18 * Broadcom Corporation. The "Broadcom Corporation" name may not be 19 * used to endorse or promote products derived from this software 20 * without the prior written permission of Broadcom Corporation. 21 * 22 * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR IMPLIED 23 * WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF 24 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR 25 * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM BE LIABLE 26 * FOR ANY DAMAGES WHATSOEVER, AND IN PARTICULAR, BROADCOM SHALL NOT BE 27 * LIABLE FOR DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 28 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 29 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 30 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 31 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 32 * OR OTHERWISE), EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33 */ 34 35 #define STACK_SIZE 8192 36 37 #include "include/asm.h" 38 39 40 .bss 41 42 .comm stack_bottom,STACK_SIZE 43 44 .text 45 46 LEAF(start) 47 48 la gp,_gp 49 50 la sp,stack_bottom+STACK_SIZE-32 51 52 /* 53 * On entry: a0 = the firmware handle, a2 = firmware's 54 * for secondary bootstraps, a1 is the booted device handle 55 * Don't trash a0..a3 until main is called! 56 */ 57 58 59 #if defined(STANDALONE_PROGRAM) 60 /* 61 * This should not be used anywhere. 62 */ 63 64 #error "don't do this." 65 66 #else /* defined(STANDALONE_PROGRAM) */ 67 68 #if !defined(PRIMARY_BOOTBLOCK) && !defined(UNIFIED_BOOTBLOCK) 69 70 la sp,start 71 72 #endif /* !defined(PRIMARY_BOOTBLOCK) && !defined(UNIFIED_BOOTBLOCK) */ 73 74 #endif /* defined(STANDALONE_PROGRAM) */ 75 76 /* 77 * Zero BSS 78 */ 79 80 la t0,_edata /* t0 = address */ 81 la t1,_end 82 83 1: sw zero,0(t0) 84 sw zero,4(t0) 85 sw zero,8(t0) 86 sw zero,16(t0) 87 add t0,16 88 ble t0,t1,1b 89 90 91 /* 92 * Run the main program. 93 */ 94 95 jal main /* transfer to C */ 96 97 XLEAF(halt) 98 li t0,0xBFC00000 /* transfer back to firmware */ 99 j t0 100 END(start) 101 102 103 104 LEAF(__main) 105 j ra 106 END(__main) 107 108 LEAF(_rtt) 109 li t0,0xBFC00000 110 j t0 111 END(_rtt) 112