machdep.c revision 1.10 1 /* $NetBSD: machdep.c,v 1.10 2003/10/02 13:53:08 simonb 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 <hp300/stand/common/samachdep.h>
81
82 char *
83 getmachineid()
84 {
85 extern int machineid;
86 char *cp;
87
88 switch (machineid) {
89 case HP_320:
90 cp = "320"; break;
91 case HP_330:
92 cp = "318/319/330"; break;
93 case HP_340:
94 cp = "340"; break;
95 case HP_345:
96 cp = "345"; break;
97 case HP_350:
98 cp = "350"; break;
99 case HP_360:
100 cp = "360"; break;
101 case HP_370:
102 cp = "370"; break;
103 case HP_375:
104 cp = "375"; break;
105 case HP_380:
106 cp = "380"; break;
107 case HP_385:
108 cp = "385"; break;
109 case HP_400:
110 cp = "400"; break;
111 case HP_425:
112 switch (mmuid) {
113 case MMUID_425_T:
114 cp = "425t"; break;
115 case MMUID_425_S:
116 cp = "425s"; break;
117 case MMUID_425_E:
118 cp = "425e"; break;
119 default:
120 cp = "425"; break;
121 }
122 break;
123 case HP_433:
124 switch (mmuid) {
125 case MMUID_433_T:
126 cp = "433t"; break;
127 case MMUID_433_S:
128 cp = "433s"; break;
129 default:
130 cp = "433"; break;
131 }
132 break;
133 default:
134 cp = "???"; break;
135 }
136 return(cp);
137 }
138
139 int userom;
140
141 trap(fp)
142 struct trapframe *fp;
143 {
144 static int intrap = 0;
145
146 if (intrap)
147 return(0);
148 intrap = 1;
149
150 #if 0
151 userom = 1;
152 #endif
153
154 printf("Got unexpected trap: format=%x vector=%x ps=%x pc=%x\n",
155 fp->tf_format, fp->tf_format, fp->tf_sr, fp->tf_pc);
156 printf("dregs: %x %x %x %x %x %x %x %x\n",
157 fp->tf_regs[0], fp->tf_regs[1],
158 fp->tf_regs[2], fp->tf_regs[3],
159 fp->tf_regs[4], fp->tf_regs[5],
160 fp->tf_regs[6], fp->tf_regs[7]);
161 printf("aregs: %x %x %x %x %x %x %x %x\n",
162 fp->tf_regs[8], fp->tf_regs[9],
163 fp->tf_regs[10], fp->tf_regs[11],
164 fp->tf_regs[12], fp->tf_regs[13],
165 fp->tf_regs[14], fp->tf_regs[15]);
166
167 #if 0
168 userom = 0;
169 #endif
170
171 intrap = 0;
172 return(0);
173 }
174
175 #define ROWS 24
176 #define COLS 80
177
178 void
179 romputchar(c)
180 int c;
181 {
182 static char buf[COLS];
183 static int col = 0, row = 0;
184 int i;
185
186 switch (c) {
187 case '\0':
188 break;
189 case '\r':
190 break; /* ignore */
191 case '\n':
192 for (i = col; i < COLS-1; i++)
193 buf[i] = ' ';
194 buf[i] = '\0';
195 romout(row, buf);
196 col = 0;
197 if (++row == ROWS)
198 row = 0;
199 break;
200
201 case '\t':
202 do {
203 romputchar(' ');
204 } while (col & 7);
205 break;
206
207 default:
208 buf[col] = c;
209 if (++col == COLS-1)
210 romputchar('\n');
211 break;
212 }
213 }
214
215 void
216 machdep_start(entry, howto, loadaddr, ssym, esym)
217 char *entry;
218 int howto;
219 char *loadaddr;
220 char *ssym, *esym;
221 {
222
223 /* Adjust entry point. */
224 transfer(entry, howto, opendev, cons_scode, loadaddr, esym);
225 }
226
227 void
228 transfer(entry, howto, od, csc, lr, es)
229 char *entry;
230 int howto, od, csc;
231 char *lr, *es;
232 {
233
234 printf("Entry point: 0x%lx\n", (u_long)entry);
235
236 #ifdef EXEC_DEBUG
237 printf("\n\nReturn to boot...\n");
238 (void) getchar();
239 #endif
240
241 _transfer(entry, howto, od, csc, lr, es);
242 }
243