Add support for microvax 3000.
authorThomas Ferrin <tef@ucbvax.Berkeley.EDU>
Sat, 27 Aug 1988 22:22:47 +0000 (14:22 -0800)
committerThomas Ferrin <tef@ucbvax.Berkeley.EDU>
Sat, 27 Aug 1988 22:22:47 +0000 (14:22 -0800)
SCCS-vsn: sys/vax/uba/ubareg.h 7.5
SCCS-vsn: sys/vax/uba/dhu.c 7.3
SCCS-vsn: sys/vax/uba/tmscp.c 7.5
SCCS-vsn: sys/vax/uba/ts.c 7.6
SCCS-vsn: sys/vax/uba/uda.c 7.20
SCCS-vsn: sys/vax/stand/prf.c 7.6
SCCS-vsn: sys/vax/stand/srt0.c 7.5
SCCS-vsn: sys/vax/stand/Makefile 7.16
SCCS-vsn: sys/vax/stand/autoconf.c 7.12
SCCS-vsn: sys/vax/stand/qdcons.c 7.2

usr/src/sys/vax/stand/Makefile
usr/src/sys/vax/stand/autoconf.c
usr/src/sys/vax/stand/prf.c
usr/src/sys/vax/stand/qdcons.c
usr/src/sys/vax/stand/srt0.c
usr/src/sys/vax/uba/dhu.c
usr/src/sys/vax/uba/tmscp.c
usr/src/sys/vax/uba/ts.c
usr/src/sys/vax/uba/ubareg.h
usr/src/sys/vax/uba/uda.c

index 9f9bcff..a0c2ebe 100644 (file)
@@ -14,7 +14,7 @@
 # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 # WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 #
 # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 # WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 #
-#      @(#)Makefile    7.15 (Berkeley) %G%
+#      @(#)Makefile    7.16 (Berkeley) %G%
 #
 
 DESTDIR=
 #
 
 DESTDIR=
@@ -22,7 +22,7 @@ STAND=        /stand
 INCPATH=-I. -I../stand -I../h
 VPATH= ../stand:../vax
 DEFS=  ${INCPATH} -DSTANDALONE -DCOMPAT_42
 INCPATH=-I. -I../stand -I../h
 VPATH= ../stand:../vax
 DEFS=  ${INCPATH} -DSTANDALONE -DCOMPAT_42
-MACH=  -DVAX8600 -DVAX8200 -DVAX780 -DVAX750 -DVAX730 -DVAX630
+MACH=  -DVAX8600 -DVAX8200 -DVAX780 -DVAX750 -DVAX730 -DVAX630 -DVAX650
 
 # Collections of C options:
 #      COPTS   device drivers/assembler, not optimized
 
 # Collections of C options:
 #      COPTS   device drivers/assembler, not optimized
@@ -33,7 +33,7 @@ MACH= -DVAX8600 -DVAX8200 -DVAX780 -DVAX750 -DVAX730 -DVAX630
 COPTS= ${DEFS} ${MACH}
 CFLAGS=        -O ${DEFS} ${MACH}
 730OPTS=-O ${DEFS} -DVAX730
 COPTS= ${DEFS} ${MACH}
 CFLAGS=        -O ${DEFS} ${MACH}
 730OPTS=-O ${DEFS} -DVAX730
-SMOPTS=        ${DEFS} -DSMALL -DVAX750 -DVAX630
+SMOPTS=        ${DEFS} -DSMALL -DVAX750 -DVAX630 -DVAX650
 
 RELOC= 150000
 LIBSA= libsa.a
 
 RELOC= 150000
 LIBSA= libsa.a
index 3b6235e..56959f4 100644 (file)
@@ -3,7 +3,7 @@
  * All rights reserved.  The Berkeley software License Agreement
  * specifies the terms and conditions for redistribution.
  *
  * All rights reserved.  The Berkeley software License Agreement
  * specifies the terms and conditions for redistribution.
  *
- *     @(#)autoconf.c  7.11 (Berkeley) %G%
+ *     @(#)autoconf.c  7.12 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -56,7 +56,7 @@ caddr_t       uioaddr730[] = { UMA };
 #undef UMA
 #endif
 
 #undef UMA
 #endif
 
-#if VAX630
+#if VAX630 || VAX650
 /*
  * The map registers start at 20088000 on the ka630, so
  * subtract a 2k offset to make things work.
 /*
  * The map registers start at 20088000 on the ka630, so
  * subtract a 2k offset to make things work.
@@ -219,6 +219,18 @@ configure()
                nuba = 1;
                break;
 #endif
                nuba = 1;
                break;
 #endif
+
+#if VAX650
+       case VAX_650:
+#ifndef SMALL
+               if (debug)
+                       printf("cpu: uVAX 3000\n");
+#endif
+               ubaddr = ubaddr630;
+               uioaddr = uioaddr630;
+               nuba = 1;
+               break;
+#endif
        }
 
        /*
        }
 
        /*
@@ -239,8 +251,9 @@ configure()
                break;
 #endif
 
                break;
 #endif
 
-#if VAX630
+#if VAX630 || VAX650
        case VAX_630:
        case VAX_630:
+       case VAX_650:
                mtpr(IUR, 0);
                *((char *)QIOPAGE630 + QIPCR) = Q_LMEAE;
 #if !defined(SMALL)
                mtpr(IUR, 0);
                *((char *)QIOPAGE630 + QIPCR) = Q_LMEAE;
 #if !defined(SMALL)
@@ -251,7 +264,7 @@ configure()
                        ;
 #endif
                break;
                        ;
 #endif
                break;
-#endif /* VAX630 */
+#endif
        }
 
        /* give unibus devices a chance to recover... */
        }
 
        /* give unibus devices a chance to recover... */
index 52c31c2..369c383 100644 (file)
@@ -3,7 +3,7 @@
  * All rights reserved.  The Berkeley software License Agreement
  * specifies the terms and conditions for redistribution.
  *
  * All rights reserved.  The Berkeley software License Agreement
  * specifies the terms and conditions for redistribution.
  *
- *     @(#)prf.c       7.5 (Berkeley) %G%
+ *     @(#)prf.c       7.6 (Berkeley) %G%
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -115,7 +115,7 @@ putchar(c)
        register c;
 {
        register s, timo;
        register c;
 {
        register s, timo;
-#if VAX630
+#if VAX630 || VAX650
        extern (*v_putc)();
 
        if (v_putc) {
        extern (*v_putc)();
 
        if (v_putc) {
@@ -147,7 +147,7 @@ putchar(c)
 getchar()
 {
        register c;
 getchar()
 {
        register c;
-#if VAX630
+#if VAX630 || VAX650
        extern (*v_getc)();
 
        if (v_getc) {
        extern (*v_getc)();
 
        if (v_getc) {
@@ -157,7 +157,7 @@ getchar()
        while((mfpr(RXCS)&RXCS_DONE) == 0)
                ;
        c = mfpr(RXDB)&0177;
        while((mfpr(RXCS)&RXCS_DONE) == 0)
                ;
        c = mfpr(RXDB)&0177;
-#if VAX630
+#if VAX630 || VAX650
        }
 #endif
        if (c=='\r')
        }
 #endif
        if (c=='\r')
index e5bec5a..f6086ef 100644 (file)
@@ -14,7 +14,7 @@
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- *     @(#)qdcons.c    7.1 (Berkeley) %G%
+ *     @(#)qdcons.c    7.2 (Berkeley) %G%
  */
 
 /*
  */
 
 /*
@@ -205,6 +205,7 @@ qd_init()
 
        caddr_t qdaddr;
        struct dga *dga;
 
        caddr_t qdaddr;
        struct dga *dga;
+       extern int cpu;
 
        qdaddr = (caddr_t) QDSSCSR;
         if (badaddr(qdaddr, sizeof(short)))
 
        qdaddr = (caddr_t) QDSSCSR;
         if (badaddr(qdaddr, sizeof(short)))
@@ -248,21 +249,24 @@ qd_init()
 /*--------------------------------------------------------------------
 * tell the VAX ROM that the cursor is at the bottom of the screen  */
 
 /*--------------------------------------------------------------------
 * tell the VAX ROM that the cursor is at the bottom of the screen  */
 
-       NVR = (short *) NVR_ADRS;
+       if (cpu == VAX_630) {
+               NVR = (short *) NVR_ADRS;
 
 
-       i = *NVR++ & 0xFF;
-       i |= (*NVR++ & 0xFF) << 8;
-       i |= (*NVR++ & 0xFF) << 16;
-       i |= (*NVR++ & 0xFF) << 24;
+               i = *NVR++ & 0xFF;
+               i |= (*NVR++ & 0xFF) << 8;
+               i |= (*NVR++ & 0xFF) << 16;
+               i |= (*NVR++ & 0xFF) << 24;
 
 
-       ROM_console = (char *) i;
+               ROM_console = (char *) i;
 
 
-       ROM_console[CURRENT_COL] = ROM_console[COL_MIN];
-       ROM_console[CURRENT_ROW] = ROM_console[ROW_MAX];
+               ROM_console[CURRENT_COL] = ROM_console[COL_MIN];
+               ROM_console[CURRENT_ROW] = ROM_console[ROW_MAX];
+       }
 
 /*----------------------------------------------------------
 * smash system virtual console service routine addresses */
 
 
 /*----------------------------------------------------------
 * smash system virtual console service routine addresses */
 
+       printf("switching console to QDSS display...\n");
        v_getc = qdgetc;
        v_putc = qdputc;
 
        v_getc = qdgetc;
        v_putc = qdputc;
 
index b1870f7..55f1e34 100644 (file)
@@ -3,7 +3,7 @@
  * All rights reserved.  The Berkeley software License Agreement
  * specifies the terms and conditions for redistribution.
  *
  * All rights reserved.  The Berkeley software License Agreement
  * specifies the terms and conditions for redistribution.
  *
- *     @(#)srt0.c      7.4 (Berkeley) %G%
+ *     @(#)srt0.c      7.5 (Berkeley) %G%
  */
 
 #include "../vax/mtpr.h"
  */
 
 #include "../vax/mtpr.h"
@@ -33,10 +33,12 @@ entry:      .globl  entry
        mtpr    $HIGH,$IPL              # just in case
 
 #ifdef REL
        mtpr    $HIGH,$IPL              # just in case
 
 #ifdef REL
-       # we need to do special stuff on microvax II
+       # we need to do special stuff on microvaxen
        mfpr    $SID,r0
        cmpzv   $24,$8,r0,$VAX_630
        mfpr    $SID,r0
        cmpzv   $24,$8,r0,$VAX_630
-       bneq    1f
+       beql    1f
+       cmpzv   $24,$8,r0,$VAX_650
+       bneq    2f
 
        /*
         * Were we booted by VMB?  If so, r11 is not boothowto,
 
        /*
         * Were we booted by VMB?  If so, r11 is not boothowto,
@@ -44,14 +46,15 @@ entry:      .globl  entry
         * User's Manual, pp 3-21).  These tests were devised by
         * richl@tektronix, 11/10/87.
         */
         * User's Manual, pp 3-21).  These tests were devised by
         * richl@tektronix, 11/10/87.
         */
+1:
        cmpl    (r11),r11               # if boothowto, r11 will be small
        cmpl    (r11),r11               # if boothowto, r11 will be small
-       bneq    1f                      # and these will not fault
+       bneq    2f                      # and these will not fault
        cmpl    4(r11),$0
        cmpl    4(r11),$0
-       bneq    1f
+       bneq    2f
        cmpl    8(r11),$-1
        cmpl    8(r11),$-1
-       bneq    1f
+       bneq    2f
        tstl    0xc(r11)
        tstl    0xc(r11)
-       bneq    1f
+       bneq    2f
 
        /*
         * Booted by VMB: get flags from extended rpb.
 
        /*
         * Booted by VMB: get flags from extended rpb.
@@ -59,7 +62,7 @@ entry:        .globl  entry
         */
        movl    0x30(r11),r11
        movl    $9,r10                  # device = ra(0,0)
         */
        movl    0x30(r11),r11
        movl    $9,r10                  # device = ra(0,0)
-1:
+2:
        movl    $RELOC,sp
 #else
        movl    $RELOC-0x2400,sp
        movl    $RELOC,sp
 #else
        movl    $RELOC-0x2400,sp
@@ -152,6 +155,8 @@ _badaddr:
        .word   1f-0b           # 6 is 8800
        .word   1f-0b           # 7 is 610
        .word   5f-0b           # 8 is 630
        .word   1f-0b           # 6 is 8800
        .word   1f-0b           # 7 is 610
        .word   5f-0b           # 8 is 630
+       .word   1f-0b           # 9 is ???
+       .word   5f-0b           # 10 is 650
 5:
        mtpr    $0xf,$MCESR
        brb     1f
 5:
        mtpr    $0xf,$MCESR
        brb     1f
index 52ce85a..4ae8308 100644 (file)
@@ -3,7 +3,7 @@
  * All rights reserved.  The Berkeley software License Agreement
  * specifies the terms and conditions for redistribution.
  *
  * All rights reserved.  The Berkeley software License Agreement
  * specifies the terms and conditions for redistribution.
  *
- *     @(#)dhu.c       7.2 (Berkeley) %G%
+ *     @(#)dhu.c       7.3 (Berkeley) %G%
  */
 
 /*
  */
 
 /*
@@ -307,7 +307,7 @@ dhurint(dhu)
        register line;
        int overrun = 0;
 
        register line;
        int overrun = 0;
 
-#ifdef VAX630
+#ifdef QBA
        (void) spl5();
 #endif
        ui = dhuinfo[dhu];
        (void) spl5();
 #endif
        ui = dhuinfo[dhu];
@@ -516,7 +516,7 @@ dhuxint(dhu)
        register int line, t;
        u_short cntr;
 
        register int line, t;
        u_short cntr;
 
-#ifdef VAX630
+#ifdef QBA
        (void) spl5();
 #endif
        ui = dhuinfo[dhu];
        (void) spl5();
 #endif
        ui = dhuinfo[dhu];
index d712a2b..d068617 100644 (file)
@@ -1,4 +1,4 @@
-/*     @(#)tmscp.c     7.4 (Berkeley) %G% */
+/*     @(#)tmscp.c     7.5 (Berkeley) %G% */
 
 #ifndef lint
 static char    *sccsid = "@(#)tmscp.c  1.24    (ULTRIX)        1/21/86";
 
 #ifndef lint
 static char    *sccsid = "@(#)tmscp.c  1.24    (ULTRIX)        1/21/86";
@@ -323,8 +323,8 @@ tmscpprobe(reg, ctlr)
        if (count == DELAYTEN)
                return(0);
 
        if (count == DELAYTEN)
                return(0);
 
-#ifdef VAX630
-       if (cpu == VAX_630)
+#ifdef QBA
+       if (cpu == VAX_630 || cpu == VAX_650)
                br = 0x15;      /* screwy interrupt structure */
 #endif
        return(sizeof (struct tmscpdevice));
                br = 0x15;      /* screwy interrupt structure */
 #endif
        return(sizeof (struct tmscpdevice));
index 467eb7d..231492a 100644 (file)
@@ -3,7 +3,7 @@
  * All rights reserved.  The Berkeley software License Agreement
  * specifies the terms and conditions for redistribution.
  *
  * All rights reserved.  The Berkeley software License Agreement
  * specifies the terms and conditions for redistribution.
  *
- *     @(#)ts.c        7.5 (Berkeley) %G%
+ *     @(#)ts.c        7.6 (Berkeley) %G%
  */
 
 #include "ts.h"
  */
 
 #include "ts.h"
@@ -575,7 +575,7 @@ tsintr(tsunit)
        register struct ts_softc *sc;
        register int state;
 
        register struct ts_softc *sc;
        register int state;
 
-#if VAX630
+#ifdef QBA
        (void) spl5();
 #endif
        um = tsdinfo[tsunit]->ui_mi;
        (void) spl5();
 #endif
        um = tsdinfo[tsunit]->ui_mi;
index e650a5a..2131cf6 100644 (file)
@@ -3,7 +3,7 @@
  * All rights reserved.  The Berkeley software License Agreement
  * specifies the terms and conditions for redistribution.
  *
  * All rights reserved.  The Berkeley software License Agreement
  * specifies the terms and conditions for redistribution.
  *
- *     @(#)ubareg.h    7.4 (Berkeley) %G%
+ *     @(#)ubareg.h    7.5 (Berkeley) %G%
  */
 
 /*
  */
 
 /*
@@ -28,7 +28,7 @@
 #define        DW730   3               /* has adaptor regs, no sr: 750, 730 */
 #endif
 
 #define        DW730   3               /* has adaptor regs, no sr: 750, 730 */
 #endif
 
-#if VAX630
+#if VAX630 || VAX650
 #define        QBA     4               /* 22-bit Q-bus, no adaptor regs: uVAX II */
 #endif
 
 #define        QBA     4               /* 22-bit Q-bus, no adaptor regs: uVAX II */
 #endif
 
@@ -237,7 +237,7 @@ struct uba_regs {
  * Symbolic BUS addresses for UBAs.
  */
 
  * Symbolic BUS addresses for UBAs.
  */
 
-#if VAX630
+#if VAX630 || VAX650
 #define        QBAMAP630       ((struct pte *)0x20088000)
 #define        QMEM630         0x30000000
 #define        QIOPAGE630      0x20000000
 #define        QBAMAP630       ((struct pte *)0x20088000)
 #define        QMEM630         0x30000000
 #define        QIOPAGE630      0x20000000
index 4c7518e..fd28190 100644 (file)
@@ -17,7 +17,7 @@
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- *     @(#)uda.c       7.19 (Berkeley) %G%
+ *     @(#)uda.c       7.20 (Berkeley) %G%
  */
 
 /*
  */
 
 /*
@@ -330,8 +330,8 @@ again:
                        goto bad;
 
        /* should have interrupted by now */
                        goto bad;
 
        /* should have interrupted by now */
-#ifdef VAX630
-       if (cpu == VAX_630)
+#ifdef QBA
+       if (cpu == VAX_630 || cpu == VAX_650)
                br = 0x15;      /* screwy interrupt structure */
 #endif
        return (sizeof (struct udadevice));
                br = 0x15;      /* screwy interrupt structure */
 #endif
        return (sizeof (struct udadevice));
@@ -1272,7 +1272,7 @@ udaintr(ctlr)
        register struct mscp *mp;
        register int i;
 
        register struct mscp *mp;
        register int i;
 
-#ifdef VAX630
+#ifdef QBA
        (void) spl5();          /* Qbus interrupt protocol is odd */
 #endif
        sc->sc_wticks = 0;      /* reset interrupt watchdog */
        (void) spl5();          /* Qbus interrupt protocol is odd */
 #endif
        sc->sc_wticks = 0;      /* reset interrupt watchdog */