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
*
* 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%
#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
#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 */
*
* 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%
/* 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
*
* 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%
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
}
#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") || \
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));
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[];
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");
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
*/
break;
case 3:
hw->hw_name = "98622A";
break;
case 3:
hw->hw_name = "98622A";
hw->hw_type = MISC;
break;
case 5:
hw->hw_type = MISC;
break;
case 5:
+ hw->hw_type = COMMDCM;
+ break;
+ case 6:
+ hw->hw_name = "Parallel Port";
+ hw->hw_type = PPORT;
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";
break;
case 25:
hw->hw_name = "237";
break;
case 25:
hw->hw_name = "237";
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];
break;
case 128:
hw->hw_name = "98624A";
break;
case 128:
hw->hw_name = "98624A";
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);
+}
*
* %sccs.include.redist.c%
*
*
* %sccs.include.redist.c%
*
- * @(#)kgdb_stub.c 7.1 (Berkeley) %G%
+ * @(#)kgdb_stub.c 7.2 (Berkeley) %G%
-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";
"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 */
PUTC('+'); /* successful transfer */
/*
* if a sequence char is present, reply the
PUTC('+'); /* successful transfer */
/*
* if a sequence char is present, reply the
*
* 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%
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
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
* 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
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
-#ifdef COMPAT_UTAH
- .asciz "/etc/init"
-#else
.even
_initflags:
.long 0
argv:
.even
_initflags:
.long 0
argv:
-#ifdef COMPAT_UTAH
- .long init+5-_icode
-#else
.long _initflags-_icode
.long 0
_szicode:
.long _initflags-_icode
.long 0
_szicode:
*
* 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 */
#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 */
#define MHZ_16 2
#define MHZ_25 3
#define MHZ_33 4
#define MHZ_16 2
#define MHZ_25 3
#define MHZ_33 4
#ifdef KERNEL
extern int machineid, mmutype, ectype;
#ifdef KERNEL
extern int machineid, mmutype, ectype;