V1.66 (MicroVAX 3000 support)

Keith Bostic bostic at OKEEFFE.BERKELEY.EDU
Thu Nov 3 04:59:44 AEST 1988


Subject: MicroVAX 3000 support
Index: sys 4.3BSD-tahoe

Description:
	The attached shar adds support for the uVAX 3200, 3500,
	and 3600 to the 4.3BSD-tahoe release.  The changes were
	provided by Mt. Xinu and integrated by Thomas Ferrin of
	UCSF.

# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	3200
#	3200/vaxif
#	3200/vaxif/if_qe.c
#	3200/conf
#	3200/conf/GENERIC.vax
#	3200/conf/files.vax
#	3200/vax
#	3200/vax/autoconf.c
#	3200/vax/clock.c
#	3200/vax/cpu.h
#	3200/vax/cpudata.c
#	3200/vax/emulate.s
#	3200/vax/genassym.c
#	3200/vax/ka650.c
#	3200/vax/ka650.h
#	3200/vax/locore.s
#	3200/vax/machdep.c
#	3200/vax/mtpr.h
#	3200/vaxstand
#	3200/vaxstand/Makefile
#	3200/vaxstand/autoconf.c
#	3200/vaxstand/prf.c
#	3200/vaxstand/qdcons.c
#	3200/vaxstand/srt0.c
#	3200/vaxuba
#	3200/vaxuba/dhu.c
#	3200/vaxuba/tmscp.c
#	3200/vaxuba/ubareg.h
#	3200/vaxuba/uda.c
#
echo c - 3200
mkdir 3200 > /dev/null 2>&1
echo c - 3200/vaxif
mkdir 3200/vaxif > /dev/null 2>&1
echo x - 3200/vaxif/if_qe.c
sed 's/^X//' >3200/vaxif/if_qe.c << 'END-of-3200/vaxif/if_qe.c'
X*** /tmp/d25052	Tue Nov  1 09:39:08 1988
X--- if_qe.c	Tue Nov  1 09:37:42 1988
X***************
X*** 1,8 ****
X! /*	@(#)if_qe.c	7.6 (Berkeley) 5/28/88 */
X  
X  /* from  @(#)if_qe.c	1.15	(ULTRIX)	4/16/86 */
X   
X-  
X  /****************************************************************
X   *								*
X   *        Licensed from Digital Equipment Corporation 		*
X--- 1,27 ----
X! /*
X!  * Copyright (c) 1988 Regents of the University of California.
X!  * All rights reserved.
X!  *
X!  * This code is derived from software contributed to Berkeley by
X!  * Digital Equipment Corp.
X!  *
X!  * Redistribution and use in source and binary forms are permitted
X!  * provided that the above copyright notice and this paragraph are
X!  * duplicated in all such forms and that any documentation,
X!  * advertising materials, and other materials related to such
X!  * distribution and use acknowledge that the software was developed
X!  * by the University of California, Berkeley.  The name of the
X!  * University may not be used to endorse or promote products derived
X!  * from this software without specific prior written permission.
X!  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
X!  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
X!  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
X!  *
X!  *	@(#)if_qe.c	7.8 (Berkeley) 10/4/88
X!  */
X  
X  /* from  @(#)if_qe.c	1.15	(ULTRIX)	4/16/86 */
X   
X  /****************************************************************
X   *								*
X   *        Licensed from Digital Equipment Corporation 		*
X***************
X*** 239,244 ****
X--- 258,264 ----
X  	 * we have to setup the interface by transmitting a setup  packet.
X  	 */
X  	addr->qe_csr = QE_RESET;
X+ 	addr->qe_csr &= ~QE_RESET;
X  	addr->qe_vector = (uba_hd[numuba].uh_lastiv -= 4);
X   
X  	/*
X***************
X*** 326,333 ****
X  	 */
X  	for( i=0 ; i<6 ; i++ )
X  		sc->setup_pkt[i][1] = sc->qe_addr[i] = addr->qe_sta_addr[i] & 0xff;  
X! 	printf("qe%d: hardware address %s\n", ui->ui_unit,
X  		ether_sprintf(sc->qe_addr));
X   
X  	/*
X  	 * Save the vector for initialization at reset time.
X--- 346,356 ----
X  	 */
X  	for( i=0 ; i<6 ; i++ )
X  		sc->setup_pkt[i][1] = sc->qe_addr[i] = addr->qe_sta_addr[i] & 0xff;  
X! 	addr->qe_vector |= 1;
X! 	printf("qe%d: %s, hardware address %s\n", ui->ui_unit,
X! 		addr->qe_vector&01 ? "delqa":"deqna",
X  		ether_sprintf(sc->qe_addr));
X+ 	addr->qe_vector &= ~1;
X   
X  	/*
X  	 * Save the vector for initialization at reset time.
END-of-3200/vaxif/if_qe.c
echo c - 3200/conf
mkdir 3200/conf > /dev/null 2>&1
echo x - 3200/conf/GENERIC.vax
sed 's/^X//' >3200/conf/GENERIC.vax << 'END-of-3200/conf/GENERIC.vax'
X*** GENERIC.vax	Mon Oct 31 20:22:15 1988
X--- GENERIC.vax	Tue Aug 30 10:30:00 1988
X***************
X*** 1,5 ****
X  #
X! # GENERIC VAX
X  #
X  machine		vax
X  cpu		"VAX8600"
X--- 1,5 ----
X  #
X! # GENERIC VAX + MicroVAX II/III
X  #
X  machine		vax
X  cpu		"VAX8600"
X***************
X*** 7,12 ****
X--- 7,15 ----
X  cpu		"VAX780"
X  cpu		"VAX750"
X  cpu		"VAX730"
X+ cpu		"VAX630"
X+ cpu		"VAX650"
X+ makeoptions	INLINEOPTS="-s"
X  ident		GENERIC
X  timezone	8 dst
X  maxusers	8
X***************
X*** 115,120 ****
X--- 118,126 ----
X  
X  device		lp0	at uba? csr 0177514		vector lpintr
X  
X+ device		qv0	at uba0 csr 0177200 	vector qvkint qvvint
X+ device		qd0	at uba0 csr 0177400 	vector qddint qdaint qdiint  
X+ 
X  pseudo-device	pty
X  pseudo-device	loop
X  pseudo-device	ether
X***************
X*** 124,126 ****
X--- 130,133 ----
X  device		de0	at uba? csr 0174510	vector deintr
X  device		il0	at uba? csr 0164000	vector ilrint ilcint
X  device		ex0	at uba? csr 0164344	vector excdint
X+ device		qe0	at uba? csr 0174440	vector qeintr
END-of-3200/conf/GENERIC.vax
echo x - 3200/conf/files.vax
sed 's/^X//' >3200/conf/files.vax << 'END-of-3200/conf/files.vax'
X*** /tmp/d20893	Mon Oct 31 20:20:43 1988
X--- files.vax	Sat Aug 27 07:23:59 1988
X***************
X*** 7,12 ****
X--- 7,13 ----
X  vax/dkbad.c		standard
X  vax/flp.c		standard
X  vax/in_cksum.c		optional inet
X+ vax/ka650.c		standard
X  vax/ka630.c		standard
X  vax/ka730.c		standard
X  vax/ka750.c		standard
END-of-3200/conf/files.vax
echo c - 3200/vax
mkdir 3200/vax > /dev/null 2>&1
echo x - 3200/vax/autoconf.c
sed 's/^X//' >3200/vax/autoconf.c << 'END-of-3200/vax/autoconf.c'
X*** /tmp/d20586	Mon Oct 31 20:12:56 1988
X--- autoconf.c	Mon Oct 31 20:12:46 1988
X***************
X*** 3,9 ****
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)autoconf.c	7.15 (Berkeley) 5/26/88
X   */
X  
X  /*
X--- 3,9 ----
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)autoconf.c	7.16 (Berkeley) 8/27/88
X   */
X  
X  /*
X***************
X*** 148,153 ****
X--- 148,158 ----
X  		printf("MicroVAX-II\n");
X  		break;
X  #endif
X+ #if VAX650
X+ 	case VAX_650:
X+ 		printf("MicroVAX 3000, ucode rev %d\n", cpusid.cpu650.cp_urev);
X+ 		break;
X+ #endif
X  	}
X  	for (ocp = percpu; ocp->pc_cputype; ocp++)
X  		if (ocp->pc_cputype == cpusid.cpuany.cp_type) {
X***************
X*** 212,218 ****
X  
X  		switch (iob->io_type) {
X  
X! #if VAX630
X  		case IO_QBUS:
X  			probeqbus((struct qbus *)iob->io_details);
X  			break;
X--- 217,223 ----
X  
X  		switch (iob->io_type) {
X  
X! #if VAX630 || VAX650
X  		case IO_QBUS:
X  			probeqbus((struct qbus *)iob->io_details);
X  			break;
END-of-3200/vax/autoconf.c
echo x - 3200/vax/clock.c
sed 's/^X//' >3200/vax/clock.c << 'END-of-3200/vax/clock.c'
X*** /tmp/d20567	Mon Oct 31 20:12:02 1988
X--- clock.c	Sat Aug 27 07:14:44 1988
X***************
X*** 1,9 ****
X  /*
X   * Copyright (c) 1982, 1986, 1988 Regents of the University of California.
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)clock.c	7.3 (Berkeley) 7/9/88
X   */
X  
X  #include "param.h"
X--- 1,10 ----
X+ 
X  /*
X   * Copyright (c) 1982, 1986, 1988 Regents of the University of California.
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)clock.c	7.4 (Berkeley) 8/27/88
X   */
X  
X  #include "param.h"
X***************
X*** 115,121 ****
X  }
X  #endif
X  
X! #if VAX8600 || VAX780 || VAX750 || VAX730
X  vaxstd_clkread(base)
X  	time_t base;
X  {
X--- 116,122 ----
X  }
X  #endif
X  
X! #if VAX8600 || VAX780 || VAX750 || VAX730 || VAX650
X  vaxstd_clkread(base)
X  	time_t base;
X  {
END-of-3200/vax/clock.c
echo x - 3200/vax/cpu.h
sed 's/^X//' >3200/vax/cpu.h << 'END-of-3200/vax/cpu.h'
X*** /tmp/d20713	Mon Oct 31 20:15:36 1988
X--- cpu.h	Sat Aug 27 07:05:19 1988
X***************
X*** 3,9 ****
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)cpu.h	7.5 (Berkeley) 7/9/88
X   */
X  
X  #ifndef LOCORE
X--- 3,9 ----
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)cpu.h	7.6 (Berkeley) 8/27/88
X   */
X  
X  #ifndef LOCORE
X***************
X*** 55,60 ****
X--- 55,65 ----
X  			:8,
X   			cp_type:8;		/* VAX_630 */
X   	} cpu630;
X+ 	struct cpu650 {
X+ 		u_int	cp_urev:8,		/* ucode rev level */
X+ 			:16,			/* reserved */
X+ 			cp_type:8;		/* VAX_650 */
X+ 	} cpu650;
X  };
X  #endif
X  /*
X***************
X*** 70,77 ****
X  #define	VAX_8500	6	/* same as 8800, 8700 */
X  #define	VAX_610		7	/* uVAX I */
X  #define	VAX_630		8	/* uVAX II */
X  
X! #define	VAX_MAX		8
X  
X  /*
X   * Main IO backplane types.
X--- 75,83 ----
X  #define	VAX_8500	6	/* same as 8800, 8700 */
X  #define	VAX_610		7	/* uVAX I */
X  #define	VAX_630		8	/* uVAX II */
X+ #define	VAX_650		10	/* uVAX 3000 */
X  
X! #define	VAX_MAX		10
X  
X  /*
X   * Main IO backplane types.
END-of-3200/vax/cpu.h
echo x - 3200/vax/cpudata.c
sed 's/^X//' >3200/vax/cpudata.c << 'END-of-3200/vax/cpudata.c'
X*** /tmp/d20553	Mon Oct 31 20:11:42 1988
X--- cpudata.c	Sat Aug 27 07:14:44 1988
X***************
X*** 3,9 ****
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)cpudata.c	7.4 (Berkeley) 7/9/88
X   */
X  
X  #include "pte.h"
X--- 3,9 ----
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)cpudata.c	7.5 (Berkeley) 8/27/88
X   */
X  
X  #include "pte.h"
X***************
X*** 126,132 ****
X  };
X  struct iobus io730[] = { IO_XXX730, 0, 0, (caddr_t)&xxx730 };
X  #endif
X! #if VAX630
X  struct qbus qbus630 = {
X  	QBA, QBAPAGES, QBAMAP630, (caddr_t)QMEM630, (caddr_t)QIOPAGE630
X  };
X--- 126,132 ----
X  };
X  struct iobus io730[] = { IO_XXX730, 0, 0, (caddr_t)&xxx730 };
X  #endif
X! #if VAX630 || VAX650
X  struct qbus qbus630 = {
X  	QBA, QBAPAGES, QBAMAP630, (caddr_t)QMEM630, (caddr_t)QIOPAGE630
X  };
X***************
X*** 157,162 ****
X--- 157,169 ----
X  };
X  #endif
X  
X+ #if VAX650
X+ int ka650_clkstartrt(), vaxstd_clkread(), vaxstd_clkwrite();
X+ struct clockops ka650_clockops = {
X+ 	ka650_clkstartrt, vaxstd_clkread, vaxstd_clkwrite
X+ };
X+ #endif
X+ 
X  /*
X   * CPU dependent routines.
X   */
X***************
X*** 202,207 ****
X--- 209,221 ----
X  };
X  #endif
X  
X+ #if VAX650
X+ int	ka650_memnop(), ka650_memerr(), ka650_mchk(), ka650_init();
X+ struct	cpuops ka650_ops = {
X+ 	&ka650_clockops, ka650_memnop, ka650_memerr, ka650_mchk, ka650_init
X+ };
X+ #endif
X+ 
X  struct percpu percpu[] = {
X  #if VAX8600
X  	{ VAX_8600, 6, 2, io8600, &ka860_ops },
X***************
X*** 220,225 ****
X--- 234,242 ----
X  #endif
X  #if VAX630
X  	{ VAX_630, 2, 1, io630, &ka630_ops },
X+ #endif
X+ #if VAX650
X+ 	{ VAX_650, 4, 1, io630, &ka650_ops },
X  #endif
X  	0,
X  };
END-of-3200/vax/cpudata.c
echo x - 3200/vax/emulate.s
sed 's/^X//' >3200/vax/emulate.s << 'END-of-3200/vax/emulate.s'
X*** /tmp/d20645	Mon Oct 31 20:14:49 1988
X--- emulate.s	Sat Aug 27 07:14:40 1988
X***************
X*** 1,8 ****
X  /*
X!  *	@(#)emulate.s	7.2 (Berkeley) 1/16/87
X   */
X  
X! #ifdef VAX630
X  /*
X   * String instruction emulation - MicroVAX only.  These routines are called
X   * from locore.s when an "emulate" fault occurs on the MicroVAX.  They are
X--- 1,8 ----
X  /*
X!  *	@(#)emulate.s	7.3 (Berkeley) 8/27/88
X   */
X  
X! #if VAX630 || VAX650
X  /*
X   * String instruction emulation - MicroVAX only.  These routines are called
X   * from locore.s when an "emulate" fault occurs on the MicroVAX.  They are
END-of-3200/vax/emulate.s
echo x - 3200/vax/genassym.c
sed 's/^X//' >3200/vax/genassym.c << 'END-of-3200/vax/genassym.c'
X*** /tmp/d20516	Mon Oct 31 20:10:52 1988
X--- genassym.c	Mon Oct 31 20:10:38 1988
X***************
X*** 3,9 ****
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)genassym.c	7.2 (Berkeley) 10/28/87
X   */
X  
X  #define KERNEL
X--- 3,9 ----
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)genassym.c	7.3 (Berkeley) 8/27/88
X   */
X  
X  #define KERNEL
X***************
X*** 11,16 ****
X--- 11,17 ----
X  #define	VAX750	1
X  #define	VAX730	1
X  #define	VAX630	1
X+ #define	VAX650	1
X  
X  #include "pte.h"
X  
END-of-3200/vax/genassym.c
echo x - 3200/vax/ka650.c
sed 's/^X//' >3200/vax/ka650.c << 'END-of-3200/vax/ka650.c'
X/*
X * Copyright (c) 1988 The Regents of the University of California.
X * All rights reserved.
X *
X * Redistribution and use in source and binary forms are permitted
X * provided that the above copyright notice and this paragraph are
X * duplicated in all such forms and that any documentation,
X * advertising materials, and other materials related to such
X * distribution and use acknowledge that the software was developed
X * by the University of California, Berkeley.  The name of the
X * University may not be used to endorse or promote products derived
X * from this software without specific prior written permission.
X * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
X * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
X * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
X *
X *	@(#)ka650.c	7.3 (Berkeley) 10/31/88
X */
X
X#if VAX650
X
X/*
X * vax650-specific code.
X */
X
X#include "param.h"
X#include "time.h"
X#include "kernel.h"
X#include "systm.h"
X
X#include "cpu.h"
X#include "clock.h"
X#include "psl.h"
X#include "mem.h"
X#include "mtpr.h"
X#include "ka650.h"
X
X
Xka650_init()
X{
X	ioaccess(KA650_MERR, KA650MERRmap, sizeof(ka650merr));
X	ioaccess(KA650_CBD, KA650CBDmap, sizeof(ka650cbd));
X	ioaccess(KA650_SSC, KA650SSCmap, sizeof(ka650ssc));
X	ioaccess(KA650_IPCR, KA650IPCRmap, sizeof(ka650ipcr));
X	ioaccess(KA650_CACHE, KA650CACHEmap, KA650_CACHESIZE);
X	ka650encache();
X	if (ctob(physmem) > ka650merr.merr_qbmbr) {
X		printf("physmem(0x%x) > qbmbr(0x%x)\n",
X		    ctob(physmem), ka650merr.merr_qbmbr);
X		panic("qbus map unprotected");
X	}
X}
X
Xka650_clkstartrt()
X{
X	mtpr(ICCS, ICCS_IE);
X}
X
Xka650_memnop()
X{
X	/* void */
X}
X
Xka650_memerr()
X{
X	register char *cp = (char *)0;
X	register int m;
X	extern u_int cache2tag;
X
X	if (ka650cbd.cbd_cacr & CACR_CPE) {
X		printf("cache 2 tag parity error: ");
X		if (time.tv_sec - cache2tag < 7) {
X			ka650discache();
X			printf("cacheing disabled\n");
X		} else {
X			cache2tag = time.tv_sec;
X			printf("flushing cache\n");
X			ka650encache();
X		}
X	}
X	m = ka650merr.merr_errstat;
X	ka650merr.merr_errstat = MEM_EMASK;
X	if (m & MEM_CDAL) {
X		cp = "Bus Parity";
X	} else if (m & MEM_RDS) {
X		cp = "Hard ECC";
X	} else if (m & MEM_CRD) {
X		cp = "Soft ECC";
X	}
X	if (cp) {
X		printf("%sMemory %s Error: page 0x%x\n",
X			(m & MEM_DMA) ? "DMA " : "", cp,
X			(m & MEM_PAGE) >> MEM_PAGESHFT);
X	}
X}
X
X#define NMC650	15
Xchar *mc650[] = {
X	0,			"FPA proto err",	"FPA resv inst",
X	"FPA Ill Stat 2",	"FPA Ill Stat 1",	"PTE in P0, TB miss",
X	"PTE in P1, TB miss",	"PTE in P0, Mod",	"PTE in P1, Mod",
X	"Illegal intr IPL",	"MOVC state error",	"bus read error",
X	"SCB read error",	"bus write error",	"PCB write error"
X};
Xu_int	cache1tag;
Xu_int	cache1data;
Xu_int	cdalerr;
Xu_int	cache2tag;
X
Xstruct mc650frame {
X	int	mc65_bcnt;		/* byte count == 0xc */
X	int	mc65_summary;		/* summary parameter */
X	int	mc65_mrvaddr;		/* most recent vad */
X	int	mc65_istate1;		/* internal state */
X	int	mc65_istate2;		/* internal state */
X	int	mc65_pc;		/* trapped pc */
X	int	mc65_psl;		/* trapped psl */
X};
X
Xka650_mchk(cmcf)
X	caddr_t cmcf;
X{
X	register struct mc650frame *mcf = (struct mc650frame *)cmcf;
X	register u_int type = mcf->mc65_summary;
X	register u_int i;
X
X	printf("machine check %x: %s%s\n", type);
X	if (type >= 0x80 && type <= 0x83)
X		type -= (0x80 + 11);
X	if (type < NMC650)
X		printf("%s: ", mc650[type]);
X	printf("vap %x istate1 %x istate2 %x pc %x psl %x\n",
X	    mcf->mc65_mrvaddr, mcf->mc65_istate1, mcf->mc65_istate2,
X	    mcf->mc65_pc, mcf->mc65_psl);
X	printf("dmaser=0x%b qbear=0x%x dmaear=0x%x\n",
X	    ka650merr.merr_dser, DMASER_BITS, ka650merr.merr_qbear,
X	    ka650merr.merr_dear);
X	ka650merr.merr_dser = DSER_CLEAR;
X
X	i = mfpr(CAER);
X	mtpr(CAER, CAER_MCC | CAER_DAT | CAER_TAG);
X	if (i & CAER_MCC) {
X		printf("cache 1 ");
X		if (i & CAER_DAT) {
X			printf("data");
X			i = cache1data;
X			cache1data = time.tv_sec;
X		}
X		if (i & CAER_TAG) {
X			printf("tag");
X			i = cache1tag;
X			cache1tag = time.tv_sec;
X		}
X	} else if ((i & CAER_MCD) || (ka650merr.merr_errstat & MEM_CDAL)) {
X		printf("CDAL");
X		i = cdalerr;
X		cdalerr = time.tv_sec;
X	}
X	if (time.tv_sec - i < 7) {
X		ka650discache();
X		printf(" parity error:  cacheing disabled\n");
X	} else {
X		printf(" parity error:  flushing cache\n");
X		ka650encache();
X	}
X	/*
X	 * May be able to recover if type is 1-4, 0x80 or 0x81, but
X	 * only if FPD is set in the saved PSL, or bit VCR in Istate2
X	 * is clear.
X	 */
X	if ((type > 0 && type < 5) || type == 11 || type == 12) {
X		if ((mcf->mc65_psl & PSL_FPD)
X		    || !(mcf->mc65_istate2 & IS2_VCR)) {
X			ka650_memerr();
X			return (MCHK_RECOVERED);
X		}
X	}
X	return (MCHK_PANIC);
X}
X
X/*
X * Make sure both caches are off and not in diagnostic mode.  Clear the
X * 2nd level cache (by writing to each quadword entry), then enable it.
X * Enable 1st level cache too.
X */
Xka650encache()
X{
X	register int i;
X
X	ka650discache();
X	for (i = 0; i < (KA650_CACHESIZE / sizeof(ka650cache[0])); i += 2)
X		ka650cache[i] = 0;
X	ka650cbd.cbd_cacr = CACR_CEN;
X	mtpr(CADR, CADR_SEN2 | CADR_SEN1 | CADR_CENI | CADR_CEND);
X}
X
Xka650discache()
X{
X	mtpr(CADR, 0);
X	ka650cbd.cbd_cacr = CACR_CPE;
X}
X#endif
END-of-3200/vax/ka650.c
echo x - 3200/vax/ka650.h
sed 's/^X//' >3200/vax/ka650.h << 'END-of-3200/vax/ka650.h'
X/*
X * Copyright (c) 1988  Regents of the University of California.
X * All rights reserved.  The Berkeley software License Agreement
X * specifies the terms and conditions for redistribution.
X *
X *	@(#)ka650.h	7.2 (Berkeley) 9/22/88
X */
X
X/*
X *
X * Definitions specific to the ka650 (uVAX 3600/3602) cpu card.
X */
X
X#ifdef VAX650
X/*
X * CAER: Memory System Error Register (IPR 39)
X */
X#define CAER_DAL	0x00000040	/* CDAL or level 2 cache data parity */
X#define CAER_MCD	0x00000020	/* mcheck due to DAL parity error */
X#define CAER_MCC	0x00000010	/* mcheck due to 1st lev cache parity */
X#define CAER_DAT	0x00000002	/* data parity in 1st level cache */
X#define CAER_TAG	0x00000001	/* tag parity in 1st level cache */
X
X/*
X * CADR: Cache Disable Register (IPR 37)
X */
X#define CADR_STMASK	0x000000f0	/* 1st level cache state mask */
X#define CADR_SEN2	0x00000080	/* 1st level cache set 2 enabled */
X#define CADR_SEN1	0x00000040	/* 1st level cache set 1 enabled */
X#define CADR_CENI	0x00000020	/* 1st level I-stream caching enabled */
X#define CADR_CEND	0x00000010	/* 1st level D-stream caching enabled */
X
X/*
X * Internal State Info 2: (for mcheck recovery)
X */
X#define IS2_VCR		0x00008000	/* VAX Can't Restart flag */
X
X/*
X * DMA System Error Register (merr_dser)
X */
X#define DSER_QNXM	0x00000080	/* Q-22 Bus NXM */
X#define DSER_QPE	0x00000020	/* Q-22 Bus parity Error */
X#define DSER_MEM	0x00000010	/* Main mem err due to ext dev DMA */
X#define DSER_LOST	0x00000008	/* Lost error: DSER <7,5,4,0> set */
X#define DSER_NOGRANT	0x00000004	/* No Grant timeout on cpu demand R/W */
X#define DSER_DNXM	0x00000001	/* DMA NXM */
X#define DSER_CLEAR 	(DSER_QNXM | DSER_QPE | DSER_MEM |  \
X			 DSER_LOST | DSER_NOGRANT | DSER_DNXM)
X#define DMASER_BITS \
X"\20\20BHALT\17DCNEG\10QBNXM\6QBPE\5MEMERR\4LOSTERR\3NOGRANT\1DMANXM"
X
X#ifndef LOCORE
X/*
X * Local registers (in I/O space)
X * This is done in disjoint sections.  Map names are set in locore.s
X * and they are mapped in routine configcpu()
X */
X
X/*
X * memory error & configuration registers
X */
Xstruct ka650_merr {
X	u_long	merr_scr;	/* System Config Register */
X	u_long	merr_dser;	/* DMA System Error Register */
X	u_long	merr_qbear;	/* QBus Error Address Register */
X	u_long	merr_dear;	/* DMA Error Address Register */
X	u_long	merr_qbmbr;	/* Q Bus Map Base address Register */
X	u_long	pad[59];
X	u_long	merr_csr[16];	/* Main Memory Config Regs (16 banks) */
X	u_long	merr_errstat;	/* Main Memory Error Status */
X	u_long	merr_cont;	/* Main Memory Control */
X};
X#define KA650_MERR	0x20080000
X
X/*
X * Main Memory Error Status Register (merr_errstat)
X */
X#define MEM_EMASK	0xe0000180	/* mask of all err bits */
X#define MEM_RDS		0x80000000	/* uncorrectable main memory */
X#define MEM_RDSHIGH	0x40000000	/* high rate RDS errors */
X#define MEM_CRD		0x20000000	/* correctable main memory */
X#define MEM_DMA		0x00000100	/* DMA read or write error */
X#define MEM_CDAL	0x00000080	/* CDAL Parity error on write */
X#define MEM_PAGE	0x1ffffe00	/* Offending Page Number */
X#define MEM_PAGESHFT	9		/* Shift to normalize page number */
X
X/*
X * Main Memory Control & Diag Status Reg (merr_cont)
X */
X#define MEM_CRDINT	0x00001000	/* CRD interrupts enabled */
X#define MEM_REFRESH	0x00000800	/* Forced memory refresh */
X#define MEM_ERRDIS	0x00000400	/* error detect disable	*/
X#define MEM_DIAG	0x00000080	/* Diagnostics mode */
X#define MEM_CHECK	0x0000007f	/* check bits for diagnostic mode */
X
X/*
X * Main Memory Config Regs (merr_csr[0-15])
X */
X#define MEM_BNKENBLE	0x80000000	/* Bank Enable */
X#define MEM_BNKNUM	0x03c00000	/* Physical map Bank number */
X#define MEM_BNKUSAGE	0x00000003	/* Bank Usage */
X
X/*
X * Cache Control & Boot/Diag registers
X */
Xstruct ka650_cbd {
X	u_char	cbd_cacr;	/* Low byte: Cache Enable & Parity Err detect */
X	u_char	cbd_cdf1;	/* Cache diagnostic field (unused) */
X	u_char	cbd_cdf2;	/* Cache diagnostic field (unused) */
X	u_char	pad;
X	u_long	cbd_bdr;	/* Boot & Diagnostic Register (unused) */
X};
X#define KA650_CBD	0x20084000
X
X/*
X * CACR: Cache Control Register (2nd level cache) (cbd_cacr)
X */
X#define CACR_CEN	0x00000010	/* Cache enable */
X#define CACR_CPE	0x00000020	/* Cache Parity Error */
X
X/*
X * System Support Chip (SSC) registers
X */
Xstruct ka650_ssc {
X	u_long	ssc_sscbr;	/* SSC Base Addr Register */
X	u_long	pad1[3];
X	u_long	ssc_ssccr;	/* SSC Configuration Register */
X	u_long	pad2[3];
X	u_long	ssc_cbtcr;	/* CDAL Bus Timeout Control Register */
X	u_long	pad3[55];
X	u_long	ssc_tcr0;	/* timer control reg 0 */
X	u_long	ssc_tir0;	/* timer interval reg 0 */
X	u_long	ssc_tnir0;	/* timer next interval reg 0 */
X	u_long	ssc_tivr0;	/* timer interrupt vector reg 0 */
X	u_long	ssc_tcr1;	/* timer control reg 1 */
X	u_long	ssc_tir1;	/* timer interval reg 1 */
X	u_long	ssc_tnir1;	/* timer next interval reg 1 */
X	u_long	ssc_tivr1;	/* timer interrupt vector reg 1 */
X	u_long	pad4[184];
X	u_char	ssc_cpmbx;	/* Console Program Mail Box: Lang & Hact */
X	u_char	ssc_terminfo;	/* TTY info: Video Dev, MCS, CRT & ROM flags */
X	u_char	ssc_keyboard;	/* Keyboard code */
X};
X#define KA650_SSC	0x20140000
X
X/*
X * CBTCR: CDAL Bus Timeout Control Register (ssc_cbtcr)
X */
X#define CBTCR_BTO	0x80000000	/* r/w unimp IPR or unack intr */
X#define CBTCR_RWT	0x40000000	/* CDAL Bus Timeout on CPU or DMA */
X
X/*
X * TCR0/TCR1: Programable Timer Control Registers (ssc_tcr[01])
X * (The rest of the bits are the same as in the standard VAX
X *	Interval timer and are defined in clock.h)
X */
X#define TCR_STP		0x00000004	/* Stop after time-out */
X
X/*
X * Flags for Console Program Mail Box
X */
X#define CPMB650_HALTACT	0x03	/* Field for halt action */
X#define CPMB650_RESTART	0x01	/* Restart */
X#define CPMB650_REBOOT	0x02	/* Reboot */
X#define CPMB650_HALT	0x03	/* Halt */
X#define CPMB650_BIP	0x04	/* Bootstrap in progress */
X#define CPMB650_RIP	0x08	/* Restart in progress */
X#define CPMB650_LANG	0xf0	/* Language field */
X
X/*
X * Inter Processor Communication Register
X * To determine if memory error was from QBUS device DMA (as opposed to cpu).
X */
Xstruct ka650_ipcr {
X	u_long	pad[80];
X	u_short	ipcr0;		/* InterProcessor Comm Reg for arbiter */
X};
X#define KA650_IPCR	0x20001e00
X
X#ifndef STANDALONE
X/*
X * External declarations of the map names (declared in spt.s)
X * for the local register space.
X */
Xextern	struct pte KA650MERRmap[];
Xextern	struct ka650_merr ka650merr;	/* mem err & mem config regs */
Xextern	struct pte KA650CBDmap[];
Xextern	struct ka650_cbd ka650cbd;	/* cache control & boot/diag regs */
Xextern	struct pte KA650SSCmap[];
Xextern	struct ka650_ssc ka650ssc;	/* SSC regs (& console prog mail box) */
Xextern	struct pte KA650IPCRmap[];
Xextern	struct ka650_ipcr ka650ipcr;	/* InterProcessor Com Regs */
Xextern	struct pte KA650CACHEmap[];
Xextern	int	ka650cache[];		/* Cache Diagnostic space (for flush) */
X#endif	STANDALONE
X#endif	LOCORE
X
X/*
X * Physical start address of the Qbus memory.
X * The q-bus memory size is 4 meg.
X * Physical start address of the I/O space (where the 8Kbyte I/O page is).
X */
X#define KA650_QMEM	0x30000000
X#define KA650_QMEMSIZE	(512*8192)
X#define KA650_QDEVADDR	0x20000000
X
X/*
X * Mapping info for Cache Entries, including
X * Size (in bytes) of 2nd Level Cache for cache flush operation
X */
X#define KA650_CACHE	0x10000000
X#define KA650_CACHESIZE	(64*1024)
X
X/*
X * Useful ROM addresses
X */
X#define	KA650ROM_SIDEX	0x20060004	/* system ID extension */
X#define	KA650ROM_GETC	0x20060008	/* (jsb) get character from console */
X#define	KA650ROM_PUTS	0x2006000c	/* (jsb) put string to console */
X#define	KA650ROM_GETS	0x20060010	/* (jsb) read string with prompt */
X#define KA650_CONSTYPE	0x20140401	/* byte at which console type resides */
X#endif
END-of-3200/vax/ka650.h
echo x - 3200/vax/locore.s
sed 's/^X//' >3200/vax/locore.s << 'END-of-3200/vax/locore.s'
X*** /tmp/d20629	Mon Oct 31 20:14:11 1988
X--- locore.s	Mon Oct 31 20:13:36 1988
X***************
X*** 3,9 ****
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)locore.s	7.12 (Berkeley) 5/27/88
X   */
X  
X  #include "psl.h"
X--- 3,9 ----
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)locore.s	7.15 (Berkeley) 9/22/88
X   */
X  
X  #include "psl.h"
X***************
X*** 20,25 ****
X--- 20,26 ----
X  #include "clock.h"
X  #include "ioa.h"
X  #include "ka630.h"
X+ #include "ka650.h"
X  #include "ka820.h"
X  #include "../vaxuba/ubareg.h"
X  
X***************
X*** 113,118 ****
X--- 114,121 ----
X  	.word	1f-0b		# 6 is 8800 (unsupported)
X  	.word	1f-0b		# 7 is 610  (unsupported)
X  	.word	1f-0b		# 8 is 630
X+ 	.word	1f-0b		# 9 is ???
X+ 	.word	9f-0b		# 10 is 650
X  5:
X  #if defined(VAX8200) || defined(VAX750) || defined(VAX730)
X  	mtpr	$0xf,$MCESR
X***************
X*** 127,136 ****
X--- 130,147 ----
X  #if VAX780
X  	mtpr	$0,$SBIFS
X  #endif
X+ 	brb	1f
X+ 9:
X+ #if VAX650
X+ 	bitl	$PG_V,_KA650MERRmap
X+ 	beql	1f	# don't bother clearing err reg if not mapped in
X+ 	movl	$DSER_CLEAR,_ka650merr+4
X+ #endif
X  1:
X  	addl2	(sp)+,sp		# discard mchchk trash
X  	movl	nofault,(sp)
X  	rei
X+ 
X  SCBVEC(kspnotval):
X  	PANIC("KSP not valid");
X  SCBVEC(powfail):
X***************
X*** 676,682 ****
X  	POPR
X  	rei
X  
X! #ifdef VAX630
X  /*
X   * Emulation OpCode jump table:
X   *	ONLY GOES FROM 0xf8 (-8) TO 0x3B (59)
X--- 687,693 ----
X  	POPR
X  	rei
X  
X! #if VAX630 || VAX650
X  /*
X   * Emulation OpCode jump table:
X   *	ONLY GOES FROM 0xf8 (-8) TO 0x3B (59)
X***************
X*** 775,781 ****
X   */
X  
X  SCBVEC(emulate):
X! #ifdef VAX630
X  	movl	r11,32(sp)		# save register r11 in unused operand
X  	movl	r10,36(sp)		# save register r10 in unused operand
X  	cvtbl	(sp),r10		# get opcode
X--- 786,792 ----
X   */
X  
X  SCBVEC(emulate):
X! #if VAX630 || VAX650
X  	movl	r11,32(sp)		# save register r11 in unused operand
X  	movl	r10,36(sp)		# save register r10 in unused operand
X  	cvtbl	(sp),r10		# get opcode
X***************
X*** 791,797 ****
X  	rei
X  noemulate:
X  	addl2	$48,sp			# adjust stack for
X! #endif VAX630
X  	.word	0xffff			# "reserved instruction fault"
X  SCBVEC(emulateFPD):
X  	.word	0xffff			# "reserved instruction fault"
X--- 802,808 ----
X  	rei
X  noemulate:
X  	addl2	$48,sp			# adjust stack for
X! #endif
X  	.word	0xffff			# "reserved instruction fault"
X  SCBVEC(emulateFPD):
X  	.word	0xffff			# "reserved instruction fault"
X***************
X*** 853,859 ****
X--- 864,878 ----
X  
X  	SYSMAP(UMBAbeg	,umbabeg	,0		)
X  	SYSMAP(Nexmap	,nexus		,16*MAXNNEXUS	)
X+ #ifdef QBA
X+ #if (QBAPAGES+UBAIOPAGES) > (UBAPAGES+UBAIOPAGES)*NUBA 
X+ 	SYSMAP(UMEMmap	,umem		,(QBAPAGES+UBAIOPAGES) )
X+ #else
X  	SYSMAP(UMEMmap	,umem		,(UBAPAGES+UBAIOPAGES)*NUBA )
X+ #endif
X+ #else /* QBA */
X+ 	SYSMAP(UMEMmap	,umem		,(QBAPAGES+UBAIOPAGES)*NUBA )
X+ #endif /* QBA */
X  #if VAX8600
X  	SYSMAP(Ioamap	,ioa		,MAXNIOA*IOAMAPSIZ/NBPG	)
X  #endif
X***************
X*** 873,880 ****
X  #endif
X  #if VAX630
X  	SYSMAP(Ka630map	,ka630cpu	,1		)
X  	/*
X! 	 * qvss and qdss can't coexist - one map will suffice
X  	 * for either. qvss is 256K each and qdss is 64K each.
X  	 */
X  #include "qv.h"
X--- 892,908 ----
X  #endif
X  #if VAX630
X  	SYSMAP(Ka630map	,ka630cpu	,1		)
X+ #endif
X+ #if VAX650
X+  	SYSMAP(KA650MERRmap	,ka650merr	,1		)
X+  	SYSMAP(KA650CBDmap	,ka650cbd	,1		)
X+  	SYSMAP(KA650SSCmap	,ka650ssc	,3		)
X+  	SYSMAP(KA650IPCRmap	,ka650ipcr	,1		)
X+  	SYSMAP(KA650CACHEmap	,ka650cache	,KA650_CACHESIZE/NBPG )
X+ #endif
X+ #ifdef QBA
X  	/*
X! 	 * qvss and qdss don't coexist - one map will suffice
X  	 * for either. qvss is 256K each and qdss is 64K each.
X  	 */
X  #include "qv.h"
X***************
X*** 881,888 ****
X  #include "qd.h"
X  #if NQV > 0 || NQD > 0
X  	SYSMAP(QVmap	,qvmem		,((512*NQV)+(128*NQD)))
X! #endif /* NQV || NQD */
X! #endif /* VAX630 */
X  	SYSMAP(UMBAend	,umbaend	,0		)
X  
X  	SYSMAP(Usrptmap	,usrpt		,USRPTSIZE+CLSIZE )
X--- 909,916 ----
X  #include "qd.h"
X  #if NQV > 0 || NQD > 0
X  	SYSMAP(QVmap	,qvmem		,((512*NQV)+(128*NQD)))
X! #endif
X! #endif
X  	SYSMAP(UMBAend	,umbaend	,0		)
X  
X  	SYSMAP(Usrptmap	,usrpt		,USRPTSIZE+CLSIZE )
X***************
X*** 931,942 ****
X  1:	pushl	$4; pushl r7; calls $2,_badaddr; tstl r0; bneq 9f
X  	acbl	$MAXMEM*1024-1,$64*1024,r7,1b
X  9:
X! #ifdef  VAX630
X! /* leave an area for uVAX II console scratch pad at the top */
X  	cmpb	_cpu,$VAX_630
X! 	bneq	1f
X! 	subl2   $4096,r7
X  1:
X  #endif
X  /* clear memory from kernel bss and pages for proc 0 u. and page table */
X  	movab	_edata,r6; bicl2 $SYSTEM,r6
X--- 959,975 ----
X  1:	pushl	$4; pushl r7; calls $2,_badaddr; tstl r0; bneq 9f
X  	acbl	$MAXMEM*1024-1,$64*1024,r7,1b
X  9:
X! #if  VAX630 || VAX650
X! /* reserved area at top of memory for processor specific use */
X  	cmpb	_cpu,$VAX_630
X! 	beql	1f
X! 	cmpb	_cpu,$VAX_650
X! 	bneq	2f
X! 	subl2	$32768,r7	# space for Qbus map registers
X! 	brb	2f
X  1:
X+ 	subl2   $4096,r7	# space for console scratchpad
X+ 2:
X  #endif
X  /* clear memory from kernel bss and pages for proc 0 u. and page table */
X  	movab	_edata,r6; bicl2 $SYSTEM,r6
END-of-3200/vax/locore.s
echo x - 3200/vax/machdep.c
sed 's/^X//' >3200/vax/machdep.c << 'END-of-3200/vax/machdep.c'
X*** /tmp/d20446	Mon Oct 31 20:09:01 1988
X--- machdep.c	Thu Sep 22 06:39:21 1988
X***************
X*** 3,9 ****
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)machdep.c	7.14 (Berkeley) 5/26/88
X   */
X  
X  #include "param.h"
X--- 3,9 ----
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)machdep.c	7.17 (Berkeley) 9/22/88
X   */
X  
X  #include "param.h"
X***************
X*** 39,44 ****
X--- 39,45 ----
X  #include "mtpr.h"
X  #include "rpb.h"
X  #include "ka630.h"
X+ #include "ka650.h"
X  
X  #include "../vaxuba/ubavar.h"
X  #include "../vaxuba/ubareg.h"
X***************
X*** 72,85 ****
X  	register caddr_t v;
X  	int maxbufs, base, residual;
X  
X- #if VAX630
X  	/*
X-  	 * Leave last 5k of phys. memory as console work area.
X- 	 */
X- 	if (cpu == VAX_630)
X- 		maxmem -= 10;
X- #endif
X- 	/*
X  	 * Initialize error message buffer (at end of core).
X  	 */
X  	maxmem -= btoc(sizeof (struct msgbuf));
X--- 73,79 ----
X***************
X*** 89,95 ****
X  	mtpr(TBIA, 0);
X  	msgbufmapped = 1;
X  
X! #if VAX630
X  #include "qv.h"
X  #if NQV > 0
X  	/*
X--- 83,89 ----
X  	mtpr(TBIA, 0);
X  	msgbufmapped = 1;
X  
X! #ifdef QBA
X  #include "qv.h"
X  #if NQV > 0
X  	/*
X***************
X*** 603,609 ****
X--- 597,612 ----
X  	splx(0x1f);			/* extreme priority */
X  	devtype = major(rootdev);
X  	if (howto&RB_HALT) {
X+ 		switch (cpu) {
X+ 
X  		/* 630 can be told to halt, but how? */
X+ #if VAX650
X+ 		case VAX_650:
X+ 			ka650ssc.ssc_cpmbx &= ~CPMB650_HALTACT;
X+ 			ka650ssc.ssc_cpmbx |= CPMB650_HALT;
X+ 			asm("halt");
X+ #endif
X+ 		}
X  		printf("halting (in tight loop); hit\n\t^P\n\tHALT\n\n");
X  		for (;;)
X  			;
X***************
X*** 640,645 ****
X--- 643,656 ----
X  		break;
X  #endif
X  
X+ #ifdef VAX650
X+ 	case VAX_650:
X+ 		/* set boot-on-halt flag in "console mailbox" */
X+ 		ka650ssc.ssc_cpmbx &= ~CPMB650_HALTACT;
X+ 		ka650ssc.ssc_cpmbx |= CPMB650_REBOOT;
X+ 		break;
X+ #endif
X+ 
X  	default:
X  		tocons(TXDB_BOOT);
X  	}
X***************
X*** 680,685 ****
X--- 691,702 ----
X  			continue;
X  		break;
X  #endif
X+ 
X+ #if VAX650
X+ 	case VAX_650:
X+ 		/* everything is a real console terminal character on ka650 */
X+ 		return;
X+ #endif
X  	}
X  
X  	mtpr(TXDB, c);
X***************
X*** 871,882 ****
X  
X  	switch (cpu) {
X  
X! #if VAX8600 || VAX8200 || VAX780 || VAX750 || VAX730
X  	case VAX_8600:
X  	case VAX_8200:
X  	case VAX_780:
X  	case VAX_750:
X  	case VAX_730:
X  		return (mfpr(TODR));
X  #endif
X  
X--- 888,900 ----
X  
X  	switch (cpu) {
X  
X! #if VAX8600 || VAX8200 || VAX780 || VAX750 || VAX730 || VAX650
X  	case VAX_8600:
X  	case VAX_8200:
X  	case VAX_780:
X  	case VAX_750:
X  	case VAX_730:
X+ 	case VAX_650:
X  		return (mfpr(TODR));
X  #endif
X  
END-of-3200/vax/machdep.c
echo x - 3200/vax/mtpr.h
sed 's/^X//' >3200/vax/mtpr.h << 'END-of-3200/vax/mtpr.h'
X*** /tmp/d20693	Mon Oct 31 20:15:13 1988
X--- mtpr.h	Sat Aug 27 07:14:03 1988
X***************
X*** 3,9 ****
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)mtpr.h	7.3 (Berkeley) 5/7/88
X   */
X  
X  /*
X--- 3,9 ----
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)mtpr.h	7.4 (Berkeley) 8/27/88
X   */
X  
X  /*
X***************
X*** 36,42 ****
X  #define	ICCS	0x18		/* interval clock control */
X  #define	NICR	0x19		/* next interval count */
X  #define	ICR	0x1a		/* interval count */
X! #if VAX8600 || VAX8200 || VAX780 || VAX750 || VAX730
X  #define	TODR	0x1b		/* time of year (day) */
X  #endif
X  #if VAX750 || VAX730
X--- 36,42 ----
X  #define	ICCS	0x18		/* interval clock control */
X  #define	NICR	0x19		/* next interval count */
X  #define	ICR	0x1a		/* interval count */
X! #if VAX8600 || VAX8200 || VAX780 || VAX750 || VAX730 || VAX650
X  #define	TODR	0x1b		/* time of year (day) */
X  #endif
X  #if VAX750 || VAX730
X***************
X*** 49,60 ****
X  #define	RXDB	0x21		/* console receiver data buffer */
X  #define	TXCS	0x22		/* console transmitter control and status */
X  #define	TXDB	0x23		/* console transmitter data buffer */
X! #if VAX8200 || VAX750 || VAX730
X  #define	TBDR	0x24		/* translation buffer disable register */
X  #define	CADR	0x25		/* cache disable register */
X  #define	MCESR	0x26		/* machine check error summary register */
X  #endif
X! #if VAX750 || VAX730
X  #define	CAER	0x27		/* cache error */
X  #endif
X  #define	ACCS	0x28		/* accelerator control and status */
X--- 49,60 ----
X  #define	RXDB	0x21		/* console receiver data buffer */
X  #define	TXCS	0x22		/* console transmitter control and status */
X  #define	TXDB	0x23		/* console transmitter data buffer */
X! #if VAX8200 || VAX750 || VAX730 || VAX650
X  #define	TBDR	0x24		/* translation buffer disable register */
X  #define	CADR	0x25		/* cache disable register */
X  #define	MCESR	0x26		/* machine check error summary register */
X  #endif
X! #if VAX750 || VAX730 || VAX650
X  #define	CAER	0x27		/* cache error */
X  #endif
X  #define	ACCS	0x28		/* accelerator control and status */
X***************
X*** 77,84 ****
X  #define	SBITA	0x35		/* SBI timeout address */
X  #define	SBIQC	0x36		/* SBI quadword clear */
X  #endif
X! #if VAX750 || VAX730 || VAX630
X! #define	IUR	0x37		/* init unibus (Qbus on 630) register */
X  #endif
X  #define	MAPEN	0x38		/* memory management enable */
X  #define	TBIA	0x39		/* translation buffer invalidate all */
X--- 77,84 ----
X  #define	SBITA	0x35		/* SBI timeout address */
X  #define	SBIQC	0x36		/* SBI quadword clear */
X  #endif
X! #if VAX750 || VAX730 || VAX630 || VAX650
X! #define	IUR	0x37		/* init unibus (Qbus on 6x0) register */
X  #endif
X  #define	MAPEN	0x38		/* memory management enable */
X  #define	TBIA	0x39		/* translation buffer invalidate all */
X***************
X*** 91,97 ****
X  #endif
X  #define	PMR	0x3d		/* performance monitor enable */
X  #define	SID	0x3e		/* system identification */
X! #if VAX8600 || VAX8200
X  #define TBCHK	0x3f		/* Translation Buffer Check */
X  #endif
X  #if VAX8600
X--- 91,97 ----
X  #endif
X  #define	PMR	0x3d		/* performance monitor enable */
X  #define	SID	0x3e		/* system identification */
X! #if VAX8600 || VAX8200 || VAX650
X  #define TBCHK	0x3f		/* Translation Buffer Check */
X  #endif
X  #if VAX8600
END-of-3200/vax/mtpr.h
echo c - 3200/vaxstand
mkdir 3200/vaxstand > /dev/null 2>&1
echo x - 3200/vaxstand/Makefile
sed 's/^X//' >3200/vaxstand/Makefile << 'END-of-3200/vaxstand/Makefile'
X*** /tmp/d20878	Mon Oct 31 20:20:11 1988
X--- Makefile	Mon Oct 31 20:19:59 1988
X***************
X*** 14,20 ****
X  # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
X  # WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
X  #
X! #	@(#)Makefile	7.15 (Berkeley) 7/9/88
X  #
X  
X  DESTDIR=
X--- 14,20 ----
X  # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
X  # WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
X  #
X! #	@(#)Makefile	7.16 (Berkeley) 8/27/88
X  #
X  
X  DESTDIR=
X***************
X*** 22,28 ****
X  INCPATH=-I. -I../stand -I../h
X  VPATH=	../stand:../vax
X  DEFS=	${INCPATH} -DSTANDALONE -DCOMPAT_42
X! MACH=	-DVAX8600 -DVAX8200 -DVAX780 -DVAX750 -DVAX730 -DVAX630
X  
X  # Collections of C options:
X  #	COPTS	device drivers/assembler, not optimized
X--- 22,28 ----
X  INCPATH=-I. -I../stand -I../h
X  VPATH=	../stand:../vax
X  DEFS=	${INCPATH} -DSTANDALONE -DCOMPAT_42
X! MACH=	-DVAX8600 -DVAX8200 -DVAX780 -DVAX750 -DVAX730 -DVAX630 -DVAX650
X  
X  # Collections of C options:
X  #	COPTS	device drivers/assembler, not optimized
X***************
X*** 33,39 ****
X  COPTS=	${DEFS} ${MACH}
X  CFLAGS=	-O ${DEFS} ${MACH}
X  730OPTS=-O ${DEFS} -DVAX730
X! SMOPTS=	${DEFS} -DSMALL -DVAX750 -DVAX630
X  
X  RELOC=	150000
X  LIBSA=	libsa.a
X--- 33,39 ----
X  COPTS=	${DEFS} ${MACH}
X  CFLAGS=	-O ${DEFS} ${MACH}
X  730OPTS=-O ${DEFS} -DVAX730
X! SMOPTS=	${DEFS} -DSMALL -DVAX750 -DVAX630 -DVAX650
X  
X  RELOC=	150000
X  LIBSA=	libsa.a
END-of-3200/vaxstand/Makefile
echo x - 3200/vaxstand/autoconf.c
sed 's/^X//' >3200/vaxstand/autoconf.c << 'END-of-3200/vaxstand/autoconf.c'
X*** /tmp/d20850	Mon Oct 31 20:19:26 1988
X--- autoconf.c	Sat Aug 27 07:22:54 1988
X***************
X*** 3,9 ****
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)autoconf.c	7.11 (Berkeley) 7/10/88
X   */
X  
X  #include "param.h"
X--- 3,9 ----
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)autoconf.c	7.12 (Berkeley) 8/27/88
X   */
X  
X  #include "param.h"
X***************
X*** 56,62 ****
X  #undef	UMA
X  #endif
X  
X! #if VAX630
X  /*
X   * The map registers start at 20088000 on the ka630, so
X   * subtract a 2k offset to make things work.
X--- 56,62 ----
X  #undef	UMA
X  #endif
X  
X! #if VAX630 || VAX650
X  /*
X   * The map registers start at 20088000 on the ka630, so
X   * subtract a 2k offset to make things work.
X***************
X*** 219,224 ****
X--- 219,236 ----
X  		nuba = 1;
X  		break;
X  #endif
X+ 
X+ #if VAX650
X+ 	case VAX_650:
X+ #ifndef SMALL
X+ 		if (debug)
X+ 			printf("cpu: uVAX 3000\n");
X+ #endif
X+ 		ubaddr = ubaddr630;
X+ 		uioaddr = uioaddr630;
X+ 		nuba = 1;
X+ 		break;
X+ #endif
X  	}
X  
X  	/*
X***************
X*** 239,246 ****
X  		break;
X  #endif
X  
X! #if VAX630
X  	case VAX_630:
X  		mtpr(IUR, 0);
X  		*((char *)QIOPAGE630 + QIPCR) = Q_LMEAE;
X  #if !defined(SMALL)
X--- 251,259 ----
X  		break;
X  #endif
X  
X! #if VAX630 || VAX650
X  	case VAX_630:
X+ 	case VAX_650:
X  		mtpr(IUR, 0);
X  		*((char *)QIOPAGE630 + QIPCR) = Q_LMEAE;
X  #if !defined(SMALL)
X***************
X*** 251,257 ****
X  			;
X  #endif
X  		break;
X! #endif /* VAX630 */
X  	}
X  
X  	/* give unibus devices a chance to recover... */
X--- 264,270 ----
X  			;
X  #endif
X  		break;
X! #endif
X  	}
X  
X  	/* give unibus devices a chance to recover... */
END-of-3200/vaxstand/autoconf.c
echo x - 3200/vaxstand/prf.c
sed 's/^X//' >3200/vaxstand/prf.c << 'END-of-3200/vaxstand/prf.c'
X*** /tmp/d20844	Mon Oct 31 20:19:08 1988
X--- prf.c	Sat Aug 27 07:22:52 1988
X***************
X*** 3,9 ****
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)prf.c	7.5 (Berkeley) 6/6/88
X   */
X  
X  #include "param.h"
X--- 3,9 ----
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)prf.c	7.6 (Berkeley) 8/27/88
X   */
X  
X  #include "param.h"
X***************
X*** 115,121 ****
X  	register c;
X  {
X  	register s, timo;
X! #if VAX630
X  	extern (*v_putc)();
X  
X  	if (v_putc) {
X--- 115,121 ----
X  	register c;
X  {
X  	register s, timo;
X! #if VAX630 || VAX650
X  	extern (*v_putc)();
X  
X  	if (v_putc) {
X***************
X*** 147,153 ****
X  getchar()
X  {
X  	register c;
X! #if VAX630
X  	extern (*v_getc)();
X  
X  	if (v_getc) {
X--- 147,153 ----
X  getchar()
X  {
X  	register c;
X! #if VAX630 || VAX650
X  	extern (*v_getc)();
X  
X  	if (v_getc) {
X***************
X*** 157,163 ****
X  	while((mfpr(RXCS)&RXCS_DONE) == 0)
X  		;
X  	c = mfpr(RXDB)&0177;
X! #if VAX630
X  	}
X  #endif
X  	if (c=='\r')
X--- 157,163 ----
X  	while((mfpr(RXCS)&RXCS_DONE) == 0)
X  		;
X  	c = mfpr(RXDB)&0177;
X! #if VAX630 || VAX650
X  	}
X  #endif
X  	if (c=='\r')
END-of-3200/vaxstand/prf.c
echo x - 3200/vaxstand/qdcons.c
sed 's/^X//' >3200/vaxstand/qdcons.c << 'END-of-3200/vaxstand/qdcons.c'
X*** /tmp/d21467	Mon Oct 31 20:45:40 1988
X--- qdcons.c	Mon Oct 31 20:42:06 1988
X***************
X*** 1,17 ****
X  /*
X!  * Copyright (c) 1982, 1986 Regents of the University of California.
X!  * All rights reserved.  The Berkeley software License Agreement
X!  * specifies the terms and conditions for redistribution.
X   *
X!  * 		@(#)qdcons.c	1.3  Berkeley  6/29/88
X   *
X   *	derived from: @(#)qdcons.c  4.1 (ULTRIX    11/23/87
X   */
X  
X  /************************************************************************
X  *
X  *	ULTRIX QDSS STANDALONE BOOT DEVICE DRIVER...
X  *	device driver to boot system with QDSS as console
X  *
X  *************************************************************************/
X  /************************************************************************
X--- 1,30 ----
X  /*
X!  * Copyright (c) 1988 Regents of the University of California.
X!  * All rights reserved.
X   *
X!  * Redistribution and use in source and binary forms are permitted
X!  * provided that the above copyright notice and this paragraph are
X!  * duplicated in all such forms and that any documentation,
X!  * advertising materials, and other materials related to such
X!  * distribution and use acknowledge that the software was developed
X!  * by the University of California, Berkeley.  The name of the
X!  * University may not be used to endorse or promote products derived
X!  * from this software without specific prior written permission.
X!  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
X!  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
X!  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
X   *
X+  *	@(#)qdcons.c	7.2 (Berkeley) 8/27/88
X+  */
X+ 
X+ /*
X   *	derived from: @(#)qdcons.c  4.1 (ULTRIX    11/23/87
X   */
X  
X  /************************************************************************
X  *
X  *	ULTRIX QDSS STANDALONE BOOT DEVICE DRIVER...
X  *	device driver to boot system with QDSS as console
X  *
X  *************************************************************************/
X  /************************************************************************
X***************
X*** 185,204 ****
X--- 198,218 ----
X  ************************************************************************/
X  
X  qd_init()
X  {
X  	register char *ROM_console;
X  	register short *NVR;
X  	register int i;
X  
X  	caddr_t qdaddr;
X  	struct dga *dga;
X+ 	extern int cpu;
X  
X   	qdaddr = (caddr_t) QDSSCSR;
X          if (badaddr(qdaddr, sizeof(short)))
X              return(0);
X  
X  	*(short *)qdaddr = (short) (QDBASE >> 16);
X  
X  /*----------------------------------------------------------------------
X  * load qdmap struct with the physical addresses of the QDSS elements */
X  
X***************
X*** 228,262 ****
X  
X  	cursor.x = 0;			/* init cursor to top left */
X  	cursor.y = 0;
X  
X  	set_defaults();		        /* setup the default device */
X  	ldfont();			/* PtoB the font into off-screen */
X  
X  /*--------------------------------------------------------------------
X  * tell the VAX ROM that the cursor is at the bottom of the screen  */
X  
X! 	NVR = (short *) NVR_ADRS;
X  
X! 	i = *NVR++ & 0xFF;
X! 	i |= (*NVR++ & 0xFF) << 8;
X! 	i |= (*NVR++ & 0xFF) << 16;
X! 	i |= (*NVR++ & 0xFF) << 24;
X  
X! 	ROM_console = (char *) i;
X  
X! 	ROM_console[CURRENT_COL] = ROM_console[COL_MIN];
X! 	ROM_console[CURRENT_ROW] = ROM_console[ROW_MAX];
X  
X  /*----------------------------------------------------------
X  * smash system virtual console service routine addresses */
X  
X  	v_getc = qdgetc;
X  	v_putc = qdputc;
X  
X  	return(1);
X  
X  } /* qd_init */
X  
X  /******************************************************************* 
X  *
X  *	qdputc()... output a character to the QDSS screen
X--- 242,279 ----
X  
X  	cursor.x = 0;			/* init cursor to top left */
X  	cursor.y = 0;
X  
X  	set_defaults();		        /* setup the default device */
X  	ldfont();			/* PtoB the font into off-screen */
X  
X  /*--------------------------------------------------------------------
X  * tell the VAX ROM that the cursor is at the bottom of the screen  */
X  
X! 	if (cpu == VAX_630) {
X! 		NVR = (short *) NVR_ADRS;
X  
X! 		i = *NVR++ & 0xFF;
X! 		i |= (*NVR++ & 0xFF) << 8;
X! 		i |= (*NVR++ & 0xFF) << 16;
X! 		i |= (*NVR++ & 0xFF) << 24;
X  
X! 		ROM_console = (char *) i;
X  
X! 		ROM_console[CURRENT_COL] = ROM_console[COL_MIN];
X! 		ROM_console[CURRENT_ROW] = ROM_console[ROW_MAX];
X! 	}
X  
X  /*----------------------------------------------------------
X  * smash system virtual console service routine addresses */
X  
X+ 	printf("switching console to QDSS display...\n");
X  	v_getc = qdgetc;
X  	v_putc = qdputc;
X  
X  	return(1);
X  
X  } /* qd_init */
X  
X  /******************************************************************* 
X  *
X  *	qdputc()... output a character to the QDSS screen
END-of-3200/vaxstand/qdcons.c
echo x - 3200/vaxstand/srt0.c
sed 's/^X//' >3200/vaxstand/srt0.c << 'END-of-3200/vaxstand/srt0.c'
X*** /tmp/d20749	Mon Oct 31 20:16:08 1988
X--- srt0.c	Sat Aug 27 07:22:52 1988
X***************
X*** 3,9 ****
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)srt0.c	7.4 (Berkeley) 1/28/88
X   */
X  
X  #include "../vax/mtpr.h"
X--- 3,9 ----
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)srt0.c	7.5 (Berkeley) 8/27/88
X   */
X  
X  #include "../vax/mtpr.h"
X***************
X*** 33,42 ****
X  	mtpr	$HIGH,$IPL		# just in case
X  
X  #ifdef REL
X! 	# we need to do special stuff on microvax II
X  	mfpr	$SID,r0
X  	cmpzv	$24,$8,r0,$VAX_630
X! 	bneq	1f
X  
X  	/*
X  	 * Were we booted by VMB?  If so, r11 is not boothowto,
X--- 33,44 ----
X  	mtpr	$HIGH,$IPL		# just in case
X  
X  #ifdef REL
X! 	# we need to do special stuff on microvaxen
X  	mfpr	$SID,r0
X  	cmpzv	$24,$8,r0,$VAX_630
X! 	beql	1f
X! 	cmpzv	$24,$8,r0,$VAX_650
X! 	bneq	2f
X  
X  	/*
X  	 * Were we booted by VMB?  If so, r11 is not boothowto,
X***************
X*** 44,57 ****
X  	 * User's Manual, pp 3-21).  These tests were devised by
X  	 * richl at tektronix, 11/10/87.
X  	 */
X  	cmpl	(r11),r11		# if boothowto, r11 will be small
X! 	bneq	1f			# and these will not fault
X  	cmpl	4(r11),$0
X! 	bneq	1f
X  	cmpl	8(r11),$-1
X! 	bneq	1f
X  	tstl	0xc(r11)
X! 	bneq	1f
X  
X  	/*
X  	 * Booted by VMB: get flags from extended rpb.
X--- 46,60 ----
X  	 * User's Manual, pp 3-21).  These tests were devised by
X  	 * richl at tektronix, 11/10/87.
X  	 */
X+ 1:
X  	cmpl	(r11),r11		# if boothowto, r11 will be small
X! 	bneq	2f			# and these will not fault
X  	cmpl	4(r11),$0
X! 	bneq	2f
X  	cmpl	8(r11),$-1
X! 	bneq	2f
X  	tstl	0xc(r11)
X! 	bneq	2f
X  
X  	/*
X  	 * Booted by VMB: get flags from extended rpb.
X***************
X*** 59,65 ****
X  	 */
X  	movl	0x30(r11),r11
X  	movl	$9,r10			# device = ra(0,0)
X! 1:
X  	movl	$RELOC,sp
X  #else
X  	movl	$RELOC-0x2400,sp
X--- 62,68 ----
X  	 */
X  	movl	0x30(r11),r11
X  	movl	$9,r10			# device = ra(0,0)
X! 2:
X  	movl	$RELOC,sp
X  #else
X  	movl	$RELOC-0x2400,sp
X***************
X*** 152,157 ****
X--- 155,162 ----
X  	.word	1f-0b		# 6 is 8800
X  	.word	1f-0b		# 7 is 610
X  	.word	5f-0b		# 8 is 630
X+ 	.word	1f-0b		# 9 is ???
X+ 	.word	5f-0b		# 10 is 650
X  5:
X  	mtpr	$0xf,$MCESR
X  	brb	1f
END-of-3200/vaxstand/srt0.c
echo c - 3200/vaxuba
mkdir 3200/vaxuba > /dev/null 2>&1
echo x - 3200/vaxuba/dhu.c
sed 's/^X//' >3200/vaxuba/dhu.c << 'END-of-3200/vaxuba/dhu.c'
X*** /tmp/d20344	Mon Oct 31 20:01:47 1988
X--- dhu.c	Sat Aug 27 07:21:06 1988
X***************
X*** 3,9 ****
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)dhu.c	7.2 (Berkeley) 12/19/86
X   */
X  
X  /*
X--- 3,9 ----
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)dhu.c	7.3 (Berkeley) 8/27/88
X   */
X  
X  /*
X***************
X*** 307,313 ****
X  	register line;
X  	int overrun = 0;
X  
X! #ifdef VAX630
X  	(void) spl5();
X  #endif
X  	ui = dhuinfo[dhu];
X--- 307,313 ----
X  	register line;
X  	int overrun = 0;
X  
X! #ifdef QBA
X  	(void) spl5();
X  #endif
X  	ui = dhuinfo[dhu];
X***************
X*** 516,522 ****
X  	register int line, t;
X  	u_short cntr;
X  
X! #ifdef VAX630
X  	(void) spl5();
X  #endif
X  	ui = dhuinfo[dhu];
X--- 516,522 ----
X  	register int line, t;
X  	u_short cntr;
X  
X! #ifdef QBA
X  	(void) spl5();
X  #endif
X  	ui = dhuinfo[dhu];
END-of-3200/vaxuba/dhu.c
echo x - 3200/vaxuba/tmscp.c
sed 's/^X//' >3200/vaxuba/tmscp.c << 'END-of-3200/vaxuba/tmscp.c'
X*** /tmp/d20354	Mon Oct 31 20:02:24 1988
X--- tmscp.c	Mon Oct 31 20:02:05 1988
X***************
X*** 1,4 ****
X! /*	@(#)tmscp.c	7.4 (Berkeley) 5/27/88 */
X  
X  #ifndef lint
X  static	char	*sccsid = "@(#)tmscp.c	1.24	(ULTRIX)	1/21/86";
X--- 1,4 ----
X! /*	@(#)tmscp.c	7.5 (Berkeley) 8/27/88 */
X  
X  #ifndef lint
X  static	char	*sccsid = "@(#)tmscp.c	1.24	(ULTRIX)	1/21/86";
X***************
X*** 323,330 ****
X  	if (count == DELAYTEN)
X  		return(0);
X  
X! #ifdef VAX630
X! 	if (cpu == VAX_630)
X  		br = 0x15;	/* screwy interrupt structure */
X  #endif
X  	return(sizeof (struct tmscpdevice));
X--- 323,330 ----
X  	if (count == DELAYTEN)
X  		return(0);
X  
X! #ifdef QBA
X! 	if (cpu == VAX_630 || cpu == VAX_650)
X  		br = 0x15;	/* screwy interrupt structure */
X  #endif
X  	return(sizeof (struct tmscpdevice));
END-of-3200/vaxuba/tmscp.c
echo x - 3200/vaxuba/ubareg.h
sed 's/^X//' >3200/vaxuba/ubareg.h << 'END-of-3200/vaxuba/ubareg.h'
X*** /tmp/d21374	Mon Oct 31 20:38:06 1988
X--- ubareg.h	Mon Oct 31 20:37:44 1988
X***************
X*** 3,9 ****
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)ubareg.h	7.4 (Berkeley) 5/14/88
X   */
X  
X  /*
X--- 3,9 ----
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)ubareg.h	7.5 (Berkeley) 8/27/88
X   */
X  
X  /*
X***************
X*** 28,34 ****
X  #define	DW730	3		/* has adaptor regs, no sr: 750, 730 */
X  #endif
X  
X! #if VAX630
X  #define	QBA	4		/* 22-bit Q-bus, no adaptor regs: uVAX II */
X  #endif
X  
X--- 28,34 ----
X  #define	DW730	3		/* has adaptor regs, no sr: 750, 730 */
X  #endif
X  
X! #if VAX630 || VAX650
X  #define	QBA	4		/* 22-bit Q-bus, no adaptor regs: uVAX II */
X  #endif
X  
X***************
X*** 237,243 ****
X   * Symbolic BUS addresses for UBAs.
X   */
X  
X! #if VAX630
X  #define	QBAMAP630	((struct pte *)0x20088000)
X  #define	QMEM630		0x30000000
X  #define	QIOPAGE630	0x20000000
X--- 237,243 ----
X   * Symbolic BUS addresses for UBAs.
X   */
X  
X! #if VAX630 || VAX650
X  #define	QBAMAP630	((struct pte *)0x20088000)
X  #define	QMEM630		0x30000000
X  #define	QIOPAGE630	0x20000000
END-of-3200/vaxuba/ubareg.h
echo x - 3200/vaxuba/uda.c
sed 's/^X//' >3200/vaxuba/uda.c << 'END-of-3200/vaxuba/uda.c'
X*** /tmp/d20372	Mon Oct 31 20:03:37 1988
X--- uda.c	Mon Oct 31 20:03:22 1988
X***************
X*** 17,23 ****
X   * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
X   * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
X   *
X!  *	@(#)uda.c	7.19 (Berkeley) 7/9/88
X   */
X  
X  /*
X--- 17,23 ----
X   * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
X   * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
X   *
X!  *	@(#)uda.c	7.20 (Berkeley) 8/27/88
X   */
X  
X  /*
X***************
X*** 330,337 ****
X  			goto bad;
X  
X  	/* should have interrupted by now */
X! #ifdef VAX630
X! 	if (cpu == VAX_630)
X  		br = 0x15;	/* screwy interrupt structure */
X  #endif
X  	return (sizeof (struct udadevice));
X--- 330,337 ----
X  			goto bad;
X  
X  	/* should have interrupted by now */
X! #ifdef QBA
X! 	if (cpu == VAX_630 || cpu == VAX_650)
X  		br = 0x15;	/* screwy interrupt structure */
X  #endif
X  	return (sizeof (struct udadevice));
X***************
X*** 1272,1278 ****
X  	register struct mscp *mp;
X  	register int i;
X  
X! #ifdef VAX630
X  	(void) spl5();		/* Qbus interrupt protocol is odd */
X  #endif
X  	sc->sc_wticks = 0;	/* reset interrupt watchdog */
X--- 1272,1278 ----
X  	register struct mscp *mp;
X  	register int i;
X  
X! #ifdef QBA
X  	(void) spl5();		/* Qbus interrupt protocol is odd */
X  #endif
X  	sc->sc_wticks = 0;	/* reset interrupt watchdog */
END-of-3200/vaxuba/uda.c
exit



More information about the Comp.bugs.4bsd.ucb-fixes mailing list