machdep.c revision 1.11 1 /* $NetBSD: machdep.c,v 1.11 2003/11/14 16:52:40 tsutsui Exp $ */
2
3 /*
4 * Copyright (c) 1982, 1986, 1990, 1993
5 * The Regents of the University of California. All rights reserved.
6 *
7 * This code is derived from software contributed to Berkeley by
8 * the Systems Programming Group of the University of Utah Computer
9 * Science Department.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions and the following disclaimer.
16 * 2. Redistributions in binary form must reproduce the above copyright
17 * notice, this list of conditions and the following disclaimer in the
18 * documentation and/or other materials provided with the distribution.
19 * 3. Neither the name of the University nor the names of its contributors
20 * may be used to endorse or promote products derived from this software
21 * without specific prior written permission.
22 *
23 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 * SUCH DAMAGE.
34 *
35 * from: Utah $Hdr: machdep.c 1.10 92/06/18
36 *
37 * @(#)machdep.c 8.1 (Berkeley) 6/10/93
38 */
39 /*
40 * Copyright (c) 1988 University of Utah.
41 *
42 * This code is derived from software contributed to Berkeley by
43 * the Systems Programming Group of the University of Utah Computer
44 * Science Department.
45 *
46 * Redistribution and use in source and binary forms, with or without
47 * modification, are permitted provided that the following conditions
48 * are met:
49 * 1. Redistributions of source code must retain the above copyright
50 * notice, this list of conditions and the following disclaimer.
51 * 2. Redistributions in binary form must reproduce the above copyright
52 * notice, this list of conditions and the following disclaimer in the
53 * documentation and/or other materials provided with the distribution.
54 * 3. All advertising materials mentioning features or use of this software
55 * must display the following acknowledgement:
56 * This product includes software developed by the University of
57 * California, Berkeley and its contributors.
58 * 4. Neither the name of the University nor the names of its contributors
59 * may be used to endorse or promote products derived from this software
60 * without specific prior written permission.
61 *
62 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
63 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
64 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
65 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
66 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
67 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
68 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
69 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
70 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
71 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
72 * SUCH DAMAGE.
73 *
74 * from: Utah $Hdr: machdep.c 1.10 92/06/18
75 *
76 * @(#)machdep.c 8.1 (Berkeley) 6/10/93
77 */
78
79 #include <sys/param.h>
80 #include <lib/libsa/stand.h>
81 #include <hp300/stand/common/samachdep.h>
82
83 char *
84 getmachineid()
85 {
86 extern int machineid;
87 char *cp;
88
89 switch (machineid) {
90 case HP_320:
91 cp = "320"; break;
92 case HP_330:
93 cp = "318/319/330"; break;
94 case HP_340:
95 cp = "340"; break;
96 case HP_345:
97 cp = "345"; break;
98 case HP_350:
99 cp = "350"; break;
100 case HP_360:
101 cp = "360"; break;
102 case HP_370:
103 cp = "370"; break;
104 case HP_375:
105 cp = "375"; break;
106 case HP_380:
107 cp = "380"; break;
108 case HP_385:
109 cp = "385"; break;
110 case HP_400:
111 cp = "400"; break;
112 case HP_425:
113 switch (mmuid) {
114 case MMUID_425_T:
115 cp = "425t"; break;
116 case MMUID_425_S:
117 cp = "425s"; break;
118 case MMUID_425_E:
119 cp = "425e"; break;
120 default:
121 cp = "425"; break;
122 }
123 break;
124 case HP_433:
125 switch (mmuid) {
126 case MMUID_433_T:
127 cp = "433t"; break;
128 case MMUID_433_S:
129 cp = "433s"; break;
130 default:
131 cp = "433"; break;
132 }
133 break;
134 default:
135 cp = "???"; break;
136 }
137 return cp;
138 }
139
140 int userom;
141
142 int
143 trap(fp)
144 struct trapframe *fp;
145 {
146 static int intrap = 0;
147
148 if (intrap)
149 return 0;
150 intrap = 1;
151
152 #if 0
153 userom = 1;
154 #endif
155
156 printf("Got unexpected trap: format=%x vector=%x ps=%x pc=%x\n",
157 fp->tf_format, fp->tf_format, fp->tf_sr, fp->tf_pc);
158 printf("dregs: %x %x %x %x %x %x %x %x\n",
159 fp->tf_regs[0], fp->tf_regs[1],
160 fp->tf_regs[2], fp->tf_regs[3],
161 fp->tf_regs[4], fp->tf_regs[5],
162 fp->tf_regs[6], fp->tf_regs[7]);
163 printf("aregs: %x %x %x %x %x %x %x %x\n",
164 fp->tf_regs[8], fp->tf_regs[9],
165 fp->tf_regs[10], fp->tf_regs[11],
166 fp->tf_regs[12], fp->tf_regs[13],
167 fp->tf_regs[14], fp->tf_regs[15]);
168
169 #if 0
170 userom = 0;
171 #endif
172
173 intrap = 0;
174 return 0;
175 }
176
177 #define ROWS 24
178 #define COLS 80
179
180 void
181 romputchar(c)
182 int c;
183 {
184 static char buf[COLS];
185 static int col = 0, row = 0;
186 int i;
187
188 switch (c) {
189 case '\0':
190 break;
191 case '\r':
192 break; /* ignore */
193 case '\n':
194 for (i = col; i < COLS-1; i++)
195 buf[i] = ' ';
196 buf[i] = '\0';
197 romout(row, buf);
198 col = 0;
199 if (++row == ROWS)
200 row = 0;
201 break;
202
203 case '\t':
204 do {
205 romputchar(' ');
206 } while (col & 7);
207 break;
208
209 default:
210 buf[col] = c;
211 if (++col == COLS-1)
212 romputchar('\n');
213 break;
214 }
215 }
216
217 void
218 machdep_start(entry, howto, loadaddr, ssym, esym)
219 char *entry;
220 int howto;
221 char *loadaddr;
222 char *ssym, *esym;
223 {
224
225 /* Adjust entry point. */
226 transfer(entry, howto, opendev, cons_scode, loadaddr, esym);
227 }
228
229 void
230 transfer(entry, howto, od, csc, lr, es)
231 char *entry;
232 int howto, od, csc;
233 char *lr, *es;
234 {
235
236 printf("Entry point: 0x%lx\n", (u_long)entry);
237
238 #ifdef EXEC_DEBUG
239 printf("\n\nReturn to boot...\n");
240 (void) getchar();
241 #endif
242
243 _transfer(entry, howto, od, csc, lr, es);
244 }
245