1/* $NetBSD: start.S,v 1.1 2002/11/09 06:20:41 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 46LEAF(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 831: 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 97XLEAF(halt) 98 li t0,0xBFC00000 /* transfer back to firmware */ 99 j t0 100END(start) 101 102 103 104LEAF(__main) 105 j ra 106END(__main) 107 108LEAF(_rtt) 109 li t0,0xBFC00000 110 j t0 111END(_rtt) 112