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