"update from Mike Hibler at Utah"
authorKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Sat, 26 May 1990 06:52:46 +0000 (22:52 -0800)
committerKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Sat, 26 May 1990 06:52:46 +0000 (22:52 -0800)
SCCS-vsn: sys/hp300/hp300/autoconf.c 7.2
SCCS-vsn: sys/hp/dev/cons.c 7.2
SCCS-vsn: sys/hp/dev/cons.h 7.2
SCCS-vsn: sys/hp300/include/cpu.h 7.2
SCCS-vsn: sys/hp300/hp300/kgdb_stub.c 7.2
SCCS-vsn: sys/hp300/hp300/locore.s 7.2

usr/src/sys/hp/dev/cons.c
usr/src/sys/hp/dev/cons.h
usr/src/sys/hp300/hp300/autoconf.c
usr/src/sys/hp300/hp300/kgdb_stub.c
usr/src/sys/hp300/hp300/locore.s
usr/src/sys/hp300/include/cpu.h

index cfb0791..d53254d 100644 (file)
@@ -11,7 +11,7 @@
  *
  * from: Utah $Hdr: cons.c 1.4 88/12/03$
  *
  *
  * from: Utah $Hdr: cons.c 1.4 88/12/03$
  *
- *     @(#)cons.c      7.1 (Berkeley) %G%
+ *     @(#)cons.c      7.2 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -34,6 +34,10 @@ int itecnprobe(), itecninit(), itecngetc(), itecnputc();
 #if NDCA > 0
 int dcacnprobe(), dcacninit(), dcacngetc(), dcacnputc();
 #endif
 #if NDCA > 0
 int dcacnprobe(), dcacninit(), dcacngetc(), dcacnputc();
 #endif
+#include "dcm.h"
+#if NDCM > 0
+int dcmcnprobe(), dcmcninit(), dcmcngetc(), dcmcnputc();
+#endif
 
 struct consdev constab[] = {
 #if NITE > 0
 
 struct consdev constab[] = {
 #if NITE > 0
@@ -41,13 +45,14 @@ struct      consdev constab[] = {
 #endif
 #if NDCA > 0
        { dcacnprobe,   dcacninit,      dcacngetc,      dcacnputc },
 #endif
 #if NDCA > 0
        { dcacnprobe,   dcacninit,      dcacngetc,      dcacnputc },
+#endif
+#if NDCM > 0
+       { dcmcnprobe,   dcmcninit,      dcmcngetc,      dcmcnputc },
 #endif
        { 0 },
 };
 /* end XXX */
 
 #endif
        { 0 },
 };
 /* end XXX */
 
-extern struct consdev constab[];
-
 struct tty *constty = 0;       /* virtual console output device */
 struct consdev *cn_tab;        /* physical console device info */
 struct tty *cn_tty;            /* XXX: console tty struct for tprintf */
 struct tty *constty = 0;       /* virtual console output device */
 struct consdev *cn_tab;        /* physical console device info */
 struct tty *cn_tty;            /* XXX: console tty struct for tprintf */
index 9cb6261..a3c9e2e 100644 (file)
@@ -11,7 +11,7 @@
  *
  * from: Utah $Hdr: cons.h 1.4 88/12/03$
  *
  *
  * from: Utah $Hdr: cons.h 1.4 88/12/03$
  *
- *     @(#)cons.h      7.1 (Berkeley) %G%
+ *     @(#)cons.h      7.2 (Berkeley) %G%
  */
 
 struct consdev {
  */
 
 struct consdev {
@@ -32,3 +32,9 @@ struct consdev {
 
 /* XXX */
 #define        CONSMAJOR       0
 
 /* XXX */
 #define        CONSMAJOR       0
+
+#ifdef KERNEL
+extern struct consdev constab[];
+extern struct consdev *cn_tab;
+extern struct tty *cn_tty;
+#endif
index ae5278d..ab8f5da 100644 (file)
@@ -11,7 +11,7 @@
  *
  * from: Utah $Hdr: autoconf.c 1.25 89/10/07$
  *
  *
  * from: Utah $Hdr: autoconf.c 1.25 89/10/07$
  *
- *     @(#)autoconf.c  7.1 (Berkeley) %G%
+ *     @(#)autoconf.c  7.2 (Berkeley) %G%
  */
 
 /*
  */
 
 /*
@@ -50,6 +50,8 @@ int   cpuspeed = MHZ_8;   /* relative cpu speed */
 struct isr isrqueue[NISR];
 struct hp_hw sc_table[MAX_CTLR];
 
 struct isr isrqueue[NISR];
 struct hp_hw sc_table[MAX_CTLR];
 
+extern int internalhpib;
+
 #ifdef DEBUG
 int    acdebug = 0;
 #endif
 #ifdef DEBUG
 int    acdebug = 0;
 #endif
@@ -111,7 +113,7 @@ configure()
 }
 
 #define dr_type(d, s)  \
 }
 
 #define dr_type(d, s)  \
-       ((d)->d_name[0] == (s)[0] && (d)->d_name[1] == (s)[1])
+       (strcmp((d)->d_name, (s)) == 0)
 
 #define same_hw_ctlr(hw, hc) \
        ((hw)->hw_type == HPIB && dr_type((hc)->hp_driver, "hpib") || \
 
 #define same_hw_ctlr(hw, hc) \
        ((hw)->hw_type == HPIB && dr_type((hc)->hp_driver, "hpib") || \
@@ -485,9 +487,7 @@ find_busslaves(hc, maxslaves)
 sctoaddr(addr)
        register int addr;
 {
 sctoaddr(addr)
        register int addr;
 {
-       extern int internalhpib;
-
-       if (addr == 7)
+       if (addr == 7 && internalhpib)
                addr = internalhpib;
        else if (addr < 32)
                addr = IOV(EXTIOBASE + (addr * IOCARDSIZE));
                addr = internalhpib;
        else if (addr < 32)
                addr = IOV(EXTIOBASE + (addr * IOCARDSIZE));
@@ -499,8 +499,6 @@ sctoaddr(addr)
 addrtosc(addr)
        register u_int addr;
 {
 addrtosc(addr)
        register u_int addr;
 {
-       extern int internalhpib;
-
 #if defined(HP360) || defined(HP370)
        extern char grfregs[];
 
 #if defined(HP360) || defined(HP370)
        extern char grfregs[];
 
@@ -537,9 +535,14 @@ same_hw_device(hw, hd)
        case NET:
                found = dr_type(hd->hp_driver, "le");
                break;
        case NET:
                found = dr_type(hd->hp_driver, "le");
                break;
-       case COMM:
-               found = dr_type(hd->hp_driver, "dca") ||
-                       dr_type(hd->hp_driver, "dcm");
+       case COMMDCA:
+               found = dr_type(hd->hp_driver, "dca");
+               break;
+       case COMMDCL:
+               found = dr_type(hd->hp_driver, "dcl");
+               break;
+       case COMMDCM:
+               found = dr_type(hd->hp_driver, "dcm");
                break;
        case SCSI:
                found = dr_type(hd->hp_driver, "scsi");
                break;
        case SCSI:
                found = dr_type(hd->hp_driver, "scsi");
@@ -597,7 +600,17 @@ find_devs()
                hw->hw_id = id_reg[1] & 0xff;
                hw->hw_sc = sc;
                hw->hw_addr = (char *) addr;
                hw->hw_id = id_reg[1] & 0xff;
                hw->hw_sc = sc;
                hw->hw_addr = (char *) addr;
-
+               /*
+                * Internal HP-IB on some machines (345/375) doesn't return
+                * consistant id info so we use the info gleaned from the
+                * boot ROMs SYSFLAG.
+                */
+               if (sc == 7 && internalhpib) {
+                       hw->hw_name = "98624A";
+                       hw->hw_type = HPIB;
+                       hw++;
+                       continue;
+               }
                /*
                 * XXX: the following could be in a big static table
                 */
                /*
                 * XXX: the following could be in a big static table
                 */
@@ -606,8 +619,9 @@ find_devs()
                case 0:
                        break;
                case 2:
                case 0:
                        break;
                case 2:
+               case 128+2:
                        hw->hw_name = "98626A";
                        hw->hw_name = "98626A";
-                       hw->hw_type = COMM;
+                       hw->hw_type = COMMDCA;
                        break;
                case 3:
                        hw->hw_name = "98622A";
                        break;
                case 3:
                        hw->hw_name = "98622A";
@@ -618,8 +632,13 @@ find_devs()
                        hw->hw_type = MISC;
                        break;
                case 5:
                        hw->hw_type = MISC;
                        break;
                case 5:
+               case 128+5:
                        hw->hw_name = "98642A";
                        hw->hw_name = "98642A";
-                       hw->hw_type = COMM;
+                       hw->hw_type = COMMDCM;
+                       break;
+               case 6:
+                       hw->hw_name = "Parallel Port";
+                       hw->hw_type = PPORT;
                        break;
                case 7:
                case 39:
                        break;
                case 7:
                case 39:
@@ -648,17 +667,13 @@ find_devs()
                        hw->hw_name = "98640A";
                        hw->hw_type = MISC;
                        break;
                        hw->hw_name = "98640A";
                        hw->hw_type = MISC;
                        break;
-               case 20:
-                       hw->hw_name = "98628A";
-                       hw->hw_type = COMM;
-                       break;
                case 21:
                        hw->hw_name = "98643A";
                        hw->hw_type = NET;
                        break;
                case 22:
                        hw->hw_name = "98659A";
                case 21:
                        hw->hw_name = "98643A";
                        hw->hw_type = NET;
                        break;
                case 22:
                        hw->hw_name = "98659A";
-                       hw->hw_type = COMM;
+                       hw->hw_type = MISC;
                        break;
                case 25:
                        hw->hw_name = "237";
                        break;
                case 25:
                        hw->hw_name = "237";
@@ -693,6 +708,11 @@ find_devs()
                        hw->hw_type = VME;
                        sc++;
                        break;
                        hw->hw_type = VME;
                        sc++;
                        break;
+               case 52:
+               case 180:
+                       hw->hw_name = "98628A";
+                       hw->hw_type = COMMDCL;
+                       break;
                case 57:
                        hw->hw_type = BITMAP;
                        hw->hw_id2 = id_reg[0x15];
                case 57:
                        hw->hw_type = BITMAP;
                        hw->hw_id2 = id_reg[0x15];
@@ -723,8 +743,9 @@ find_devs()
                        }
                        break;
                case 66:
                        }
                        break;
                case 66:
+               case 128+66:
                        hw->hw_name = "98644A";
                        hw->hw_name = "98644A";
-                       hw->hw_type = COMM;
+                       hw->hw_type = COMMDCA;
                        break;
                case 128:
                        hw->hw_name = "98624A";
                        break;
                case 128:
                        hw->hw_name = "98624A";
@@ -915,3 +936,12 @@ setroot()
                argdev = swdevt[0].sw_dev;
 #endif
 }
                argdev = swdevt[0].sw_dev;
 #endif
 }
+
+strcmp(s1, s2)
+       register char *s1, *s2;
+{
+       while (*s1 == *s2++)
+               if (*s1++=='\0')
+                       return (0);
+       return (*s1 - *--s2);
+}
index f35966e..4bf706b 100644 (file)
@@ -9,7 +9,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)kgdb_stub.c 7.1 (Berkeley) %G%
+ *     @(#)kgdb_stub.c 7.2 (Berkeley) %G%
  */
 
 /*
  */
 
 /*
@@ -84,15 +84,27 @@ static int frame_bytes[16] = {
  */
 #define BUFMAX 512
 
  */
 #define BUFMAX 512
 
-int kgdb_dev = -1;             /* remote debugging device (-1 if none) */
-int kgdb_baud = 9600;          /* baud rate of serial line */
+#ifndef KGDBDEV
+#define KGDBDEV -1
+#endif
+#ifndef KGDBRATE
+#define KGDBRATE 9600
+#endif
+
+int kgdb_dev = KGDBDEV;                /* remote debugging device (-1 if none) */
+int kgdb_rate = KGDBRATE;      /* remote debugging baud rate */
 int kgdb_debug_init = 0;       /* != 0 waits for remote at system init */
 int kgdb_debug = 0;            /* > 0 prints command & checksum errors */
 
 int kgdb_debug_init = 0;       /* != 0 waits for remote at system init */
 int kgdb_debug = 0;            /* > 0 prints command & checksum errors */
 
-extern int dcacngetc();
-extern void dcacnputc();
-#define GETC (dcacngetc(kgdb_dev))
-#define PUTC(c) (dcacnputc(kgdb_dev, c))
+#include "../hp300/cons.h"
+
+#define GETC   \
+       (constab[major(kgdb_dev)].cn_getc ? \
+               (*constab[major(kgdb_dev)].cn_getc)(kgdb_dev) : 0)
+#define PUTC(c)        { \
+       if (constab[major(kgdb_dev)].cn_putc) \
+               (*constab[major(kgdb_dev)].cn_putc)(kgdb_dev, c); \
+}
 
 static char hexchars[] = "0123456789abcdef";
 
 
 static char hexchars[] = "0123456789abcdef";
 
@@ -156,9 +168,9 @@ getpacket(char *buffer)
                        "bad checksum.  My count = 0x%x, sent=0x%x. buf=%s\n",
                                        checksum, xmitcsum, buffer);
                        }
                        "bad checksum.  My count = 0x%x, sent=0x%x. buf=%s\n",
                                        checksum, xmitcsum, buffer);
                        }
-                       if (checksum != xmitcsum)
+                       if (checksum != xmitcsum) {
                                PUTC('-');      /* failed checksum */
                                PUTC('-');      /* failed checksum */
-                       else {
+                       else {
                                PUTC('+');      /* successful transfer */
                                /*
                                 * if a sequence char is present, reply the
                                PUTC('+');      /* successful transfer */
                                /*
                                 * if a sequence char is present, reply the
index 004c505..f966dbe 100644 (file)
@@ -11,7 +11,7 @@
  *
  * from: Utah $Hdr: locore.s 1.47 89/10/08$
  *
  *
  * from: Utah $Hdr: locore.s 1.47 89/10/08$
  *
- *     @(#)locore.s    7.1 (Berkeley) %G%
+ *     @(#)locore.s    7.2 (Berkeley) %G%
  */
 
        .text
  */
 
        .text
@@ -730,19 +730,27 @@ start:
        movl    #-1,a0@                 | set to reflect 68030 PMMU
        lea     _machineid,a0
        addl    a5,a0
        movl    #-1,a0@                 | set to reflect 68030 PMMU
        lea     _machineid,a0
        addl    a5,a0
-       movl    #3,a0@                  | type is at least a 360
        movl    #0x80,IOBASE+MMUCMD     | set magic cookie
        movl    IOBASE+MMUCMD,d0        | read it back
        btst    #7,d0                   | cookie still on?
        movl    #0x80,IOBASE+MMUCMD     | set magic cookie
        movl    IOBASE+MMUCMD,d0        | read it back
        btst    #7,d0                   | cookie still on?
-       jeq     Lstart1                 | no, just a 360
+       jeq     Lnot370                 | no, 360 or 375
        movl    #0,IOBASE+MMUCMD        | clear magic cookie
        movl    IOBASE+MMUCMD,d0        | read it back
        btst    #7,d0                   | still on?
        jeq     Lisa370                 | no, must be a 370
        movl    #5,a0@                  | yes, must be a 340
        jra     Lstart1
        movl    #0,IOBASE+MMUCMD        | clear magic cookie
        movl    IOBASE+MMUCMD,d0        | read it back
        btst    #7,d0                   | still on?
        jeq     Lisa370                 | no, must be a 370
        movl    #5,a0@                  | yes, must be a 340
        jra     Lstart1
+Lnot370:
+       movl    #3,a0@                  | type is at least a 360
+       movl    #0,IOBASE+MMUCMD        | clear magic cookie2
+       movl    IOBASE+MMUCMD,d0        | read it back
+       btst    #16,d0                  | still on?
+       jeq     Lstart1                 | no, must be a 360
+       movl    #6,a0@                  | yes, must be a 345/375
+       jra     Lhaspac
 Lisa370:
        movl    #4,a0@                  | set to 370
 Lisa370:
        movl    #4,a0@                  | set to 370
+Lhaspac:
        lea     _ectype,a0
        addl    a5,a0
        movl    #-1,a0@                 | also has a physical address cache
        lea     _ectype,a0
        addl    a5,a0
        movl    #-1,a0@                 | also has a physical address cache
@@ -960,7 +968,12 @@ Lehighcode:
  * Should be running mapped from this point on
  */
 Lenab1:
  * Should be running mapped from this point on
  */
 Lenab1:
+/* while the ROM scratch page is mapped, check for internal HP-IB in SYSFLAG */
+       btst    #5,0xfffffed2           | internal HP-IB?
+       jeq     Linitmem                | yes, have HP-IB continue normally
+       clrl    _internalhpib           | no, clear associated address
 /* init mem sizes */
 /* init mem sizes */
+Linitmem:
        movl    #MAXADDR,d1             | last page
        moveq   #PGSHIFT,d2
        lsrl    d2,d1                   | convert to page (click) number
        movl    #MAXADDR,d1             | last page
        moveq   #PGSHIFT,d2
        lsrl    d2,d1                   | convert to page (click) number
@@ -1064,20 +1077,12 @@ _icode:
        trap    #0
 
 init:
        trap    #0
 
 init:
-#ifdef COMPAT_UTAH
-       .asciz  "/etc/init"
-#else
        .asciz  "/sbin/init"
        .asciz  "/sbin/init"
-#endif
        .even
 _initflags:
        .long   0
 argv:
        .even
 _initflags:
        .long   0
 argv:
-#ifdef COMPAT_UTAH
-       .long   init+5-_icode
-#else
        .long   init+6-_icode
        .long   init+6-_icode
-#endif
        .long   _initflags-_icode
        .long   0
 _szicode:
        .long   _initflags-_icode
        .long   0
 _szicode:
index 0b4ad5f..c4c43c7 100644 (file)
@@ -11,7 +11,7 @@
  *
  * from: Utah $Hdr: cpu.h 1.13 89/06/23$
  *
  *
  * from: Utah $Hdr: cpu.h 1.13 89/06/23$
  *
- *     @(#)cpu.h       7.1 (Berkeley) %G%
+ *     @(#)cpu.h       7.2 (Berkeley) %G%
  */
 
 /* values for machineid */
  */
 
 /* values for machineid */
@@ -21,6 +21,7 @@
 #define HP_360         3       /* 25Mhz 68030 */
 #define HP_370         4       /* 33Mhz 68030+64K external cache */
 #define HP_340         5       /* 16Mhz 68030 */
 #define HP_360         3       /* 25Mhz 68030 */
 #define HP_370         4       /* 33Mhz 68030+64K external cache */
 #define HP_340         5       /* 16Mhz 68030 */
+#define HP_375         6       /* 50Mhz 68030+32K external cache */
 
 /* values for mmutype (assigned for quick testing) */
 #define MMU_68030      -1      /* 68030 on-chip subset of 68851 */
 
 /* values for mmutype (assigned for quick testing) */
 #define MMU_68030      -1      /* 68030 on-chip subset of 68851 */
@@ -37,6 +38,7 @@
 #define MHZ_16         2
 #define MHZ_25         3
 #define MHZ_33         4
 #define MHZ_16         2
 #define MHZ_25         3
 #define MHZ_33         4
+#define MHZ_50         6
 
 #ifdef KERNEL
 extern int machineid, mmutype, ectype;
 
 #ifdef KERNEL
 extern int machineid, mmutype, ectype;