1 /* $NetBSD: srt0.s,v 1.1.1.1 1998/06/09 07:53:06 dbj Exp $ */
3 * Copyright (c) 1994 Rolf Grossmann
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 3. All advertising materials mentioning features or use of this software
15 * must display the following acknowledgement:
16 * This product includes software developed by Rolf Grossmann.
17 * 4. The name of the author may not be used to endorse or promote products
18 * derived from this software without specific prior written permission
20 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
21 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
22 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
23 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
24 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
25 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
29 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 #include <machine/asm.h>
35 * Startup code for standalone system
39 ASENTRY_NOPROFILE
(start
)
40 || clear bss
(this should
not hurt us i.e. cause an exception
)
41 movel
#_C_LABEL(edata),%a2 | start of BSS
42 movel
#_C_LABEL(end),%a3 | end
44 clrb
%a2@
+ | clear BSS
46 bne Lclr | no
, keep going
49 movc
%d0
,%cacr | clear
and disable on-chip cache
(s
)
51 || catch exceptions myself
53 movel
%a3
,save_vbr | save register for restoration
55 movel
%a3@
(4),%a4@
(4) | copy mg
, just for sure
56 movel
%a3@
(180),%a4@
(180) | copy vector for
trap #13
57 movel
%a3@
(124),%a4@
(124) | copy vector for int
7
58 movec
%a4
,%vbr | use the new table
61 movel
%a3@
(4),_C_LABEL
(mg
)
63 || make sure we disallow interrupts
67 movel
%sp@
(4),%sp@
- | copy the argument we got
68 jsr _C_LABEL
(main
) | call C
71 || restore prom vectors
75 || return kernel start address
(still in d0
)
80 movec
%a0
,%vbr | restore prom vbr
83 trap #13 | halt the system
84 bra hloop |
and do
not allow continuation
86 ASENTRY_NOPROFILE
(astrap
)
87 moveml
%d0-
%d7
/%a0-
%a7
,%sp@
- | save all registers
89 movel
%sp
,%sp@
- | push pointer to registers
90 jsr _C_LABEL
(trap) | call C to handle things
(dump regs
)
94 moveml
%sp@
+,%d0-
%d7
/%a0-
%a7
106 VECTOR
(astrap
); VECTOR
(astrap
); VECTOR
(astrap
); VECTOR
(astrap
); \
107 VECTOR
(astrap
); VECTOR
(astrap
); VECTOR
(astrap
); VECTOR
(astrap
); \
108 VECTOR
(astrap
); VECTOR
(astrap
); VECTOR
(astrap
); VECTOR
(astrap
); \
109 VECTOR
(astrap
); VECTOR
(astrap
); VECTOR
(astrap
); VECTOR
(astrap
);