Subject: kernel 'config', autoconfig,  documentation changes (#100, 12 of 12)
Index:	sys,doc,etc,pdpif,.../many 2.11BSD

Description:
	This is part 12 of 12.  Updates #89 thru #100 are parts 1 thru 12
	respectively.
	
	If you have tired of reading the notes in the "Repeat-By:" section 
	please skip to the "Fix:" section for notes and instructions about 
	this patch file (list of files updated, etc).

Repeat-By:

	This section is repeated in each patch file.  Specific directions
	for the individual patches are included in the "Fix:" section.

	Several problem areas are addressed by this series of updates.

	1) The kernel configuration problems are best noticed
	   by maintaining kernels for a variety of systems and forgetting
	   to copy 'localopts.h' to ../h before compiling.  This at best
	   would cause compile time problems, at worst resulting in a kernel
	   that was unusable.  MANY of the changes described below are
	   aimed at the reduction of 'localopts.h' to almost nothing.

	2) There were several kernel config options which were either known not
	   to work, have not been used within recent memory or were obsolete.
	   UCB_FRCSWAP (to force a swap on program expansion) is a good
	   example of an option which has been removed.
	   
	   The list of things which have been options at one time or another
	   in the system's life has been removed.  Many of them dated back
	   to V7, the modules which they affected are not even present in
	   the system any longer.

	   Two options have been moved to the end of the 'config' script.
	   Neither is known to work (CGL_RTP and FPSIM) and are always left
	   NO.

	3) A couple of kernel config options should not have been options so
	   that the kernel could automatically adapt to whatever machine it
	   found itself running on.  The UNIBUS_MAP and Q22 options are good 
	   examples of this.  Usage of the UNIBUS_MAP option was inconsistent,
	   some of the drivers in the system "#ifdef"d references to the
	   Unibus map allocation routine while other drivers did not.  Since
	   the system knows whether a Unibus Map is present or not the
	   correct behaviour is to either test 'ubmap' or simply call 'mapalloc'
	   (which will do the test for you).  In the case of GENERIC or Unibus
	   based kernels there is _no_ penalty (since UNIBUS_MAP was defined),
	   in the case of Qbus systems there is about 900 bytes of code that
	   simply never gets used (and 40 bytes or so of D space).

	   The Q22 defined was used incorrectly in a couple of drivers to
	   either distinquish between Digital and 3rd party controllers (DH-11
	   vs Emulex CS02) or to indicate whether the system was Qbus or
	   Unibus based.  The references to Q22 in dh.c were changed to
	   CS02 (a new option in the device selection area of the config
	   files), deleted, or replaced with tests of 'ubmap'.

	   UCB_RUSAGE has been made standard because several applications
	   (iostat, vmstat, etc) use the statistics and because the
	   getrusage(2) call uses them.  UCB_METER has been left as an
	   option and will be placed in the Makefile as "-DUCB_METER" in
	   the DEFS line.  References to UCB_RUSAGE have been removed from the
	   kernel.

	   NONFP has been removed.  Hardware floating point is mandatory
	   for two reasons:  the simulator doesn't work, and FP is very
	   inexpensive (or standard on KDJ-11 systems).

	   VIRUS_VFORK has been removed.  Nothing depended on it in the
	   applications and VIRUS_VFORK has never been anything but YES.  

	4) NSWAP has gone away.  It was too easy to either forget to change
	   it or to pick a wrong number (by guessing).  Borrowing yet another
	   concept from 4.3BSD the system now determines the amount of
	   swap space dynamically after booting.  This is done by calling
	   a partition size routine which each disc driver provides.  The
	   bdevsw[] table (in pdp/conf.c) has been expanded to include 
	   a "d_psize" member for each device.

	   NOTE:  this change requires that 'a' and 'b' be the root and
		  swap partitions.  All drivers except the RK06/7 (hk.c) 
		  and RM02/3 (xp.c) observed this rule.  Changes were made 
		  to the RK06/7 and RM02/3 partition tables (and /etc/disktab).
		  The previous practice of using the 'e' or 'f' partitions
		  to overlap the old 'a'+'b' partitions has gone away.  THE
		  new 'a' partition is the same size as the 'e' or 'f'
		  partitions used to be, so there is ROOT FILESYSTEM
		  compatibility (the system will still boot).   Best
		  to back the system up (if using RK07 or RM02 drives)
		  before applying these changes.

	5) SWAPLO has gone away.  It has never been anything but 0 within
	   recent memory (and would have resulted in filesystem corruption
	   if an inappropriate value were chosen).  The only device which 
	   possibly would need to use it (the RL02) is required to be used 
	   in pairs.
	   
	   Deleting SWAPLO removed a number of long word adds scattered around
	   the kernel.  One sector (.5kb) of swap space is "lost"/discarded.
	   The previous practice was to decrement 'swplo' in compensation
	   for entering 1 as the first swap block.  Since 'swplo' has
	   gone away, the number of blocks available ('nswap') is simply 
	   decremented by 1 and the swapmap initialized starting at block 1.

	   This change affects a couple of the applications ('ps', 'pstat',
	   etc.) which were looking for 'swplo'.  These programs have been
	   updated.

	6) 'autoconfig' and programmable vector devices (MSCP, TMSCP, etc)
	    have never gotten along very well.  The drivers had
	    vectors hardcoded (either via #define statments or code
	    which allocated vectors from a base vector) into them.  Changing
	    /etc/dtab would have no effect (at best) or the system would
	    crash (at worst) because 'autoconfig' would allocate/initialize 
	    a vector different than that assumed by the driver. 

	    Networking drivers which support programmable vectors (DEQNA
	    for example) previously had their vectors hardcoded into
	    them AND into pdp/net_scb.s.  Changing one but forgetting to
	    change the other was one way to generate an inoperable system!

	    This has been fixed _at last_!  There are two methods used.
	    One for kernel devices configured by 'autoconfig' and a second 
	    used by the both 'autoconfig' and the networking drivers (which 
	    are not handled by 'autoconfig' because the networking is already 
	    running by the time 'init' starts 'autoconfig').

	    If a driver defines a routine "xxxVec" (where xxx is 'ra',
	    'tms', etc) then 'autoconfig' will call the driver with
	    two parameters:  the controller number and the vector from
	    /etc/dtab.  If the driver lacks a 'xxxVec' routine then
	    'autoconfig' functions as it always has.

	    The second method is used when dynamic allocation of vectors
	    is desired for programmable vector devices.  The networking
	    drivers (DEQNA, DEQTA, etc) use this method.  In the kernel
	    there is a location ('lastiv') which contains the next vector
	    to assign.  Usage is to decrement 'lastiv' by 4 and use the
	    new value.  If multiple vectors are needed then a multiple of
	    4 is subtracted ('autoconfig' counts how many "handlers" it
	    needs for a device).  To make use of this feature (second or third
	    MSCP controllers for example) put a 0 (zero) in the vector
	    field in /etc/dtab.

		NOTE:  It is an error to specify a 0 vector (dynamic
		       allocation) and not have a 'xxxVec' routine for
		       'autoconfig' to call.  'autoconfig' will print
		       an error and leave the device unattached.

		       If 'xxxVec' is used by 'autoconfig' the driver
		       should return success (0) or failure (non-0).
		       'autoconfig' will print "vectorset" if a programmable
		       vector is successfully installed.

	    Networking drivers access 'lastiv' via the "mfkd" and "mtkd"
	    (move from kernel data, move to kernel data) routines.  The
	    hardwired vector (400 for the DEQNA) has been removed from
	    scb.s.,

		NOTE:  the handlers for networking devices are still
		       present in net_scb.s, the drivers initialize
		       the allocated vector by means of a small (1 instruction)
		       assembly language routine (see the changes to 
		       pdpif/if_qe.c).  This 'asm' routine is needed
		       for the driver to access the handle name which does
		       not have a leading (underscore) prepended to it.

	7)  The logic in the DHV-11 driver to attempt forcing a fuller silo
	    (by turning off and on the receive interrupt enable) was removed
	    since it did not work (for very long).  After 2 silo overruns
	    or 90% full silos the logic would disable itself by decrementing
	    the number of delay ticks to 0.  The only real fix for the DHV-11's
	    silo handling problem is to replace the DHV-11 with a DHQ-11.

	8)  The kernel option UCB_NET has been renamed to INET (as 4.3BSD
	    does).  The TCP_COMPAT_42 option has been made "standard" by
	    removing the ifdef in netinet/tcp_var.h.

	9)  The MAXMEM option has been moved to param.h.  It is (almost)
	    never changed and was yet one more thing to accidentally get
	    wrong when configuring a kernel.  Thought was given to removing
	    MAXMEM entirely but it was put in with the other "never changed
	    without a great deal of thought" parameters in param.h

	10) The setup and installation documents have been revised to reflect
	    the new kernel configuration process and to remove references
	    to 'xpunix', 'raunix', etc (not needed now that the generic
	    kernel adapts automatically).

	11) The drivers in the OTHERS directory have been lightly edited
	    to change UCB_NET to INET, remove UNIBUS_MAP usage, etc.  No
	    attempt has been made to port or fix the drivers.

	12) Last, but by no means least, the 'config' script (/sys/conf/config)
	    and the conf/Make.{nsunix,unix,sunix} files have been totally 
	    redone.  Borrowing still another idea from 4.3BSD (not a whole
	    lot left to 'steal' ;-)) the 'config' script now places a line:

		DEFS="-DKERNEL -Doption1 -Doption2 ..."

	    at the front of the main Makefile.  The CFLAGS statement has
	    been modified to include ${DEFS}, thus the configuration options
	    are passed thru to the secondary makefiles Make.pdp, Make.pdpuba,
	    etc. 

	    The GENERIC config file has been redone.  You should make note
	    of your present device complement and then re-config your kernels
	    by making a copy of GENERIC and editing it.

		    NOTE:  The PDP11 line is now only used to select the
			   appropriate inlining method for the 'spl'
			   instruction.  You may safely set PDP11 to GENERIC,
			   no references to PDP11 are now made anywhere in the
			   kernel.

			   You should only set the IDENT line to GENERIC
			   if you either know what you are doing, or if
			   you really are making a distribution kernel.

			   Setting IDENT to GENERIC causes the kernel at
			   boot time to:

			   a) override "swapdev".
			      A GENERIC kernel automatically assigns the 'b'
			      partition of the booted device to be "swapdev"

			   b) override "rootdev".
			      A GENERIC kernel automatically assigns the 'a'
			      partition of the booted device to be "rootdev"
			      and "pipedev".

		The /GENALLSYS script is obsolete and has been removed
		from the system.  For a GENERIC system /unix will now
		adapt to the bootstrapped drive and automatically determine
		the amount of swap space.

	    The only change made to the secondary makefiles was to add
	    a new ethernet driver (not yet working) to Make.net.  The DEQTA
	    driver (if_qt.c) is still being debugged, a future update will
	    be forthcoming.  Since if_qt.c does not exist, the "patch" is
	    the whole file (the same applies to if_qtreg.h).  You will need
	    to create two 0 length files in pdpif ("touch /sys/pdpif/if_qt.c
	    /sys/pdpif/if_qtreg.h") before applying the 'pdpif' update kit.
	    A reminder will be placed in the part containing that patch.

		NOTE:  localopts.h has exactly _TWO_ (2) definitions in it
		       now:  EXTERNALITIMES (mapped out time values from the
		       inodes) and LINEHZ.

		       The default for EXTERNALITIMES is now YES.  It is
		       recommended that this not be changed, if it is changed
		       then applications which look at the kernel incore
		       inode table (pstat for example) will need to be
		       recompiled.

		       Unless either of these two defines change you never
		       need to worry about copying localopts.h again!

Fix:
	The following files are modified:

/usr/src/sys/sys/init_main.c
/usr/src/sys/sys/init_sysent.c
/usr/src/sys/sys/kern_clock.c
/usr/src/sys/sys/kern_descrip.c
/usr/src/sys/sys/kern_exec.c
/usr/src/sys/sys/kern_fork.c
/usr/src/sys/sys/kern_resource.c
/usr/src/sys/sys/kern_sig.c
/usr/src/sys/sys/kern_synch.c
/usr/src/sys/sys/subr_rmap.c
/usr/src/sys/sys/subr_xxx.c
/usr/src/sys/sys/sys_generic.c
/usr/src/sys/sys/sys_kern.c
/usr/src/sys/sys/sys_net.c
/usr/src/sys/sys/sys_pipe.c
/usr/src/sys/sys/sys_socket.c
/usr/src/sys/sys/tty.c
/usr/src/sys/sys/ufs_bio.c
/usr/src/sys/sys/ufs_subr.c
/usr/src/sys/sys/uipc_domain.c
/usr/src/sys/sys/uipc_mbuf.c
/usr/src/sys/sys/uipc_socket.c
/usr/src/sys/sys/vm_proc.c
/usr/src/sys/sys/vm_swap.c
/usr/src/sys/sys/vm_swp.c
/etc/disktab

	Many changes here involve replacing UCB_NET with INET, removing 
	references to UCB_FRCSWAP, NONFP, replacing UNIBUS_MAP with
	a run time check for a Unibus Map.  The VIRUS_VFORK option was
	deleted (it had never been anything but YES anyhow) so references 
	to it have been removed.  A couple of DIAGNOSTIC sections were
	deleted and since SWAPLO is gone references to 'swplo' were removed.
	NONFP references were removed (hardware FP is required since
	the emulator is not functional at this time).  References to
	UCB_RUSAGE were removed since that features is now standard.  References
	to NOKA5 were removed because that option has been obsoleted.

	The 'netubaa' routine was deleted because it was no longer used.

	The major change in init_main.c is to determine at boot time
	how much swap space is available.  In the case of the GENERIC
	kernel the 'swapdev', 'pipedev' and 'rootdev' devices are derived
	from the information passed from the bootroms.  

		NOTE:  You probably don't want to define GENERIC unless
		       the kernel is part of a distribution kit but there
		       is nothing to prevent this, and it might be useful
		       in some cases.

	The QT (M7516-YM or DELQA-YM) driver was added.  The driver is
	currently in progress and expected to work soon.

	References to NBUF have been replaced with the global variable
	'nbuf' because NBUF is no longer a 'localopts.h' option.  NBUF is
	now only used in param.c and is neither in localopts.h or the
	kernel compile time -Dxxxx options.

	The /etc/disktab file changes are for the RK06/7 and RM02/3
	drive types.  The 'a' and 'b' partitions are now root and swap
	respectively, the old practice of overlaying the 'e' or 'f'
	partitions over 'a'+'b' has been done away with (it should never
	have existed in the first place but that's another issue).

*** /usr/src/sys/sys/init_main.c.old	Sun Jul 12 16:27:15 1992
--- /usr/src/sys/sys/init_main.c	Sun Jan  3 00:45:57 1993
***************
*** 3,9 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)init_main.c	1.3 (2.11BSD Berkeley) 9/22/91
   */
  
  #include "param.h"
--- 3,9 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)init_main.c	1.4 (2.11BSD GTE) 12/24/92
   */
  
  #include "param.h"
***************
*** 52,57 ****
--- 52,58 ----
  	register int i;
  	register struct fs *fs;
  	time_t  toytime, toyclk();
+ 	daddr_t swsize;
  
  	startup();
  
***************
*** 84,92 ****
  	ihinit();
  	bhinit();
  	binit();
- #ifdef UNIBUS_MAP
  	ubinit();
- #endif
  #ifdef QUOTA
  	QUOTAMAP();
  	qtinit();
--- 85,91 ----
***************
*** 97,103 ****
--- 96,117 ----
  	nchinit();
  	clkstart();
  
+ #ifdef	GENERIC
  /*
+  * If this is the GENERIC kernel we set 'rootdev' to be the same as
+  * the device booted from.  'swapdev' is set to the the 'b' partition
+  * of 'bootdev'.  Set 'pipedev' to be 'rootdev'.  The 077 in the first
+  * statement removes the controller number (bits 6 and 7) - those bits
+  * are passed thru from /boot but would only greatly confuse the rest
+  * of the kernel.
+ */
+ 	rootdev = makedev(major(bootdev), minor(bootdev) & 077);
+ 	swapdev = rootdev | 1;	/* partition 'b' */
+ 	pipedev = rootdev;
+ 	dumpdev = NODEV;	/* paranoia */
+ #endif
+ 
+ /*
   * Need to attach the root device.  The CSR is passed thru because this
   * may be a 2nd or 3rd controller rather than the 1st.  NOTE: This poses
   * a big problem if 'swapdev' is not on the same controller as 'rootdev'
***************
*** 105,111 ****
   * autconfigure back in to the kernel it is not known what can be done about
   * this.
   *
!  * As a "compatibility hack" call swapdev's attach routine with a zero
   * address.  The MSCP driver treats the 0 as a signal to perform the
   * old (fixed address) attach.  Drivers (all the rest at this point) which
   * do not support alternate controller booting always attach the first
--- 119,125 ----
   * autconfigure back in to the kernel it is not known what can be done about
   * this.
   *
!  * One solution (for now) is to call swapdev's attach routine with a zero
   * address.  The MSCP driver treats the 0 as a signal to perform the
   * old (fixed address) attach.  Drivers (all the rest at this point) which
   * do not support alternate controller booting always attach the first
***************
*** 113,119 ****
  */
  	(void)(*bdevsw[major(bootdev)].d_root)(bootcsr);
  	(void)(*bdevsw[major(swapdev)].d_root)((caddr_t) 0);	/* XXX */
! 	(*bdevsw[major(swapdev)].d_open)(swapdev, B_READ);
  	fs = mountfs(rootdev, boothowto & RB_RDONLY, (struct inode *)0);
  	if (!fs)
  		panic("iinit");
--- 127,158 ----
  */
  	(void)(*bdevsw[major(bootdev)].d_root)(bootcsr);
  	(void)(*bdevsw[major(swapdev)].d_root)((caddr_t) 0);	/* XXX */
! 
! /*
!  * Now we find out how much swap space is available.  Since 'nswap' is
!  * a "u_int" we have to restrict the amount of swap to 65535 sectors (~32mb).
!  * Considering that 4mb is the maximum physical memory capacity of a pdp-11
!  * 32mb swap should be enough ;-)
!  *
!  * The initialization of the swap map was moved here from machdep2.c because
!  * 'nswap' was no longer statically defined and this is where the swap dev
!  * is opened/initialized.
!  *
!  * Also, we toss away/ignore .5kb (1 sector) of swap space (because a 0 value
!  * can not be placed in a resource map).
!  *
!  * 'swplo' was a hack which has _finally_ gone away!  It was never anything
!  * but 0 and caused a number of double word adds in the kernel.
! */
! 	(*bdevsw[major(swapdev)].d_open)(swapdev, B_READ|B_WRITE);
! 	swsize = (*bdevsw[major(swapdev)].d_psize)(swapdev);
! 	if	(swsize < 0)
! 		panic("swsize");	/* don't want to panic, but what ? */
! 	if	(swsize > (daddr_t)65535)
! 		swsize = 65535;
! 	nswap = swsize;
! 	mfree(swapmap, --nswap, 1);
! 
  	fs = mountfs(rootdev, boothowto & RB_RDONLY, (struct inode *)0);
  	if (!fs)
  		panic("iinit");
***************
*** 135,141 ****
  	iunlock(u.u_cdir);
  	u.u_rdir = NULL;
  
! #ifdef UCB_NET
  	if (netoff = netinit())
  		printf("Network init failed\n");
  	else
--- 174,180 ----
  	iunlock(u.u_cdir);
  	u.u_rdir = NULL;
  
! #ifdef INET
  	if (netoff = netinit())
  		printf("Network init failed\n");
  	else
***************
*** 145,153 ****
  	/*
  	 * make init process
  	 */
- #ifdef UCB_FRCSWAP
- 	idleflg = 1;			/* init can't cause swap */
- #endif
  	if (newproc(0)) {
  		expand((int)btoc(szicode), S_DATA);
  		expand((int)1, S_STACK);	/* one click of stack */
--- 184,189 ----
***************
*** 191,197 ****
  	for (bp = bfreelist; bp < &bfreelist[BQUEUES]; bp++)
  		bp->b_forw = bp->b_back = bp->av_forw = bp->av_back = bp;
  	paddr = ((long)bpaddr) << 6;
! 	for (i = 0; i < NBUF; i++, paddr += MAXBSIZE) {
  		bp = &buf[i];
  		bp->b_dev = NODEV;
  		bp->b_bcount = 0;
--- 227,233 ----
  	for (bp = bfreelist; bp < &bfreelist[BQUEUES]; bp++)
  		bp->b_forw = bp->b_back = bp->av_forw = bp->av_back = bp;
  	paddr = ((long)bpaddr) << 6;
! 	for (i = 0; i < nbuf; i++, paddr += MAXBSIZE) {
  		bp = &buf[i];
  		bp->b_dev = NODEV;
  		bp->b_bcount = 0;
***************
*** 229,235 ****
  #endif
  }
  
! #ifdef UCB_NET
  memaddr netdata;		/* click address of start of net data */
  
  /*
--- 265,271 ----
  #endif
  }
  
! #ifdef INET
  memaddr netdata;		/* click address of start of net data */
  
  /*
***************
*** 337,346 ****
  	}
  	if (i > netdsize)
  		*--dp -= ((i - netdsize) << 8);
- #ifdef DIAGNOSTIC
- 	printf("%s: size (clicks): text %d data %d bss %d\nloaded at 0%o 0%o clicks\n",
- 	    NETNIX, nettsize, initdata, btoc(ex.a_bss), nettext, netdata);
- #endif
  	ret = 0;
  leave:	if (ip)
  		iput(ip);
--- 373,378 ----
***************
*** 356,359 ****
  	}
  	return(ret);
  }
! #endif /* UCB_NET */
--- 388,391 ----
  	}
  	return(ret);
  }
! #endif
*** /usr/src/sys/sys/init_sysent.c.old	Sun Apr  8 00:38:48 1990
--- /usr/src/sys/sys/init_sysent.c	Thu Dec 24 16:40:57 1992
***************
*** 3,9 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)init_sysent.c	1.1 (2.10BSD Berkeley) 12/1/86
   */
  
  /*
--- 3,9 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)init_sysent.c	1.2 (2.11BSD GTE) 12/24/92
   */
  
  /*
***************
*** 73,79 ****
  
  /* 2.5 terminals */
  
! #ifdef UCB_NET
  #define ifnet(narg, name)	narg, name
  #define errnet(narg, name)	narg, name
  #else
--- 73,79 ----
  
  /* 2.5 terminals */
  
! #ifdef INET
  #define ifnet(narg, name)	narg, name
  #define errnet(narg, name)	narg, name
  #else
***************
*** 85,93 ****
  /* BEGIN JUNK */
  int	profil();		/* 'cuz sys calls are interruptible */
  int	vhangup();		/* should just do in exit() */
- #ifndef VIRUS_VFORK
- #define vfork	fork
- #endif
  int	vfork();		/* awaiting fork w/ copy on write */
  /* END JUNK */
  
--- 85,90 ----
*** /usr/src/sys/sys/kern_clock.c.old	Wed Jun  5 23:05:41 1991
--- /usr/src/sys/sys/kern_clock.c	Sun Dec 27 00:08:04 1992
***************
*** 3,14 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)kern_clock.c	1.1 (2.10BSD Berkeley) 12/1/86
   */
  
  #include "param.h"
  #include "../machine/psl.h"
- #include "../machine/reg.h"
  #include "../machine/seg.h"
  
  #include "user.h"
--- 3,13 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)kern_clock.c	1.2 (2.11BSD GTE) 12/24/92
   */
  
  #include "param.h"
  #include "../machine/psl.h"
  #include "../machine/seg.h"
  
  #include "user.h"
***************
*** 138,146 ****
  	if (++lbolt >= LINEHZ) {
  		lbolt -= LINEHZ;
  		++time.tv_sec;
- #ifdef UCB_FRCSWAP
- 		idleflg = 0;
- #endif
  	}
  
  	if (needsoft && BASEPRI(ps)) {	/* if ps is high, just return */
--- 137,142 ----
***************
*** 230,236 ****
  		p1->c_next = callfree;
  		callfree = p1;
  		splx(s);
! #ifdef UCB_NET
  		if (ISSUPERADD(func))
  			KScall(KERNELADD(func), sizeof(arg) + sizeof(a),
  			    arg, a);
--- 226,232 ----
  		p1->c_next = callfree;
  		callfree = p1;
  		splx(s);
! #ifdef INET
  		if (ISSUPERADD(func))
  			KScall(KERNELADD(func), sizeof(arg) + sizeof(a),
  			    arg, a);
*** /usr/src/sys/sys/kern_descrip.c.old	Sat Apr  7 18:00:00 1990
--- /usr/src/sys/sys/kern_descrip.c	Thu Dec 24 16:30:06 1992
***************
*** 3,9 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)kern_descrip.c	1.1 (2.10BSD Berkeley) 12/1/86
   */
  
  #include "param.h"
--- 3,9 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)kern_descrip.c	1.2 (2.11BSD GTE) 12/24/92
   */
  
  #include "param.h"
***************
*** 15,21 ****
  #include "ioctl.h"
  #include "stat.h"
  #include "conf.h"
! #ifdef UCB_NET
  #include "socket.h"
  #include "socketvar.h"
  #endif
--- 15,21 ----
  #include "ioctl.h"
  #include "stat.h"
  #include "conf.h"
! #ifdef INET
  #include "socket.h"
  #include "socketvar.h"
  #endif
***************
*** 180,186 ****
  {
  	register int error;
  
! #ifdef UCB_NET
  	if (fp->f_type == DTYPE_SOCKET) {
  		*valuep = mfsd(&fp->f_socket->so_pgrp);
  		return (0);
--- 180,186 ----
  {
  	register int error;
  
! #ifdef INET
  	if (fp->f_type == DTYPE_SOCKET) {
  		*valuep = mfsd(&fp->f_socket->so_pgrp);
  		return (0);
***************
*** 196,202 ****
  	int value;
  {
  
! #ifdef UCB_NET
  	if (fp->f_type == DTYPE_SOCKET) {
  		mtsd(&fp->f_socket->so_pgrp, value);
  		return (0);
--- 196,202 ----
  	int value;
  {
  
! #ifdef INET
  	if (fp->f_type == DTYPE_SOCKET) {
  		mtsd(&fp->f_socket->so_pgrp, value);
  		return (0);
***************
*** 259,265 ****
  			ub.st_size -= fp->f_offset;
  		break;
  
! #ifdef UCB_NET
  	case DTYPE_SOCKET:
  		u.u_error = SOO_STAT(fp->f_socket, &ub);
  		break;
--- 259,265 ----
  			ub.st_size -= fp->f_offset;
  		break;
  
! #ifdef INET
  	case DTYPE_SOCKET:
  		u.u_error = SOO_STAT(fp->f_socket, &ub);
  		break;
*** /usr/src/sys/sys/kern_exec.c.old	Thu Jun  6 19:59:43 1991
--- /usr/src/sys/sys/kern_exec.c	Sun Dec 27 23:53:08 1992
***************
*** 3,9 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)kern_exec.c	1.1 (2.10BSD Berkeley) 12/1/86
   */
  
  #include "param.h"
--- 3,9 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)kern_exec.c	1.2 (2.11BSD GTE) 12/23/92
   */
  
  #include "param.h"
***************
*** 231,237 ****
  					bdwrite(bp);
  				}
  				cc = CLSIZE*NBPG;
! 				bp = getblk(swapdev, dbtofsb(clrnd(swplo + bno)) + lblkno(nc));
  				cp = mapin(bp);
  			}
  			if (sharg) {
--- 231,237 ----
  					bdwrite(bp);
  				}
  				cc = CLSIZE*NBPG;
! 				bp = getblk(swapdev, dbtofsb(clrnd(bno)) + lblkno(nc));
  				cp = mapin(bp);
  			}
  			if (sharg) {
***************
*** 270,276 ****
  		for (cc = 0;cc < nc; cc += CLSIZE * NBPG) {
  			daddr_t blkno;
  
! 			blkno = dbtofsb(clrnd(swplo + bno)) + lblkno(cc);
  			if (incore(swapdev,blkno)) {
  				bp = bread(swapdev,blkno);
  				bp->b_flags |= B_AGE;		/* throw away */
--- 270,276 ----
  		for (cc = 0;cc < nc; cc += CLSIZE * NBPG) {
  			daddr_t blkno;
  
! 			blkno = dbtofsb(clrnd(bno)) + lblkno(cc);
  			if (incore(swapdev,blkno)) {
  				bp = bread(swapdev,blkno);
  				bp->b_flags |= B_AGE;		/* throw away */
***************
*** 309,316 ****
  					brelse(bp);
  				}
  				cc = CLSIZE*NBPG;
! 				bp = bread(swapdev,
! 				    dbtofsb(clrnd(swplo + bno)) + lblkno(nc));
  				bp->b_flags |= B_AGE;		/* throw away */
  				bp->b_flags &= ~B_DELWRI;	/* cancel io */
  				cp = mapin(bp);
--- 309,315 ----
  					brelse(bp);
  				}
  				cc = CLSIZE*NBPG;
! 				bp = bread(swapdev, dbtofsb(clrnd(bno)) + lblkno(nc));
  				bp->b_flags |= B_AGE;		/* throw away */
  				bp->b_flags &= ~B_DELWRI;	/* cancel io */
  				cp = mapin(bp);
*** /usr/src/sys/sys/kern_fork.c.old	Mon Sep 26 21:37:13 1988
--- /usr/src/sys/sys/kern_fork.c	Sun Dec 27 18:28:47 1992
***************
*** 3,9 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)kern_fork.c	1.1 (2.10BSD Berkeley) 12/1/86
   */
  
  #include "param.h"
--- 3,9 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)kern_fork.c	1.2 (2.11BSD GTE) 12/24/92
   */
  
  #include "param.h"
***************
*** 47,65 ****
  	register int a;
  	register struct proc *p1, *p2;
  
- #ifdef DIAGNOSTIC
- 	/*
- 	 * Make sure there's enough swap space for max
- 	 * core image, thus reducing chances of running out
- 	 */
- 	if ((a = malloc(swapmap, ctod(maxmem))) == 0) {
- 		printf("fork1: maxmem test failed.\n");
- 		u.u_error = ENOMEM;
- 		goto out;
- 	}
- 	mfree(swapmap, ctod(maxmem), a);
- #endif
- 
  	a = 0;
  	if (u.u_uid != 0) {
  		for (p1 = allproc; p1; p1 = p1->p_nxt)
--- 47,52 ----
***************
*** 251,263 ****
  	a1 = rip->p_addr;
  	if (isvfork)
  		a[2] = malloc(coremap,USIZE);
! 	else {
! #ifdef UCB_FRCSWAP
! 		a[2] = NULL;
! 		if (idleflg)
! #endif
  		a[2] = malloc3(coremap, rip->p_dsize, rip->p_ssize, USIZE, a);
- 	}
  
  	/*
  	 * Partially simulate the environment of the new process so that
--- 238,245 ----
  	a1 = rip->p_addr;
  	if (isvfork)
  		a[2] = malloc(coremap,USIZE);
! 	else
  		a[2] = malloc3(coremap, rip->p_dsize, rip->p_ssize, USIZE, a);
  
  	/*
  	 * Partially simulate the environment of the new process so that
*** /usr/src/sys/sys/kern_resource.c.old	Thu Sep  3 11:45:01 1987
--- /usr/src/sys/sys/kern_resource.c	Sat Dec 26 19:57:04 1992
***************
*** 3,9 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)kern_resrce.c	1.1 (2.10BSD Berkeley) 12/1/86
   */
  
  #include "param.h"
--- 3,9 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)kern_resource.c	1.2 (2.11BSD GTE) 12/26/92
   */
  
  #include "param.h"
***************
*** 261,267 ****
  	rup->ru_utime.tv_usec  = (krup->ru_utime % LINEHZ * 1000000) / LINEHZ;
  	rup->ru_stime.tv_sec   = krup->ru_stime / LINEHZ;
  	rup->ru_stime.tv_usec  = (krup->ru_stime % LINEHZ * 1000000) / LINEHZ;
- #ifdef UCB_RUSAGE
  	rup->ru_ovly = krup->ru_ovly;
  	rup->ru_nswap = krup->ru_nswap;
  	rup->ru_inblock = krup->ru_inblock;
--- 261,266 ----
***************
*** 271,275 ****
  	rup->ru_nsignals = krup->ru_nsignals;
  	rup->ru_nvcsw = krup->ru_nvcsw;
  	rup->ru_nivcsw = krup->ru_nivcsw;
- #endif
  }
--- 270,273 ----
*** /usr/src/sys/sys/kern_sig.c.old	Wed Jun  5 23:07:01 1991
--- /usr/src/sys/sys/kern_sig.c	Mon Dec 28 00:08:38 1992
***************
*** 3,9 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)kern_sig.c	1.1 (2.10BSD Berkeley) 6/12/88
   */
  
  #include "param.h"
--- 3,9 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)kern_sig.c	1.2 (2.11BSD GTE) 12/26/92
   */
  
  #include "param.h"
***************
*** 735,753 ****
  	/* more nonsense */
  	if (sig == 0)
  		panic("psig");
! #endif DIAGNOSTIC
! #ifndef NONFP
  	if (u.u_fpsaved == 0) {
  		savfp(&u.u_fps);
  		u.u_fpsaved = 1;
  	}
- #endif !NONFP
  	action = u.u_signal[sig];
  	if (action != SIG_DFL) {
  #ifdef DIAGNOSTIC
  		if (action == SIG_IGN || (p->p_sigmask & mask))
  			panic("psig action");
! #endif DIAGNOSTIC
  		u.u_error = 0;
  		/*
  		 * Set the new mask value and also defer further
--- 735,751 ----
  	/* more nonsense */
  	if (sig == 0)
  		panic("psig");
! #endif
  	if (u.u_fpsaved == 0) {
  		savfp(&u.u_fps);
  		u.u_fpsaved = 1;
  	}
  	action = u.u_signal[sig];
  	if (action != SIG_DFL) {
  #ifdef DIAGNOSTIC
  		if (action == SIG_IGN || (p->p_sigmask & mask))
  			panic("psig action");
! #endif
  		u.u_error = 0;
  		/*
  		 * Set the new mask value and also defer further
***************
*** 766,774 ****
  			returnmask = p->p_sigmask;
  		p->p_sigmask |= u.u_sigmask[sig] | mask;
  		(void) _spl0();
- #ifdef UCB_RUSAGE
  		u.u_ru.ru_nsignals++;
- #endif
  		sendsig(action, sig, returnmask);
  		p->p_cursig = 0;
  		return;
--- 764,770 ----
*** /usr/src/sys/sys/kern_synch.c.old	Wed Jun  5 23:07:32 1991
--- /usr/src/sys/sys/kern_synch.c	Fri Jan  1 16:12:00 1993
***************
*** 3,9 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)kern_synch.c	1.1 (2.10BSD Berkeley) 6/12/88
   */
  
  #include "param.h"
--- 3,9 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)kern_synch.c	1.2 (2.11BSD GTE) 1/1/93
   */
  
  #include "param.h"
***************
*** 157,165 ****
  			runin = 0;
  			wakeup((caddr_t)&runin);
  		}
- #ifdef UCB_RUSAGE
  		u.u_ru.ru_nvcsw++;
- #endif
  		swtch();
  		if (ISSIG(rp))
  			goto psig;
--- 157,163 ----
***************
*** 166,174 ****
  	} else {
  		rp->p_stat = SSLEEP;
  		(void) _spl0();
- #ifdef UCB_RUSAGE
  		u.u_ru.ru_nvcsw++;
- #endif
  		swtch();
  	}
  out:
--- 164,170 ----
***************
*** 214,220 ****
  	register struct proc *p, **q;
  	struct proc **qp;
  	int s;
- #ifndef NOKA5
  	mapinfo map;
  
  	/*
--- 210,215 ----
***************
*** 222,228 ****
  	 * kernel mapping to access proc.
  	 */
  	savemap(map);
- #endif
  	s = splclock();
  	qp = &slpque[HASH(chan)];
  restart:
--- 217,222 ----
***************
*** 263,271 ****
  			q = &p->p_link;
  	}
  	splx(s);
- #ifndef NOKA5
  	restormap(map);
- #endif
  }
  
  /*
--- 257,263 ----
***************
*** 368,379 ****
  			sureg();
  			return;
  		}
- #ifndef NONFP
  		if (u.u_fpsaved == 0) {
  			savfp(&u.u_fps);
  			u.u_fpsaved = 1;
  		}
- #endif
  		longjmp(proc[0].p_addr, &u.u_qsave);
  	}
  	/*
--- 360,369 ----
***************
*** 436,444 ****
  	 */
  	p = pp;
  	if (p == NULL) {
- #ifdef UCB_FRCSWAP
- 		idleflg = 1;
- #endif
  		idle();
  		goto loop;
  	}
--- 426,431 ----
*** /usr/src/sys/sys/subr_rmap.c.old	Sat Apr 30 16:15:03 1988
--- /usr/src/sys/sys/subr_rmap.c	Mon Dec 28 14:26:47 1992
***************
*** 3,9 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)subr_rmap.c	1.1 (2.10BSD Berkeley) 12/1/86
   */
  
  #include "param.h"
--- 3,9 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)subr_rmap.c	1.2 (2.11BSD GTE) 12/24/92
   */
  
  #include "param.h"
***************
*** 96,111 ****
  	}
  	return((memaddr)NULL);
  }
- 
- #ifdef UCB_NET
- /* corealloc allows the network code to call malloc(). */
- memaddr
- corealloc(n)
- 	size_t n;
- {
- 	return(malloc(coremap, n));
- }
- #endif
  
  /*
   * Free the previously allocated size units at addr into the specified
--- 96,101 ----
*** /usr/src/sys/sys/subr_xxx.c.old	Sun Jul 12 11:46:56 1987
--- /usr/src/sys/sys/subr_xxx.c	Thu Dec 24 18:17:58 1992
***************
*** 31,37 ****
  /*
   * socket(2) and socketpair(2) if networking not available.
   */
! #ifndef UCB_NET
  nonet()
  {
  	u.u_error = EPROTONOSUPPORT;
--- 31,37 ----
  /*
   * socket(2) and socketpair(2) if networking not available.
   */
! #ifndef INET
  nonet()
  {
  	u.u_error = EPROTONOSUPPORT;
*** /usr/src/sys/sys/sys_generic.c.old	Sat Apr  7 22:58:48 1990
--- /usr/src/sys/sys/sys_generic.c	Thu Dec 24 16:31:40 1992
***************
*** 3,9 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)sys_generic.c	1.1 (2.10BSD Berkeley) 12/1/86
   */
  
  #include "param.h"
--- 3,9 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)sys_generic.c	1.2 (2.11BSD GTE) 12/24/92
   */
  
  #include "param.h"
***************
*** 472,478 ****
  	register enum uio_rw rw;
  	register struct uio *uio;
  {
! #ifdef	UCB_NET
  	if (rw == UIO_READ)
  		return(SORECEIVE((struct socket *)fp->f_socket, 0, uio, 0, 0));
  	return(SOSEND((struct socket *)fp->f_socket, 0, uio, 0, 0));
--- 472,478 ----
  	register enum uio_rw rw;
  	register struct uio *uio;
  {
! #ifdef	INET
  	if (rw == UIO_READ)
  		return(SORECEIVE((struct socket *)fp->f_socket, 0, uio, 0, 0));
  	return(SOSEND((struct socket *)fp->f_socket, 0, uio, 0, 0));
***************
*** 486,492 ****
  	register u_int	com;
  	register char	*data;
  	{
! #ifdef	UCB_NET
  	return (SOO_IOCTL(fp, com, data));
  #else
  	return (EOPNOTSUPP);
--- 486,492 ----
  	register u_int	com;
  	register char	*data;
  	{
! #ifdef	INET
  	return (SOO_IOCTL(fp, com, data));
  #else
  	return (EOPNOTSUPP);
***************
*** 497,503 ****
  	register struct file *fp;
  	register int	flag;
  {
! #ifdef	UCB_NET
  	return (SOO_SELECT(fp, flag));
  #else
  	return (EOPNOTSUPP);
--- 497,503 ----
  	register struct file *fp;
  	register int	flag;
  {
! #ifdef	INET
  	return (SOO_SELECT(fp, flag));
  #else
  	return (EOPNOTSUPP);
***************
*** 507,513 ****
  socls(fp)
  	register struct file *fp;
  {
! #ifdef	UCB_NET
  	return (SOCLOSE((struct socket *)fp->f_socket));
  #else
  	return (EOPNOTSUPP);
--- 507,513 ----
  socls(fp)
  	register struct file *fp;
  {
! #ifdef	INET
  	return (SOCLOSE((struct socket *)fp->f_socket));
  #else
  	return (EOPNOTSUPP);
*** /usr/src/sys/sys/sys_kern.c.old	Sat Apr  7 18:14:18 1990
--- /usr/src/sys/sys/sys_kern.c	Sun Jan  3 00:55:30 1993
***************
*** 173,205 ****
  	--fp->f_msgcount;
  	closef(fp);
  }
- 
- #ifdef UNIBUS_MAP
- #include "uba.h"
- 
- netubaa(nregs)
- 	int nregs;
- {
- 	memaddr malloc();
- 	register int first, s;
- 
- #ifdef UCB_METER
- 	extern struct ubmeter ub_meter;
- 
- 	++ub_meter.ub_calls;
- #endif
- 	s = splhigh();
- 	while ((first = malloc(ub_map, nregs)) == NULL) {
- #ifdef UCB_METER
- 		ub_meter.ub_fails++;
- #endif
- 		ub_wantmr = 1;
- 		sleep(ub_map, PSWP+1);
- 	}
- 	splx(s);
- #ifdef UCB_METER
- 	ub_meter.ub_pages += nregs;
- #endif
- 	return(first);
- }
- #endif /* UNIBUS_MAP */
--- 173,175 ----
*** /usr/src/sys/sys/sys_net.c.old	Sun Mar 17 01:14:29 1991
--- /usr/src/sys/sys/sys_net.c	Sun Jan  3 00:50:01 1993
***************
*** 54,59 ****
--- 54,64 ----
  extern struct uba_driver qedriver;
  #endif
  
+ #include "qt.h"
+ #if NQT > 0
+ extern struct uba_driver qtdriver;
+ #endif
+ 
  #include "sri.h"
  #if NSRI > 0
  extern struct uba_driver sridriver;
***************
*** 72,79 ****
  	{ &ildriver,	0,0, (caddr_t)0164000 },
  #endif
  #if NQE > 0
! 	{ &qedriver,	0,0, (caddr_t)0174440 },
  #endif
  #if NSRI > 0
  	{ &sridriver,	0,0, (caddr_t)0167770 },
  #endif
--- 77,93 ----
  	{ &ildriver,	0,0, (caddr_t)0164000 },
  #endif
  #if NQE > 0
! 	{ &qedriver,	0,0, (caddr_t)0174440, 0, 0 },
  #endif
+ #if NQE > 1
+ 	{ &qedriver,	1,0, (caddr_t)0174460, 0, 0 },
+ #endif
+ #if NQT > 0
+ 	{ &qtdriver,	0,0, (caddr_t)0174440, 0, 0 },
+ #endif
+ #if NQT > 1
+ 	{ &qtdriver,	1,0, (caddr_t)0174460, 0, 0 },
+ #endif
  #if NSRI > 0
  	{ &sridriver,	0,0, (caddr_t)0167770 },
  #endif
***************
*** 115,121 ****
  	if ((miobase = MALLOC(coremap, btoc(miosize))) == 0)
  		panic("miobase");
  
- #ifdef	UNIBUS_MAP
  	/*
  	 * Allocate sufficient UMRs to map the DMA region.  Save the
  	 * starting click and UNIBUS addresses for use in ubmalloc later.
--- 129,134 ----
***************
*** 125,131 ****
  	if (mfkd(&ubmap)) {
  		miostart = miobase;
  		s = (int)btoub(miosize);
! 		first = NETUBAA(s);
  		mioumr = (ubadr_t)first << 13;
  		ubp = &UBMAP[first];
  		paddr = ctob((ubadr_t)miostart);
--- 138,148 ----
  	if (mfkd(&ubmap)) {
  		miostart = miobase;
  		s = (int)btoub(miosize);
! 		first = MALLOC(ub_map, s);
! #ifdef	DIAGNOSTIC
! 		if	(!first)
! 			panic("ub_map");
! #endif
  		mioumr = (ubadr_t)first << 13;
  		ubp = &UBMAP[first];
  		paddr = ctob((ubadr_t)miostart);
***************
*** 136,142 ****
  			paddr += (ubadr_t)UBPAGE;
  		}
  	}
- #endif UNIBUS_MAP
  
  	startnet = ctob((long)mfkd(&netdata));
  
--- 153,158 ----
*** /usr/src/sys/sys/sys_pipe.c.old	Fri Apr  6 20:02:36 1990
--- /usr/src/sys/sys/sys_pipe.c	Sun Dec 27 00:19:33 1992
***************
*** 3,14 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)sys_pipe.c	1.1 (2.10BSD Berkeley) 12/1/86
   */
  
  #include "param.h"
- #include "../machine/reg.h"
- 
  #include "systm.h"
  #include "user.h"
  #include "proc.h"
--- 3,12 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)sys_pipe.c	1.2 (2.11BSD GTE) 12/27/92
   */
  
  #include "param.h"
  #include "systm.h"
  #include "user.h"
  #include "proc.h"
*** /usr/src/sys/sys/sys_socket.c.old	Sat Apr 30 16:15:19 1988
--- /usr/src/sys/sys/sys_socket.c	Thu Dec 24 16:38:55 1992
***************
*** 13,19 ****
   */
  
  #include "param.h"
! #ifdef UCB_NET
  #include "systm.h"
  #include "user.h"
  #include "file.h"
--- 13,19 ----
   */
  
  #include "param.h"
! #ifdef INET
  #include "systm.h"
  #include "user.h"
  #include "file.h"
*** /usr/src/sys/sys/tty.c.old	Wed Apr 11 09:49:13 1990
--- /usr/src/sys/sys/tty.c	Sun Dec 27 00:13:21 1992
***************
*** 3,12 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)tty.c	1.1 (2.10BSD Berkeley) 12/1/86
   */
- 
- #include "../machine/reg.h"
  
  #include "param.h"
  #include "user.h"
--- 3,10 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)tty.c	1.2 (2.11BSD GTE) 12/27/92
   */
  
  #include "param.h"
  #include "user.h"
*** /usr/src/sys/sys/ufs_bio.c.old	Sat Jun 29 14:04:36 1991
--- /usr/src/sys/sys/ufs_bio.c	Sun Jan  3 00:45:09 1993
***************
*** 3,9 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)ufs_bio.c	2.0 (2.11BSD) 5/18/91
   */
  
  #include "param.h"
--- 3,9 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)ufs_bio.c	2.1 (2.11BSD) 12/26/92
   */
  
  #include "param.h"
***************
*** 37,45 ****
  	bp->b_bcount = DEV_BSIZE;	/* XXX? KB */
  	(*bdevsw[major(dev)].d_strategy)(bp);
  	trace(TR_BREADMISS);
- #ifdef UCB_RUSAGE
  	u.u_ru.ru_inblock++;		/* pay for read */
- #endif
  	biowait(bp);
  	return(bp);
  }
--- 37,43 ----
***************
*** 69,77 ****
  			bp->b_bcount = DEV_BSIZE;	/* XXX? KB */
  			(*bdevsw[major(dev)].d_strategy)(bp);
  			trace(TR_BREADMISS);
- #ifdef UCB_RUSAGE
  			u.u_ru.ru_inblock++;		/* pay for read */
- #endif
  		}
  		else
  			trace(TR_BREADHIT);
--- 67,73 ----
***************
*** 92,100 ****
  				rabp->b_bcount = DEV_BSIZE;	/* XXX? KB */
  				(*bdevsw[major(dev)].d_strategy)(rabp);
  				trace(TR_BREADMISSRA);
- #ifdef UCB_RUSAGE
  				u.u_ru.ru_inblock++;	/* pay in advance */
- #endif
  			}
  		} else
  			trace(TR_BREADHITRA);	
--- 88,94 ----
***************
*** 122,131 ****
  
  	flag = bp->b_flags;
  	bp->b_flags &= ~(B_READ | B_DONE | B_ERROR | B_DELWRI);
- #ifdef UCB_RUSAGE
  	if ((flag&B_DELWRI) == 0)
  		u.u_ru.ru_oublock++;		/* noone paid yet */
- #endif
  	trace(TR_BWRITE);
  	bp->b_bcount = DEV_BSIZE;		/* XXX? KB */
  	(*bdevsw[major(bp->b_dev)].d_strategy)(bp);
--- 116,123 ----
***************
*** 154,163 ****
  	register struct buf *bp;
  {
  
- #ifdef UCB_RUSAGE
  	if ((bp->b_flags&B_DELWRI) == 0)
  		u.u_ru.ru_oublock++;		/* noone paid yet */
- #endif
  	if (bdevsw[major(bp->b_dev)].d_flags & B_TAPE) {
  		bawrite(bp);
  	}
--- 146,153 ----
***************
*** 384,393 ****
  
  	if (bp->b_flags & B_DONE)
  		panic("dup biodone");
- #ifdef UNIBUS_MAP
  	if (bp->b_flags & (B_MAP|B_UBAREMAP))
  		mapfree(bp);
- #endif
  	bp->b_flags |= B_DONE;
  	if (bp->b_flags&B_ASYNC)
  		brelse(bp);
--- 374,381 ----
*** /usr/src/sys/sys/ufs_subr.c.old	Fri Sep  2 21:19:25 1988
--- /usr/src/sys/sys/ufs_subr.c	Thu Dec 24 15:24:13 1992
***************
*** 3,9 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)ufs_subr.c	1.1 (2.10BSD Berkeley) 12/1/86
   */
  
  #include "param.h"
--- 3,9 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)ufs_subr.c	1.2 (2.11BSD GTE) 12/24/92
   */
  
  #include "param.h"
***************
*** 111,123 ****
  	daddr_t blkno;
  
  	lastlbn = howmany(ip->i_size, DEV_BSIZE);
! 	if (lastlbn < NBUF / 2) {
  		for (lbn = 0; lbn < lastlbn; lbn++) {
  			blkno = fsbtodb(bmap(ip, lbn, B_READ, 0));
  			blkflush(ip->i_dev, blkno);
  		}
  	} else {
! 		lastbufp = &buf[NBUF];
  		for (bp = buf; bp < lastbufp; bp++) {
  			if (bp->b_dev != ip->i_dev ||
  			    (bp->b_flags & B_DELWRI) == 0)
--- 111,123 ----
  	daddr_t blkno;
  
  	lastlbn = howmany(ip->i_size, DEV_BSIZE);
! 	if (lastlbn < nbuf / 2) {
  		for (lbn = 0; lbn < lastlbn; lbn++) {
  			blkno = fsbtodb(bmap(ip, lbn, B_READ, 0));
  			blkflush(ip->i_dev, blkno);
  		}
  	} else {
! 		lastbufp = &buf[nbuf];
  		for (bp = buf; bp < lastbufp; bp++) {
  			if (bp->b_dev != ip->i_dev ||
  			    (bp->b_flags & B_DELWRI) == 0)
*** /usr/src/sys/sys/uipc_domain.c.old	Mon May  2 13:41:08 1988
--- /usr/src/sys/sys/uipc_domain.c	Thu Dec 24 16:38:20 1992
***************
*** 13,19 ****
   */
  
  #include "param.h"
! #ifdef UCB_NET
  #include "socket.h"
  #include "protosw.h"
  #include "domain.h"
--- 13,19 ----
   */
  
  #include "param.h"
! #ifdef INET
  #include "socket.h"
  #include "protosw.h"
  #include "domain.h"
***************
*** 139,142 ****
  				(*pr->pr_fasttimo)();
  	TIMEOUT(pffasttimo, (caddr_t)0, hz/PR_FASTHZ);
  }
! #endif	UCB_NET
--- 139,142 ----
  				(*pr->pr_fasttimo)();
  	TIMEOUT(pffasttimo, (caddr_t)0, hz/PR_FASTHZ);
  }
! #endif
*** /usr/src/sys/sys/uipc_mbuf.c.old	Sat Sep  8 10:08:23 1990
--- /usr/src/sys/sys/uipc_mbuf.c	Thu Dec 24 16:35:53 1992
***************
*** 3,13 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)uipc_mbuf.c	2.0 (2.10BSD) 6/5/86
   */
  
  #include "param.h"
! #ifdef UCB_NET
  #include "user.h"
  #include "mbuf.h"
  #include "kernel.h"
--- 3,13 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)uipc_mbuf.c	2.0 (2.11BSD) 12/24/92
   */
  
  #include "param.h"
! #ifdef INET
  #include "user.h"
  #include "mbuf.h"
  #include "kernel.h"
***************
*** 408,411 ****
  	m_freem(n);
  	return (0);
  }
! #endif UCB_NET
--- 408,411 ----
  	m_freem(n);
  	return (0);
  }
! #endif
*** /usr/src/sys/sys/uipc_socket.c.old	Sat Apr  7 20:14:18 1990
--- /usr/src/sys/sys/uipc_socket.c	Thu Dec 24 16:33:37 1992
***************
*** 13,19 ****
   */
  
  #include "param.h"
! #ifdef UCB_NET
  #include "user.h"
  #include "proc.h"
  #include "file.h"
--- 13,19 ----
   */
  
  #include "param.h"
! #ifdef INET
  #include "user.h"
  #include "proc.h"
  #include "file.h"
***************
*** 215,221 ****
  	int s;
  	int error;
  
- #ifdef	BSD2_10	
  /*
   * this is done here in supervisor mode since the kernel can't access the
   * socket or its options.
--- 215,220 ----
***************
*** 224,230 ****
  		return (EOPNOTSUPP);
  	if ((so->so_state & SS_NBIO) && (so->so_state & SS_ISCONNECTING))
  		return(EALREADY);
- #endif
  	s = splnet();
  	/*
  	 * If protocol is connection-based, can only connect once.
--- 223,228 ----
***************
*** 239,245 ****
  	else
  		error = (*so->so_proto->pr_usrreq)(so, PRU_CONNECT,
  		    (struct mbuf *)0, nam, (struct mbuf *)0);
- #ifdef	BSD2_10
  /*
   * this is done here because the kernel mode can't get at this info without
   * a lot of trouble.
--- 237,242 ----
***************
*** 252,258 ****
  		}
  	else
  		so->so_state &= ~SS_ISCONNECTING;
- #endif
  	splx(s);
  	return (error);
  }
--- 249,254 ----
***************
*** 647,659 ****
  	int error = 0;
  	register struct mbuf *m = m0;
  
- #ifdef	BSD2_10
  /* we make a copy because the kernel is faking the m0 mbuf and we have to
   * have something for the m_free's to work with
  */
  	if (m0)
  		m = m0 = m_copy(m0, 0, M_COPYALL);
- #endif
  	if (level != SOL_SOCKET) {
  		if (so->so_proto && so->so_proto->pr_ctloutput)
  			return ((*so->so_proto->pr_ctloutput)
--- 643,653 ----
***************
*** 830,836 ****
  	}
  }
  
- #ifdef	BSD2_10
  /*
   * this routine was extracted from the accept() call in uipc_sys.c to
   * do the initial accept processing in the supervisor rather than copying
--- 824,829 ----
***************
*** 914,918 ****
  		return(u.u_error = ENOTCONN);
  	return(u.u_error=(*so->so_proto->pr_usrreq)(so, PRU_PEERADDR, 0, m, 0));
  	}
! #endif	BSD2_10
! #endif	UCB_NET
--- 907,910 ----
  		return(u.u_error = ENOTCONN);
  	return(u.u_error=(*so->so_proto->pr_usrreq)(so, PRU_PEERADDR, 0, m, 0));
  	}
! #endif
*** /usr/src/sys/sys/vm_proc.c.old	Tue Jul  5 16:34:52 1988
--- /usr/src/sys/sys/vm_proc.c	Sat Dec 26 17:08:02 1992
***************
*** 3,9 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)vm_proc.c	1.1 (2.10BSD Berkeley) 6/12/88
   */
  
  #include "param.h"
--- 3,9 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)vm_proc.c	1.2 (2.11BSD GTE) 12/24/92
   */
  
  #include "param.h"
***************
*** 81,103 ****
  		sureg();
  		return;
  	}
- #ifndef NONFP
  	if (u.u_fpsaved == 0) {
  		savfp(&u.u_fps);
  		u.u_fpsaved = 1;
  	}
- #endif
- #ifdef UCB_FRCSWAP
- 	/*
- 	 * Stack must be copied either way, might as well not swap.
- 	 */
- 	if (idleflg || (segment==S_STACK))
- 		a2 = malloc(coremap, newsize);
- 	else
- 		a2 = NULL;
- #else
  	a2 = malloc(coremap, newsize);
- #endif
  	if (a2 == NULL) {
  		if (segment == S_DATA)
  			swapout(p, X_FREECORE, n, X_OLDSIZE);
--- 81,91 ----
*** /usr/src/sys/sys/vm_swap.c.old	Thu May 21 14:40:41 1987
--- /usr/src/sys/sys/vm_swap.c	Sat Dec 26 19:57:52 1992
***************
*** 3,9 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)vm_swap.c	1.1 (2.10BSD Berkeley) 12/1/86
   */
  
  #include "param.h"
--- 3,9 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)vm_swap.c	1.2 (2.11BSD GTE) 12/26/92
   */
  
  #include "param.h"
***************
*** 119,125 ****
  		if (freecore == X_FREECORE)
  			mfree(coremap, ostack, p->p_saddr);
  	}
- #ifdef UCB_RUSAGE
  	/*
  	 * Increment u_ru.ru_nswap for process being tossed out of core.
  	 * We can be called to swap out a process other than the current
--- 119,124 ----
***************
*** 141,147 ****
  		*KDSA6 = savekdsa6;
  		splx(s);
  	}
- #endif
  	swap(a[2], p->p_addr, USIZE, B_WRITE);
  	if (freecore == X_FREECORE)
  		mfree(coremap, USIZE, p->p_addr);
--- 140,145 ----
*** /usr/src/sys/sys/vm_swp.c.old	Sun Sep 22 08:03:40 1991
--- /usr/src/sys/sys/vm_swp.c	Wed Dec 23 23:39:03 1992
***************
*** 49,55 ****
  		if (tcount >= 01700)	/* prevent byte-count wrap */
  			tcount = 01700;
  		bp->b_bcount = ctob(tcount);
! 		bp->b_blkno = swplo + blkno;
  		bp->b_un.b_addr = (caddr_t)(coreaddr<<6);
  		bp->b_xmem = (coreaddr>>10) & 077;
  		trace(TR_SWAPIO);
--- 49,55 ----
  		if (tcount >= 01700)	/* prevent byte-count wrap */
  			tcount = 01700;
  		bp->b_bcount = ctob(tcount);
! 		bp->b_blkno = blkno;
  		bp->b_un.b_addr = (caddr_t)(coreaddr<<6);
  		bp->b_xmem = (coreaddr>>10) & 077;
  		trace(TR_SWAPIO);
*** /etc/disktab.old	Sun Jul 12 00:04:08 1992
--- /etc/disktab	Fri Jan  1 17:53:02 1993
***************
*** 31,46 ****
  # Drives on xp
  #
  
  rm02|RM02|rm03|RM03|DEC RM02/03:\
  	:ty=removable:ns#32:nt#5:nc#823:sf:\
  	:b0=/mdec/rm03uboot:\
! 	:pa#4800:ba#1024:fa#1024:\
! 	:pb#4800:bb#1024:fb#1024:\
! 	:pc#121922:bc#1024:fc#1024:\
! 	:pd#62720:bd#1024:fd#1024:\
! 	:pe#59202:be#1024:fe#1024:\
! 	:pf#9600:bf#1024:ff#1024:\
! 	:ph#131522:bh#1024:fh#1024:
  
  # RM05:
  rm05|RM05|cdc9766|CDC9766|9766|DEC RM05, CDC 9766:\
--- 31,48 ----
  # Drives on xp
  #
  
+ # RM02/03 - 'c' and 'h' partitions are both whole drive except bad sector track.
+ #	    'e' used to overlap 'a+b'.
+ #	
  rm02|RM02|rm03|RM03|DEC RM02/03:\
  	:ty=removable:ns#32:nt#5:nc#823:sf:\
  	:b0=/mdec/rm03uboot:\
! 	:pa#9600:ba#1024:fa#1024:\
! 	:pb#9600:bb#1024:fb#1024:\
! 	:pc#131520:bc#1024:fc#1024:\
! 	:pf#121920:bh#1024:fh#1024:
! 	:pg#112320:bh#1024:fh#1024:
! 	:ph#131520:bh#1024:fh#1024:
  
  # RM05:
  rm05|RM05|cdc9766|CDC9766|9766|DEC RM05, CDC 9766:\
***************
*** 156,176 ****
  rk06|RK06|DEC RK06:\
  	:ty=removable:ns#22:nt#3:nc#411:sf:\
  	:b0=/mdec/hkuboot:\
! 	:pa#5940:ba#1024:fa#1024:\
! 	:pb#2376:bb#1024:fb#1024:\
! 	:pd#18662:bd#1024:fd#1024:\
! 	:pe#8316:be#1024:fe#1024:\
! 	:pg#26978:bg#1024:fg#1024:
  rk07|RK07|DEC RK07:\
  	:ty=removable:ns#22:nt#3:nc#815:sf:bt=hkuboot:\
  	:b0=/mdec/hkuboot:\
! 	:pa#5940:ba#1024:fa#1024:\
! 	:pb#2376:bb#1024:fb#1024:\
! 	:pc#45326:bc#1024:fc#1024:\
! 	:pd#18662:bd#1024:fd#1024:\
! 	:pe#8316:be#1024:fe#1024:\
! 	:pg#26978:bg#1024:fg#1024:\
! 	:ph#53642:bh#1024:fh#1024:
  
  rl01|RL01|DEC RL01:\
  	:ty=removable:se#256:ns#40:nt#2:nc#256:\
--- 158,176 ----
  rk06|RK06|DEC RK06:\
  	:ty=removable:ns#22:nt#3:nc#411:sf:\
  	:b0=/mdec/hkuboot:\
! 	:pa#8316:ba#1024:fa#1024:\
! 	:pb#8316:bb#1024:fb#1024:\
! 	:pc#27126:bg#1024:fg#1024:
! 	:pg#10428:bg#1024:fg#1024:
! 	:ph#27060:bg#1024:fg#1024:
  rk07|RK07|DEC RK07:\
  	:ty=removable:ns#22:nt#3:nc#815:sf:bt=hkuboot:\
  	:b0=/mdec/hkuboot:\
! 	:pa#8316:ba#1024:fa#1024:\
! 	:pb#8316:bb#1024:fb#1024:\
! 	:pc#53790:bc#1024:fc#1024:\
! 	:pg#37092:bg#1024:fg#1024:\
! 	:ph#53724:bh#1024:fh#1024:
  
  rl01|RL01|DEC RL01:\
  	:ty=removable:se#256:ns#40:nt#2:nc#256:\
