🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: comp.bugs.4bsd.ucb-fixes
1 messages
1 total messages Started by Keith Bostic Wed, 02 Nov 1988 18:59
V1.66 (MicroVAX 3000 support)
#75
Author: Keith Bostic
Date: Wed, 02 Nov 1988 18:59
2072 lines
58770 bytes
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@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@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
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads