1 /* 2 * Copyright (c) 1988 University of Utah. 3 * Copyright (c) 1982, 1986, 1990 The Regents of the University of California. 4 * All rights reserved. 5 * 6 * This code is derived from software contributed to Berkeley by 7 * the Systems Programming Group of the University of Utah Computer 8 * Science Department. 9 * 10 * %sccs.include.redist.c% 11 * 12 * from: Utah $Hdr: machdep.c 1.10 92/06/18 13 * 14 * @(#)machdep.c 7.6 (Berkeley) 10/11/92 15 */ 16 17 #include <sys/param.h> 18 19 /* 20 * Copy bytes within kernel 21 */ 22 bcopy(from, to, count) 23 register caddr_t from, to; 24 register unsigned count; 25 { 26 while (count--) 27 *to++ = *from++; 28 } 29 30 bzero(to, count) 31 register caddr_t to; 32 register unsigned count; 33 { 34 while (count--) 35 *to++ = 0; 36 } 37 38 bcmp(s1, s2, len) 39 register char *s1, *s2; 40 register int len; 41 { 42 while (len--) 43 if (*s1++ != *s2++) 44 return (1); 45 return (0); 46 } 47 48 #ifdef ROMPRF 49 int userom; 50 #endif 51 52 trap(fp) 53 struct frame { 54 int dregs[8]; 55 int aregs[8]; 56 int whoknows; 57 short sr; 58 int pc; 59 short frame; 60 } *fp; 61 { 62 static int intrap = 0; 63 64 if (intrap) 65 return(0); 66 intrap = 1; 67 #ifdef ROMPRF 68 userom = 1; 69 #endif 70 printf("Got unexpected trap: format=%x vector=%x ps=%x pc=%x\n", 71 (fp->frame>>12)&0xF, fp->frame&0xFFF, fp->sr, fp->pc); 72 printf("dregs: %x %x %x %x %x %x %x %x\n", 73 fp->dregs[0], fp->dregs[1], fp->dregs[2], fp->dregs[3], 74 fp->dregs[4], fp->dregs[5], fp->dregs[6], fp->dregs[7]); 75 printf("aregs: %x %x %x %x %x %x %x %x\n", 76 fp->aregs[0], fp->aregs[1], fp->aregs[2], fp->aregs[3], 77 fp->aregs[4], fp->aregs[5], fp->aregs[6], fp->aregs[7]); 78 #ifdef ROMPRF 79 userom = 0; 80 #endif 81 intrap = 0; 82 return(0); 83 } 84 85 #ifdef ROMPRF 86 #define ROWS 46 87 #define COLS 128 88 89 romputchar(c) 90 register int c; 91 { 92 static char buf[COLS]; 93 static int col = 0, row = 0; 94 register int i; 95 96 switch (c) { 97 case '\0': 98 break; 99 case '\r': 100 break; /* ignore */ 101 case '\n': 102 for (i = col; i < COLS-1; i++) 103 buf[i] = ' '; 104 buf[i] = '\0'; 105 romout(row, buf); 106 col = 0; 107 if (++row == ROWS) 108 row = 0; 109 break; 110 111 case '\t': 112 do { 113 romputchar(' '); 114 } while (col & 7); 115 break; 116 117 default: 118 buf[col] = c; 119 if (++col == COLS-1) 120 romputchar('\n'); 121 break; 122 } 123 } 124 #endif 125