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