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