Expand PMF_FN_* macros.
[netbsd-mini2440.git] / sys / arch / next68k / stand / boot / srt0.s
blob5b8ec9139e2e878974589b3e3db85e8a45dc544d
1 /* $NetBSD: srt0.s,v 1.1.1.1 1998/06/09 07:53:06 dbj Exp $ */
2 /*
3 * Copyright (c) 1994 Rolf Grossmann
4 * All rights reserved.
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
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
38 .text
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
43 Lclr:
44 clrb %a2@+ | clear BSS
45 cmpl %a2,%a3 | done?
46 bne Lclr | no, keep going
48 movl #0x0808,%d0
49 movc %d0,%cacr | clear and disable on-chip cache(s)
51 || catch exceptions myself
52 movec %vbr,%a3
53 movel %a3,save_vbr | save register for restoration
54 lea vectbl,%a4
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
60 || save mg as pi
61 movel %a3@(4),_C_LABEL(mg)
63 || make sure we disallow interrupts
64 movew #0x2600,%sr
66 || away we go
67 movel %sp@(4),%sp@- | copy the argument we got
68 jsr _C_LABEL(main) | call C
69 addql #4,%sp
71 || restore prom vectors
72 movel save_vbr,%a0
73 movec %a0,%vbr
75 || return kernel start address (still in d0)
76 rts
78 ENTRY(_halt)
79 movel save_vbr,%a0
80 movec %a0,%vbr | restore prom vbr
81 hloop:
82 movel #halt,%d0
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)
91 addql #4,%sp
92 tstl %d0
93 jeq Lstop
94 moveml %sp@+,%d0-%d7/%a0-%a7
95 rte
96 Lstop:
97 bra Lstop | stay here
99 .data
100 save_vbr:
101 .long 0
102 halt:
103 .asciz "-h"
105 #define TRAP16 \
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);
111 vectbl:
112 TRAP16
113 TRAP16
114 TRAP16
115 TRAP16
116 TRAP16
117 TRAP16
118 TRAP16
119 TRAP16
120 TRAP16
121 TRAP16
122 TRAP16
123 TRAP16
124 TRAP16
125 TRAP16
126 TRAP16
127 TRAP16