*BSD News Article 71658


Return to BSD News archive

Newsgroups: comp.bugs.2bsd
Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!news.rmit.EDU.AU!news.unimelb.EDU.AU!munnari.OZ.AU!news.mel.connect.com.au!news.mira.net.au!inquo!news.uoregon.edu!vixen.cso.uiuc.edu!uwm.edu!news.cse.psu.edu!rutgers!news.new-york.net!wlbr!moe!sms
From: sms@moe.2bsd.com (Steven M. Schultz)
Subject: Speed up kernel recompiles (#325)
Archive-Name: comp.bugs.2bsd
Organization: 2BSD, Simi Valley CA USA
Message-ID: <DtBy3F.1J3@moe.2bsd.com>
Date: Fri, 21 Jun 1996 03:09:15 GMT
Lines: 1423

Subject: Speed up kernel recompiles (#325)
Index:	sys/conf/{Make.*,spl/*,config} 2.11BSD

Description:
	Kernel recompile times are too slow.

Repeat-By:
	cd /sys/GENERIC
	make clean
	time make

	On the master 11/73 system this yields:

	1760.3u  899.1s  48:54  90%  21728+13469io

	While the compile is running note that the 'ed - < SPLFIX' command
	takes almost as long as the compile time of a module.  Also - note
	that the ability of the assembler ('as') to accept piped input is
	not taken advantage of.

Fix:
	The inlining of spl calls by use of 'ed' scripts takes up almost
	40% of total compile time.

	Converting the 'ed' scripts into 'sed' scripts cut the inlining
	time by a factor of 2.

	The assembler has had the ability to accept piped input for some time.
	By piping the output of 'sed' directly into 'as' the need for
	'ed' to create a temporary file and then write the modified data back
	to the original .s file has been eliminated.

	Overall the kernel recompile time has been cut by 18-20%!  In the case
	of the GENERIC kernel test case the new timing is:

	1586.1u  598.5s  39:49  91%  19263+12251io

	The amount of disk I/O has been noticeably reduced and the elapsed
	time cut by ~9 minutes out of 49 (18%).

	For a complete networking kernel the before and after times are:

	old:  2747.2u  1468.1s  1:17:09  91%  37659+22107io
	new:  2430.4u   999.0s  1:03:11  90%  33429+19305io

	14 minutes saved out of 77.  Not bad at all!

	Installing the update involves installing new /sys/conf/spl and 
	/sys/conf/spl_3com directories and patching the /sys/conf/Make.*
	files.  One of the system include files (machparam.h) has a small
	changes made reflecting the new names of the 'sed' scripts.

	NOTE:

	  Existing kernel build directories may be left alone but doing so
	  will not speed up building those kernels.  There are two methods
	  of updating existing kernel build directories (except GENERIC, that
	  is explicitly covered in the directions below):  1) remove the
	  existing kernel build directory and run 'config' or 2) Save the
	  overlay configuration from the exiting KERNEL_DIR/Makefile, remove
	  the existing build directory, run 'config', and then merge in the
	  saved overlay configuration.

	To install the update first cut where indicated saving to a file
	(/tmp/325).

	The old /sys/conf/spl and spl_3com directories are moved aside for 
	later removal.  They could be removed immediately if you are either 
	confident everything will proceed smoothly or if readable backup 
	tapes are handy.

		mv /sys/conf/spl /sys/conf/spl.old
		mv /sys/conf/spl_3com /sys/conf/spl_3com.old

		cd /tmp
		sh 325
		patch -p0 < patch.325
		sh shar.325

		rm -r /sys/GENERIC
		cd /sys/conf
		./config GENERIC

	Then update (or remove and run config) on any other kernel build
	directories present in the system.

	No changes to the code have been made so there is no immediate
	need to recompile anything except if you want to see how much faster
	it is than before.

	This and previous updates for 2.11BSD are available via anonymous
	FTP to either MOE.2BSD.COM or FTP.IIPO.GTEGSC.COM in the directory
	/pub/2.11BSD.

----------------------------cut here-----------------------
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create:
#	/tmp/patch.325
#	/tmp/shar.325
# This archive created: Thu Jun 20 19:50:03 1996
export PATH; PATH=/bin:/usr/bin:$PATH
if test -f '/tmp/patch.325'
then
	echo shar: "will not over-write existing file '/tmp/patch.325'"
else
sed 's/^X//' << \SHAR_EOF > '/tmp/patch.325'
X*** /usr/src/sys/conf/Make.net.old	Tue Oct 13 20:49:24 1992
X--- /usr/src/sys/conf/Make.net	Sat Jun  8 22:31:14 1996
X***************
X*** 9,15 ****
X  # software without specific prior written permission. This software
X  # is provided ``as is'' without express or implied warranty.
X  #
X! #	%W% (Berkeley) %G%
X  #
X  N1=	../net
X  N1C=	${N1}/af.c ${N1}/if.c ${N1}/if_loop.c ${N1}/if_sl.c		\
X--- 9,15 ----
X  # software without specific prior written permission. This software
X  # is provided ``as is'' without express or implied warranty.
X  #
X! #	Make.net 2.0 (2.11BSD) 1996/6/8
X  #
X  N1=	../net
X  N1C=	${N1}/af.c ${N1}/if.c ${N1}/if_loop.c ${N1}/if_sl.c		\
X***************
X*** 57,64 ****
X  
X  .c.o:
X  	${CC} ${CFLAGS} -S $*.c
X! 	${ED} - < NETSPLFIX $*.s
X! 	${AS} - -o $*.o $*.s
X  	rm -f $*.s
X  
X  all: ${OBJS}
X--- 57,63 ----
X  
X  .c.o:
X  	${CC} ${CFLAGS} -S $*.c
X! 	${SED} -f NETSPLFIX $*.s | ${AS} -u -o $*.o
X  	rm -f $*.s
X  
X  all: ${OBJS}
X***************
X*** 68,71 ****
X  
X  # DO NOT DELETE THIS LINE -- mkdep uses it.
X  # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
X- 
X--- 67,69 ----
X*** /usr/src/sys/conf/Make.nsunix.old	Thu Jan 11 22:59:55 1996
X--- /usr/src/sys/conf/Make.nsunix	Sun Jun  9 13:55:34 1996
X***************
X*** 9,15 ****
X  # software without specific prior written permission. This software
X  # is provided ``as is'' without express or implied warranty.
X  #
X! #	2.6	(2.11BSD GTE) 1996/1/11
X  #
X  #########################################################
X  # Networking, separate I/D kernel			#
X--- 9,15 ----
X  # software without specific prior written permission. This software
X  # is provided ``as is'' without express or implied warranty.
X  #
X! #	2.7	(2.11BSD GTE) 1996/6/8
X  #
X  #########################################################
X  # Networking, separate I/D kernel			#
X***************
X*** 33,38 ****
X--- 33,39 ----
X  CPP=	/lib/cpp -P ${DEFS}
X  AS=	/bin/as -V
X  ED=	/bin/ed
X+ SED=	/bin/sed
X  
X  SUB=	sys pdp pdpuba pdpmba net pdpnet
X  
X***************
X*** 140,148 ****
X  	${CC} -c vers.c
X  
X  boot.o: boot.s
X! 	${CPP} boot.s > boot.i
X! 	${AS} -o boot.o boot.i
X! 	rm -f boot.i
X  
X  param.o:
X  	${CC} -S ${CFLAGS} param.c
X--- 141,147 ----
X  	${CC} -c vers.c
X  
X  boot.o: boot.s
X! 	${CPP} boot.s | ${AS} -o boot.o
X  
X  param.o:
X  	${CC} -S ${CFLAGS} param.c
X***************
X*** 161,175 ****
X  
X  sys pdp pdpuba pdpmba:
X  	make -f Make.$@ I=${I} H=${H} M=${M} AS="${AS}" CPP="${CPP}" \
X! 	    CFLAGS="${CFLAGS}" ED="${ED}"
X  
X  net pdpnet:
X  	make -f Make.$@ I=${I} H=${H} M=${M} AS="${AS}" \
X  	    CPP="${CPP} -DSUPERVISOR" CFLAGS="${CFLAGS} -DSUPERVISOR" \
X! 	    ED="${ED}"
X  
X  clean:
X! 	rm -f unix core mklog *.o *.i assym.h genassym checksys
X  	rm -f netnix netbind d.unix.s d.netnix.s
X  
X  install:
X--- 160,174 ----
X  
X  sys pdp pdpuba pdpmba:
X  	make -f Make.$@ I=${I} H=${H} M=${M} AS="${AS}" CPP="${CPP}" \
X! 	    CFLAGS="${CFLAGS}" SED="${SED}"
X  
X  net pdpnet:
X  	make -f Make.$@ I=${I} H=${H} M=${M} AS="${AS}" \
X  	    CPP="${CPP} -DSUPERVISOR" CFLAGS="${CFLAGS} -DSUPERVISOR" \
X! 	    SED="${SED}" ED="${ED}"
X  
X  clean:
X! 	rm -f unix core mklog *.o assym.h genassym checksys
X  	rm -f netnix netbind d.unix.s d.netnix.s
X  
X  install:
X***************
X*** 197,200 ****
X  
X  # DO NOT DELETE THIS LINE -- mkdep uses it.
X  # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
X- 
X--- 196,198 ----
X*** /usr/src/sys/conf/Make.pdp.old	Thu Jan 11 20:37:45 1996
X--- /usr/src/sys/conf/Make.pdp	Sat Jun  8 22:34:45 1996
X***************
X*** 9,15 ****
X  # software without specific prior written permission. This software
X  # is provided ``as is'' without express or implied warranty.
X  #
X! #	2.1 (2.11BSD GTE) 1996/1/11
X  #
X  M=	../machine
X  VPATH=	../machine
X--- 9,15 ----
X  # software without specific prior written permission. This software
X  # is provided ``as is'' without express or implied warranty.
X  #
X! #	2.2 (2.11BSD GTE) 1996/6/8
X  #
X  M=	../machine
X  VPATH=	../machine
X***************
X*** 36,43 ****
X  
X  .c.o:
X  	${CC} ${CFLAGS} -S $*.c
X! 	${ED} - < SPLFIX $*.s
X! 	${AS} - -o $*.o $*.s
X  	rm -f $*.s
X  
X  .s.o:
X--- 36,42 ----
X  
X  .c.o:
X  	${CC} ${CFLAGS} -S $*.c
X! 	${SED} -f SPLFIX $*.s | ${AS} -u -o $*.o
X  	rm -f $*.s
X  
X  .s.o:
X***************
X*** 62,65 ****
X  
X  # DO NOT DELETE THIS LINE -- mkdep uses it.
X  # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
X- 
X--- 61,63 ----
X*** /usr/src/sys/conf/Make.pdpmba.old	Mon Jul  4 00:02:23 1988
X--- /usr/src/sys/conf/Make.pdpmba	Sat Jun  8 22:35:38 1996
X***************
X*** 9,15 ****
X  # software without specific prior written permission. This software
X  # is provided ``as is'' without express or implied warranty.
X  #
X! #	%W% (Berkeley) %G%
X  #
X  U=	../pdpmba
X  VPATH=	../pdpmba
X--- 9,15 ----
X  # software without specific prior written permission. This software
X  # is provided ``as is'' without express or implied warranty.
X  #
X! #	Make.pdpmba 2.0 (2.11BSD) 1996/6/8
X  #
X  U=	../pdpmba
X  VPATH=	../pdpmba
X***************
X*** 19,26 ****
X  
X  .c.o:
X  	${CC} ${CFLAGS} -S $*.c
X! 	${ED} - < SPLFIX $*.s
X! 	${AS} - -o $*.o $*.s
X  	rm -f $*.s
X  
X  all: ${OBJS}
X--- 19,25 ----
X  
X  .c.o:
X  	${CC} ${CFLAGS} -S $*.c
X! 	${SED} -f SPLFIX $*.s | ${AS} -u -o $*.o
X  	rm -f $*.s
X  
X  all: ${OBJS}
X***************
X*** 30,33 ****
X  
X  # DO NOT DELETE THIS LINE -- mkdep uses it.
X  # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
X- 
X--- 29,31 ----
X*** /usr/src/sys/conf/Make.pdpnet.old	Thu Jan 11 20:38:14 1996
X--- /usr/src/sys/conf/Make.pdpnet	Sat Jun  8 22:37:47 1996
X***************
X*** 9,15 ****
X  # software without specific prior written permission. This software
X  # is provided ``as is'' without express or implied warranty.
X  #
X! #	2.1 (2.11BSD GTE) 1996/1/11
X  #
X  M=	../machine
X  VPATH=	../machine
X--- 9,15 ----
X  # software without specific prior written permission. This software
X  # is provided ``as is'' without express or implied warranty.
X  #
X! #	2.2 (2.11BSD GTE) 1996/6/8
X  #
X  M=	../machine
X  VPATH=	../machine
X***************
X*** 25,32 ****
X  
X  .c.o:
X  	${CC} ${CFLAGS} -S $*.c
X! 	${ED} - < NETSPLFIX $*.s
X! 	${AS} - -o $*.o $*.s
X  	rm -f $*.s
X  
X  .s.o:
X--- 25,31 ----
X  
X  .c.o:
X  	${CC} ${CFLAGS} -S $*.c
X! 	${SED} -f NETSPLFIX $*.s | ${AS} -u -o $*.o
X  	rm -f $*.s
X  
X  .s.o:
X***************
X*** 37,44 ****
X  in_cksum.o:
X  	${CC} ${CFLAGS} -S ${M}/in_cksum.c
X  	${ED} - < ${M}/cksum-fix > /dev/null in_cksum.s
X! 	${ED} - < NETSPLFIX in_cksum.s
X! 	${AS} - -o $@ in_cksum.s
X  	rm -f in_cksum.s
X  
X  depend: assym.h
X--- 36,42 ----
X  in_cksum.o:
X  	${CC} ${CFLAGS} -S ${M}/in_cksum.c
X  	${ED} - < ${M}/cksum-fix > /dev/null in_cksum.s
X! 	${SED} -f NETSPLFIX in_cksum.s | ${AS} -u -o $@
X  	rm -f in_cksum.s
X  
X  depend: assym.h
X***************
X*** 48,51 ****
X  	make -f Make.pdp CFLAGS="${CFLAGS}" assym.h
X  # DO NOT DELETE THIS LINE -- mkdep uses it.
X  # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
X- 
X--- 46,48 ----
X*** /usr/src/sys/conf/Make.pdpuba.old	Thu Dec 14 21:53:07 1995
X--- /usr/src/sys/conf/Make.pdpuba	Sat Jun  8 22:40:13 1996
X***************
X*** 9,15 ****
X  # software without specific prior written permission. This software
X  # is provided ``as is'' without express or implied warranty.
X  #
X! #	2.0  (2.11BSD) 1995/12/14
X  #
X  U=	../pdpuba
X  VPATH=	../pdpuba
X--- 9,15 ----
X  # software without specific prior written permission. This software
X  # is provided ``as is'' without express or implied warranty.
X  #
X! #	2.1  (2.11BSD) 1996/6/8
X  #
X  U=	../pdpuba
X  VPATH=	../pdpuba
X***************
X*** 23,30 ****
X  
X  .c.o:
X  	${CC} ${CFLAGS} -S $*.c
X! 	${ED} - < SPLFIX $*.s
X! 	${AS} - -o $*.o $*.s
X  	rm -f $*.s
X  
X  all: ${OBJS}
X--- 23,29 ----
X  
X  .c.o:
X  	${CC} ${CFLAGS} -S $*.c
X! 	${SED} -f SPLFIX $*.s | ${AS} -u -o $*.o
X  	rm -f $*.s
X  
X  all: ${OBJS}
X*** /usr/src/sys/conf/Make.sunix.old	Wed May 15 21:18:27 1996
X--- /usr/src/sys/conf/Make.sunix	Sun Jun  9 13:55:53 1996
X***************
X*** 9,15 ****
X  # software without specific prior written permission. This software
X  # is provided ``as is'' without express or implied warranty.
X  #
X! #	2.6 (2.11BSD GTE) 1996/5/15
X  #
X  #########################################################
X  # Non-network, but separate I/D kernel			#
X--- 9,15 ----
X  # software without specific prior written permission. This software
X  # is provided ``as is'' without express or implied warranty.
X  #
X! #	2.7 (2.11BSD GTE) 1996/6/8
X  #
X  #########################################################
X  # Non-network, but separate I/D kernel			#
X***************
X*** 28,33 ****
X--- 28,34 ----
X  CPP=	/lib/cpp -P ${DEFS}
X  AS=	/bin/as -V
X  ED=	/bin/ed
X+ SED=	/bin/sed
X  
X  SUB=	sys pdp pdpuba pdpmba
X  
X***************
X*** 94,107 ****
X  	${CC} -c vers.c
X  
X  boot.o: boot.s
X! 	${CPP} boot.s > boot.i
X! 	${AS} -o boot.o boot.i
X! 	rm -f boot.i
X  
X  param.o:
X  	${CC} -S ${CFLAGS} param.c
X  	${ED} - param.s < ../conf/:comm-to-bss
X! 	${AS} - -o param.o param.s
X  	rm -f param.s
X  
X  ioconf.o: ioconf.c
X--- 95,106 ----
X  	${CC} -c vers.c
X  
X  boot.o: boot.s
X! 	${CPP} boot.s | ${AS} -o boot.o
X  
X  param.o:
X  	${CC} -S ${CFLAGS} param.c
X  	${ED} - param.s < ../conf/:comm-to-bss
X! 	${AS} -u -o param.o param.s
X  	rm -f param.s
X  
X  ioconf.o: ioconf.c
X***************
X*** 109,121 ****
X  
X  sys pdp pdpuba pdpmba:
X  	make -f Make.$@ I=${I} H=${H} M=${M} AS="${AS}" CPP="${CPP}" \
X! 	    CFLAGS="${CFLAGS}" ED="${ED}"
X  
X  checksys: ../conf/checksys.c
X  	${CC} ${CFLAGS} -o $@ ../conf/checksys.c
X  
X  clean:
X! 	rm -f unix core mklog *.o *.i assym.h genassym checksys
X  
X  install:
X  	install -c -o root -g kmem -m 744 unix ${DESTDIR}/unix
X--- 108,120 ----
X  
X  sys pdp pdpuba pdpmba:
X  	make -f Make.$@ I=${I} H=${H} M=${M} AS="${AS}" CPP="${CPP}" \
X! 	    CFLAGS="${CFLAGS}" SED="${SED}"
X  
X  checksys: ../conf/checksys.c
X  	${CC} ${CFLAGS} -o $@ ../conf/checksys.c
X  
X  clean:
X! 	rm -f unix core mklog *.o assym.h genassym checksys
X  
X  install:
X  	install -c -o root -g kmem -m 744 unix ${DESTDIR}/unix
X***************
X*** 141,144 ****
X  
X  # DO NOT DELETE THIS LINE -- mkdep uses it.
X  # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
X- 
X--- 140,142 ----
X*** /usr/src/sys/conf/Make.sys.old	Sun Dec 24 14:25:09 1995
X--- /usr/src/sys/conf/Make.sys	Sat Jun  8 22:42:32 1996
X***************
X*** 9,15 ****
X  # software without specific prior written permission. This software
X  # is provided ``as is'' without express or implied warranty.
X  #
X! #	2.2 (2.11BSD GTE) 1995/12/24
X  #
X  S=	../sys
X  VPATH=	../sys
X--- 9,15 ----
X  # software without specific prior written permission. This software
X  # is provided ``as is'' without express or implied warranty.
X  #
X! #	2.3 (2.11BSD GTE) 1996/6/8
X  #
X  S=	../sys
X  VPATH=	../sys
X***************
X*** 49,56 ****
X  
X  .c.o:
X  	${CC} ${CFLAGS} -S $*.c
X! 	${ED} - < SPLFIX $*.s
X! 	${AS} - -o $*.o $*.s
X  	rm -f $*.s
X  
X  all: ${OBJS}
X--- 49,55 ----
X  
X  .c.o:
X  	${CC} ${CFLAGS} -S $*.c
X! 	${SED} -f SPLFIX $*.s | ${AS} -u -o $*.o
X  	rm -f $*.s
X  
X  all: ${OBJS}
X***************
X*** 60,63 ****
X  
X  # DO NOT DELETE THIS LINE -- mkdep uses it.
X  # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
X- 
X--- 59,61 ----
X*** /usr/src/sys/conf/Make.unix.old	Thu Jan 11 20:39:59 1996
X--- /usr/src/sys/conf/Make.unix	Sun Jun  9 13:55:44 1996
X***************
X*** 9,15 ****
X  # software without specific prior written permission. This software
X  # is provided ``as is'' without express or implied warranty.
X  #
X! #	2.5 (2.11BSD GTE) 1996/1/11
X  #
X  #########################################################
X  # Non-networking, non-separate I/D kernel		#
X--- 9,15 ----
X  # software without specific prior written permission. This software
X  # is provided ``as is'' without express or implied warranty.
X  #
X! #	2.6 (2.11BSD GTE) 1996/6/8
X  #
X  #########################################################
X  # Non-networking, non-separate I/D kernel		#
X***************
X*** 28,33 ****
X--- 28,34 ----
X  CPP=	/lib/cpp -P ${DEFS}
X  AS=	/bin/as -V
X  ED=	/bin/ed
X+ SED=	/bin/sed
X  
X  SUB=	sys pdp pdpuba pdpmba
X  
X***************
X*** 96,104 ****
X  	${CC} -c vers.c
X  
X  boot.o: boot.s
X! 	${CPP} boot.s > boot.i
X! 	${AS} -o boot.o boot.i
X! 	rm -f boot.i
X  
X  param.o:
X  	${CC} -S ${CFLAGS} param.c
X--- 97,103 ----
X  	${CC} -c vers.c
X  
X  boot.o: boot.s
X! 	${CPP} boot.s | ${AS} -o boot.o
X  
X  param.o:
X  	${CC} -S ${CFLAGS} param.c
X***************
X*** 111,123 ****
X  
X  sys pdp pdpuba pdpmba:
X  	make -f Make.$@ I=${I} H=${H} M=${M} AS="${AS}" CPP="${CPP}" \
X! 	    CFLAGS="${CFLAGS}" ED="${ED}"
X  
X  checksys: ../conf/checksys.c
X  	${CC} ${CFLAGS} -o $@ ../conf/checksys.c
X  
X  clean:
X! 	rm -f unix core mklog *.o *.i assym.h genassym checksys
X  
X  install:
X  	install -c -o root -g kmem -m 744 unix ${DESTDIR}/unix
X--- 110,122 ----
X  
X  sys pdp pdpuba pdpmba:
X  	make -f Make.$@ I=${I} H=${H} M=${M} AS="${AS}" CPP="${CPP}" \
X! 	    CFLAGS="${CFLAGS}" SED="${SED}"
X  
X  checksys: ../conf/checksys.c
X  	${CC} ${CFLAGS} -o $@ ../conf/checksys.c
X  
X  clean:
X! 	rm -f unix core mklog *.o assym.h genassym checksys
X  
X  install:
X  	install -c -o root -g kmem -m 744 unix ${DESTDIR}/unix
X***************
X*** 143,146 ****
X  
X  # DO NOT DELETE THIS LINE -- mkdep uses it.
X  # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
X- 
X--- 142,144 ----
X*** /usr/src/sys/conf/config.old	Wed Nov 22 21:29:53 1995
X--- /usr/src/sys/conf/config	Sat Jun  8 22:47:36 1996
X***************
X*** 1,6 ****
X--- 1,8 ----
X  #! /bin/sh
X  #	2.11BSD script to set up a new kernel configuration directory.
X  #
X+ #	1996/6/8 - New spl massaging scripts.  They are now 'sed' scripts
X+ #		   rather than 'ed' scripts and are about twice as fast.
X  #	1995/07/21 - remove XP_PROBE, the kernel no longer probes for disk
X  #		     type because that information is obtained from the 
X  #		     disklabel.
X***************
X*** 59,74 ****
X  case $PDP11 in
X  	GENERIC)
X  		KERN_NONSEP=NO
X! 		NETFIX=:splfix.movb
X! 		SPLFIX=:splfix.movb;;
X  	53|73|83|84|93|94)
X  		KERN_NONSEP=NO
X! 		NETFIX=:splfix.movb+mfps
X! 		SPLFIX=:splfix.mfps;;
X  	44|45|50|55|70)
X  		KERN_NONSEP=NO
X! 		NETFIX=:splfix.movb
X! 		SPLFIX=:splfix.spl;;
X  	*)
X  		echo "$0: unrecognized PDP11 type $PDP11."
X  		echo 'use GENERIC, 44, 70, 73'
X--- 61,76 ----
X  case $PDP11 in
X  	GENERIC)
X  		KERN_NONSEP=NO
X! 		NETFIX=splfix.movb.sed
X! 		SPLFIX=splfix.movb.sed;;
X  	53|73|83|84|93|94)
X  		KERN_NONSEP=NO
X! 		NETFIX=splfix.movb+mfps.sed
X! 		SPLFIX=splfix.mfps.sed;;
X  	44|45|50|55|70)
X  		KERN_NONSEP=NO
X! 		NETFIX=splfix.movb.sed
X! 		SPLFIX=splfix.spl.sed;;
X  	*)
X  		echo "$0: unrecognized PDP11 type $PDP11."
X  		echo 'use GENERIC, 44, 70, 73'
X*** /usr/src/sys/h/buf.h.old	Thu Apr 13 21:17:37 1995
X--- /usr/src/sys/h/buf.h	Sun Jun  9 20:07:10 1996
X***************
X*** 3,9 ****
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)buf.h	1.2 (2.11BSD GTE) 1995/04/13
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!  *	@(#)buf.h	1.3 (2.11BSD GTE) 1996/6/9
X   */
X  
X  /*
X***************
X*** 108,117 ****
X  #define	B_LOCKED	0x02000		/* locked in core (not reusable) */
X  #define	B_UBAREMAP	0x04000		/* addr UNIBUS virtual, not physical */
X  #define	B_RAMREMAP	0x08000		/* remapped into ramdisk */
X- 
X- /* flag arguments to physio() and chkphys() */
X- #define	WORD	2			/* doing I/O by word */
X- #define	BYTE	1			/* doing I/O by byte */
X  
X  /*
X   * Insq/Remq for the buffer hash lists.
X--- 108,113 ----
X*** /usr/src/sys/pdp/machparam.h.old	Sun Jun  6 12:18:21 1993
X--- /usr/src/sys/pdp/machparam.h	Wed Jun 19 21:41:20 1996
X***************
X*** 3,9 ****
X   * All rights reserved.  The Berkeley software License Agreement
X   * specifies the terms and conditions for redistribution.
X   *
X!  *	@(#)machparam.h	1.2 (2.11BSD GTE) 12/24/92
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!  *	@(#)machparam.h	1.3 (2.11BSD GTE) 1996/6/19
X   */
X  
X  /*
X***************
X*** 129,136 ****
X  #define	DELAY(n)	{ long N = ((long)(n))<<1; while (--N > 0); }
X  
X  /*
X!  * Treat ps as byte, to allow restoring value from mfps/movb
X!  * (see :splfix.*)
X   */
X  #define	PS_LOBYTE	((char *)0177776)
X  #define	splx(ops)	(*PS_LOBYTE = ((char)(ops)))
X--- 129,136 ----
X  #define	DELAY(n)	{ long N = ((long)(n))<<1; while (--N > 0); }
X  
X  /*
X!  * Treat ps as byte, to allow restoring value from mfps/movb.
X!  * (see splfix.*.sed)
X   */
X  #define	PS_LOBYTE	((char *)0177776)
X  #define	splx(ops)	(*PS_LOBYTE = ((char)(ops)))
X*** /VERSION.old	Wed Jun 12 19:41:14 1996
X--- /VERSION	Wed Jun 19 21:36:08 1996
X***************
X*** 1,4 ****
X! Current Patch Level: 324
X  
X  2.11 BSD
X  ============
X--- 1,4 ----
X! Current Patch Level: 325
X  
X  2.11 BSD
X  ============
SHAR_EOF
fi
if test -f '/tmp/shar.325'
then
	echo shar: "will not over-write existing file '/tmp/shar.325'"
else
sed 's/^X//' << \SHAR_EOF > '/tmp/shar.325'
X#! /bin/sh
X# This is a shell archive, meaning:
X# 1. Remove everything above the #! /bin/sh line.
X# 2. Save the resulting text in a file.
X# 3. Execute the file with /bin/sh (not csh) to create:
X#	/usr/src/sys/conf/spl
X#	/usr/src/sys/conf/spl_3com
X# This archive created: Thu Jun 20 19:48:48 1996
Xexport PATH; PATH=/bin:/usr/bin:$PATH
Xif test ! -d '/usr/src/sys/conf/spl'
Xthen
X	mkdir '/usr/src/sys/conf/spl'
Xfi
Xcd '/usr/src/sys/conf/spl'
Xif test -f 'splfix.mfps.sed'
Xthen
X	echo shar: "will not over-write existing file 'splfix.mfps.sed'"
Xelse
Xsed 's/^Z//' << \SHAR_EOF > 'splfix.mfps.sed'
XZ# splfix.mfps.sed - replace "jsr[ \t]pc,_splN" calls with mfps and spl 
XZ#	instructions.  The sed 't' command is used liberally to short circuit
XZ#	the script - if a match is made there's no sense continuing on because
XZ#	there can never be more than a single 'spl' call per line.
XZ#
XZ# NOTE: there are embedded tabs (\t) characters in many of the patterns below
XZ#	be *very* careful when editing or cutting&pasting that the tabs do not
XZ#	get converted to spaces!
XZ#
XZ# Do the easy ones - these do not save the previous spl.  
XZ
XZs/jsr[	 ]*pc,__spl\([0-7]\)/spl \1/g
XZt
XZs/jsr[	 ]*pc,__splsoftclock/spl 1/g
XZt
XZs/jsr[	 ]*pc,__splnet/spl 2/g
XZt
XZs/jsr[	 ]*pc,__splbio/spl 5/g
XZt
XZs/jsr[	 ]*pc,__splimp/spl 5/g
XZt
XZs/jsr[	 ]*pc,__spltty/spl 5/g
XZt
XZs/jsr[	 ]*pc,__splclock/spl 6/g
XZt
XZs/jsr[	 ]*pc,__splhigh/spl 7/g
XZt
XZ
XZ# Now the harder ones.  It is *very* tempting to read ahead a line and optimize
XZ# the "mfps r0; spl N; movb r0,foo" into "mfps foo; splN".  Alas, this would
XZ# break code which relied on "splN()" being a function which returned a value
XZ# in r0.
XZ
XZs/jsr[	 ]*pc,_spl\([0-7]\)/mfps r0; spl \1/g
XZt
XZs/jsr[	 ]*pc,_splsoftclock/mfps r0; spl 1/g
XZt
XZs/jsr[	 ]*pc,_splnet/mfps r0; spl 2/g
XZt
XZs/jsr[	 ]*pc,_splbio/mfps r0; spl 5/g
XZt
XZs/jsr[	 ]*pc,_splimp/mfps r0; spl 5/g
XZt
XZs/jsr[	 ]*pc,_spltty/mfps r0; spl 5/g
XZt
XZs/jsr[	 ]*pc,_splclock/mfps r0; spl 6/g
XZt
XZs/jsr[	 ]*pc,_splhigh/mfps r0; spl 7/g
XZt
XZ
XZ#
XZ# A couple special cases.  If the PS is being loaded from a variable then use
XZ# the 'mtps' instruction.
XZ#
XZ
XZs/movb[	 ]*\(.*[^,]\),\*\$-2/mtps \1/g
XZt
XZs/movb[	 ]*\(.*[^,]\),\*\$177776/mtps \1/g
XZt
XSHAR_EOF
Xchmod 644 'splfix.mfps.sed'
Xfi
Xif test -f 'splfix.movb+mfps.sed'
Xthen
X	echo shar: "will not over-write existing file 'splfix.movb+mfps.sed'"
Xelse
Xsed 's/^Z//' << \SHAR_EOF > 'splfix.movb+mfps.sed'
XZ# splfix.movb+mfps.sed - replace "jsr[ \t]pc,_spl*" calls with 'movb' and 'mfps'
XZ#	instructions.  The sed 't' command is used liberally to short circuit
XZ#	the script - if a match is made there's no sense continuing on because
XZ#	there can never be more than a single 'spl' call per line.
XZ#
XZ# NOTE: there are embedded tabs (\t) characters in many of the patterns below
XZ#	be *very* careful when editing or cutting&pasting that the tabs do not
XZ#	get converted to spaces!
XZ#
XZ# Do the easy ones - these do not save the previous spl.
XZ
XZs/jsr[	 ]*pc,__spl0/clrb 177776/
XZt
XZs/jsr[	 ]*pc,__spl\([1-7]\)/movb $40*\1,177776/
XZt
XZs/jsr[	 ]*pc,__splsoftclock/movb $40,177776/
XZt
XZs/jsr[	 ]*pc,__splnet/movb $100,177776/
XZt
XZs/jsr[	 ]*pc,__splimp/movb $240,177776/
XZt
XZs/jsr[	 ]*pc,__splbio/movb $240,177776/
XZt
XZs/jsr[	 ]*pc,__spltty/movb $240,177776/
XZt
XZs/jsr[	 ]*pc,__splclock/movb $300,177776/
XZt
XZs/jsr[	 ]*pc,__splhigh/movb $340,177776/
XZt
XZ
XZ# Now the harder ones.  It is *very* tempting to read ahead a line and optimize
XZ# the "mfps r0; movb $N,PS; movb r0,foo" into "mfps foo; movb $N,PS".  Alas, 
XZ# this would break code which relied on "splN()" being a function which 
XZ# returned a value in r0.
XZ
XZs/jsr[	 ]*pc,_spl0/mfps r0; clrb 177776/g
XZt
XZs/jsr[	 ]*pc,_spl\([1-7]\)/mfps r0; movb $40*\1,177776/g
XZt
XZs/jsr[	 ]*pc,_splsoftclock/mfps r0; movb $40,177776/g
XZt
XZs/jsr[	 ]*pc,_splnet/mfps r0; movb $100,177776/g
XZt
XZs/jsr[	 ]*pc,_splbio/mfps r0; movb $240,177776/g
XZt
XZs/jsr[	 ]*pc,_splimp/mfps r0; movb $240,177776/g
XZt
XZs/jsr[	 ]*pc,_spltty/mfps r0; movb $240,177776/g
XZt
XZs/jsr[	 ]*pc,_splclock/mfps r0; movb $300,177776/g
XZt
XZs/jsr[	 ]*pc,_splhigh/mfps r0; movb $340,177776/g
XZt
XSHAR_EOF
Xchmod 644 'splfix.movb+mfps.sed'
Xfi
Xif test -f 'splfix.movb.sed'
Xthen
X	echo shar: "will not over-write existing file 'splfix.movb.sed'"
Xelse
Xsed 's/^Z//' << \SHAR_EOF > 'splfix.movb.sed'
XZ# splfix.movb.sed - replace "jsr[ \t]pc,_spl*" calls with 'movb'
XZ#       instructions.  The sed 't' command is used liberally to short circuit
XZ#       the script - if a match is made there's no sense continuing on because
XZ#       there can never be more than a single 'spl' call per line.
XZ#
XZ# NOTE: there are embedded tabs (\t) characters in many of the patterns below
XZ#	be *very* careful when editing or cutting&pasting that the tabs do not
XZ#	get converted to spaces!
XZ#
XZ# Do the easy ones - these do not save the previous spl.
XZ
XZs/jsr[	 ]*pc,__spl0/clrb 177776/g
XZt
XZs/jsr[	 ]*pc,__spl\([1-7]\)/movb $40*\1,177776/g
XZt
XZs/jsr[	 ]*pc,__splsoftclock/movb $40,177776/g
XZt
XZs/jsr[	 ]*pc,__splnet/movb $100,177776/g
XZt
XZs/jsr[	 ]*pc,__splimp/movb $240,177776/g
XZt
XZs/jsr[	 ]*pc,__splbio/movb $240,177776/g
XZt
XZs/jsr[	 ]*pc,__spltty/movb $240,177776/g
XZt
XZs/jsr[	 ]*pc,__splclock/movb $300,177776/g
XZt
XZs/jsr[	 ]*pc,__splhigh/movb $340,177776/g
XZt
XZ
XZ# Now the harder ones.  It is *very* tempting to read ahead a line and optimize
XZ# the "movb PS,r0; movb $N,PS; movb r0,foo" into "movb PS,foo; movb $N,PS".  
XZ# Alas, this would break code which relied on "splN()" being a function which 
XZ# returned a value in r0.
XZ
XZs/jsr[	 ]*pc,_spl0/movb 177776,r0; clrb 177776/g
XZt
XZs/jsr[	 ]*pc,_spl\([1-7]\)/movb 177776,r0; movb $40*\1,177776/g
XZt
XZs/jsr[	 ]*pc,_splsoftclock/movb 177776,r0; movb $40,177776/g
XZt
XZs/jsr[	 ]*pc,_splnet/movb 177776,r0; movb $100,177776/g
XZt
XZs/jsr[	 ]*pc,_splbio/movb 177776,r0; movb $240,177776/g
XZt
XZs/jsr[	 ]*pc,_splimp/movb 177776,r0; movb $240,177776/g
XZt
XZs/jsr[	 ]*pc,_spltty/movb 177776,r0; movb $240,177776/g
XZt
XZs/jsr[	 ]*pc,_splclock/movb 177776,r0; movb $300,177776/g
XZt
XZs/jsr[	 ]*pc,_splhigh/movb 177776,r0; movb $340,177776/g
XZt
XSHAR_EOF
Xchmod 644 'splfix.movb.sed'
Xfi
Xif test -f 'splfix.profil.sed'
Xthen
X	echo shar: "will not over-write existing file 'splfix.profil.sed'"
Xelse
Xsed 's/^Z//' << \SHAR_EOF > 'splfix.profil.sed'
XZ# splfix.profil.sed - replace "jsr[ \t]pc,_splN" calls with 'movb' and 'spl'
XZ#       instructions.  The sed 't' command is used liberally to short circuit
XZ#       the script - if a match is made there's no sense continuing on because
XZ#       there can never be more than a single 'spl' call per line.
XZ#
XZ# Do the easy ones - these do not save the previous spl.
XZ
XZs/jsr[	 ]*pc,__spl\([0-6]\)/spl \1/g
XZt
XZs/jsr[	 ]*pc,__spl7/spl 6/g
XZt
XZs/jsr[	 ]*pc,__splsoftclock/spl 1/g
XZt
XZs/jsr[	 ]*pc,__splnet/spl 2/g
XZt
XZs/jsr[	 ]*pc,__splbio/spl 5/g
XZt
XZs/jsr[	 ]*pc,__splimp/spl 5/g
XZt
XZs/jsr[	 ]*pc,__spltty/spl 5/g
XZt
XZs/jsr[	 ]*pc,__splclock/spl 6/g
XZt
XZs/jsr[	 ]*pc,__splhigh/spl 6/g
XZt
XZ
XZ# Now the harder ones.  It is *very* tempting to read ahead a line and optimize
XZ# the "movb PS,r0; spl $N; movb r0,foo" into "mfps foo; spl $N".  Alas, 
XZ# this would break code which relied on "splN()" being a function which 
XZ# returned a value in r0.
XZ
XZs/jsr[	 ]*pc,_spl\([0-6]\)/movb 177776,r0; spl \1/g
XZt
XZs/jsr[	 ]*pc,_spl7/movb 177776,r0; spl 6/g
XZt
XZs/jsr[	 ]*pc,_splsoftclock/movb 177776,r0; spl 1/g
XZt
XZs/jsr[	 ]*pc,_splnet/movb 177776,r0; spl 2/g
XZt
XZs/jsr[	 ]*pc,_splbio/movb 177776,r0; spl 5/g
XZt
XZs/jsr[	 ]*pc,_splimp/movb 177776,r0; spl 5/g
XZt
XZs/jsr[	 ]*pc,_spltty/movb 177776,r0; spl 5/g
XZt
XZs/jsr[	 ]*pc,_splclock/movb 177776,r0; spl 6/g
XZt
XZs/jsr[	 ]*pc,_splhigh/movb 177776,r0; spl 6/g
XZt
XSHAR_EOF
Xchmod 644 'splfix.profil.sed'
Xfi
Xif test -f 'splfix.spl.sed'
Xthen
X	echo shar: "will not over-write existing file 'splfix.spl.sed'"
Xelse
Xsed 's/^Z//' << \SHAR_EOF > 'splfix.spl.sed'
XZ# splfix.spl.sed - replace "jsr[ \t]pc,_spl*" calls with 'movb' and 'spl'
XZ#       instructions.  The sed 't' command is used liberally to short circuit
XZ#       the script - if a match is made there's no sense continuing on because
XZ#       there can never be more than a single 'spl' call per line.
XZ#
XZ# NOTE: there are embedded tabs (\t) characters in many of the patterns below
XZ#	be *very* careful when editing or cutting&pasting that the tabs do not
XZ#	get converted to spaces!
XZ#
XZ# Do the easy ones - these do not save the previous spl.
XZ
XZs/jsr[	 ]*pc,__spl\([0-7]\)/spl \1/g
XZt
XZs/jsr[	 ]*pc,__splsoftclock/spl 1/g
XZt
XZs/jsr[	 ]*pc,__splnet/spl 2/g
XZt
XZs/jsr[	 ]*pc,__splbio/spl 5/g
XZt
XZs/jsr[	 ]*pc,__splimp/spl 5/g
XZt
XZs/jsr[	 ]*pc,__spltty/spl 5/g
XZt
XZs/jsr[	 ]*pc,__splclock/spl 6/g
XZt
XZs/jsr[	 ]*pc,__splhigh/spl 7/g
XZt
XZ
XZ# Now the harder ones.  It is *very* tempting to read ahead a line and optimize
XZ# the "movb PS,r0; spl $N; movb r0,foo" into "movb PS,foo; spl $N".  Alas, 
XZ# this would break code which relied on "splN()" being a function which 
XZ# returned a value in r0.
XZ
XZs/jsr[	 ]*pc,_spl\([0-7]\)/movb 177776,r0; spl \1/g
XZt
XZs/jsr[	 ]*pc,_splsoftclock/movb 177776,r0; spl 1/g
XZt
XZs/jsr[	 ]*pc,_splnet/movb 177776,r0; spl 2/g
XZt
XZs/jsr[	 ]*pc,_splbio/movb 177776,r0; spl 5/g
XZt
XZs/jsr[	 ]*pc,_splimp/movb 177776,r0; spl 5/g
XZt
XZs/jsr[	 ]*pc,_spltty/movb 177776,r0; spl 5/g
XZt
XZs/jsr[	 ]*pc,_splclock/movb 177776,r0; spl 6/g
XZt
XZs/jsr[	 ]*pc,_splhigh/movb 177776,r0; spl 7/g
XZt
XSHAR_EOF
Xchmod 644 'splfix.spl.sed'
Xfi
Xchmod 755 .
Xcd ..
Xif test ! -d '/usr/src/sys/conf/spl_3com'
Xthen
X	mkdir '/usr/src/sys/conf/spl_3com'
Xfi
Xcd '/usr/src/sys/conf/spl_3com'
Xif test -f 'splfix.mfps.sed'
Xthen
X	echo shar: "will not over-write existing file 'splfix.mfps.sed'"
Xelse
Xsed 's/^Z//' << \SHAR_EOF > 'splfix.mfps.sed'
XZ# splfix.mfps.sed - replace "jsr[ \t]pc,_splN" calls with mfps and spl 
XZ#	instructions.  The sed 't' command is used liberally to short circuit
XZ#	the script - if a match is made there's no sense continuing on because
XZ#	there can never be more than a single 'spl' call per line.
XZ#
XZ# NOTE: there are embedded tabs (\t) characters in many of the patterns below
XZ#	be *very* careful when editing or cutting&pasting that the tabs do not
XZ#	get converted to spaces!
XZ#
XZ# Do the easy ones - these do not save the previous spl.  
XZ
XZs/jsr[	 ]*pc,__spl\([0-7]\)/spl \1/g
XZt
XZs/jsr[	 ]*pc,__splsoftclock/spl 1/g
XZt
XZs/jsr[	 ]*pc,__splnet/spl 2/g
XZt
XZs/jsr[	 ]*pc,__splbio/spl 5/g
XZt
XZs/jsr[	 ]*pc,__splimp/spl 6/g
XZt
XZs/jsr[	 ]*pc,__spltty/spl 5/g
XZt
XZs/jsr[	 ]*pc,__splclock/spl 6/g
XZt
XZs/jsr[	 ]*pc,__splhigh/spl 7/g
XZt
XZ
XZ# Now the harder ones.  It is *very* tempting to read ahead a line and optimize
XZ# the "mfps r0; spl N; movb r0,foo" into "mfps foo; splN".  Alas, this would
XZ# break code which relied on "splN()" being a function which returned a value
XZ# in r0.
XZ
XZs/jsr[	 ]*pc,_spl\([0-7]\)/mfps r0; spl \1/g
XZt
XZs/jsr[	 ]*pc,_splsoftclock/mfps r0; spl 1/g
XZt
XZs/jsr[	 ]*pc,_splnet/mfps r0; spl 2/g
XZt
XZs/jsr[	 ]*pc,_splbio/mfps r0; spl 5/g
XZt
XZs/jsr[	 ]*pc,_splimp/mfps r0; spl 6/g
XZt
XZs/jsr[	 ]*pc,_spltty/mfps r0; spl 5/g
XZt
XZs/jsr[	 ]*pc,_splclock/mfps r0; spl 6/g
XZt
XZs/jsr[	 ]*pc,_splhigh/mfps r0; spl 7/g
XZt
XZ
XZ#
XZ# A couple special cases.  If the PS is being loaded from a variable then use
XZ# the 'mtps' instruction.
XZ#
XZ
XZs/movb[	 ]*\(.*[^,]\),\*\$-2/mtps \1/g
XZt
XZs/movb[	 ]*\(.*[^,]\),\*\$177776/mtps \1/g
XZt
XSHAR_EOF
Xchmod 644 'splfix.mfps.sed'
Xfi
Xif test -f 'splfix.movb+mfps.sed'
Xthen
X	echo shar: "will not over-write existing file 'splfix.movb+mfps.sed'"
Xelse
Xsed 's/^Z//' << \SHAR_EOF > 'splfix.movb+mfps.sed'
XZ# splfix.movb+mfps.sed - replace "jsr[ \t]pc,_spl*" calls with 'movb' and 'mfps'
XZ#	instructions.  The sed 't' command is used liberally to short circuit
XZ#	the script - if a match is made there's no sense continuing on because
XZ#	there can never be more than a single 'spl' call per line.
XZ#
XZ# NOTE: there are embedded tabs (\t) characters in many of the patterns below
XZ#	be *very* careful when editing or cutting&pasting that the tabs do not
XZ#	get converted to spaces!
XZ#
XZ# Do the easy ones - these do not save the previous spl.
XZ
XZs/jsr[	 ]*pc,__spl0/clrb 177776/
XZt
XZs/jsr[	 ]*pc,__spl\([1-7]\)/movb $40*\1,177776/
XZt
XZs/jsr[	 ]*pc,__splsoftclock/movb $40,177776/
XZt
XZs/jsr[	 ]*pc,__splnet/movb $100,177776/
XZt
XZs/jsr[	 ]*pc,__splimp/movb $300,177776/
XZt
XZs/jsr[	 ]*pc,__splbio/movb $240,177776/
XZt
XZs/jsr[	 ]*pc,__spltty/movb $240,177776/
XZt
XZs/jsr[	 ]*pc,__splclock/movb $300,177776/
XZt
XZs/jsr[	 ]*pc,__splhigh/movb $340,177776/
XZt
XZ
XZ# Now the harder ones.  It is *very* tempting to read ahead a line and optimize
XZ# the "mfps r0; movb $N,PS; movb r0,foo" into "mfps foo; movb $N,PS".  Alas, 
XZ# this would break code which relied on "splN()" being a function which 
XZ# returned a value in r0.
XZ
XZs/jsr[	 ]*pc,_spl0/mfps r0; clrb 177776/g
XZt
XZs/jsr[	 ]*pc,_spl\([1-7]\)/mfps r0; movb $40*\1,177776/g
XZt
XZs/jsr[	 ]*pc,_splsoftclock/mfps r0; movb $40,177776/g
XZt
XZs/jsr[	 ]*pc,_splnet/mfps r0; movb $100,177776/g
XZt
XZs/jsr[	 ]*pc,_splbio/mfps r0; movb $240,177776/g
XZt
XZs/jsr[	 ]*pc,_splimp/mfps r0; movb $300,177776/g
XZt
XZs/jsr[	 ]*pc,_spltty/mfps r0; movb $240,177776/g
XZt
XZs/jsr[	 ]*pc,_splclock/mfps r0; movb $300,177776/g
XZt
XZs/jsr[	 ]*pc,_splhigh/mfps r0; movb $340,177776/g
XZt
XSHAR_EOF
Xchmod 644 'splfix.movb+mfps.sed'
Xfi
Xif test -f 'splfix.movb.sed'
Xthen
X	echo shar: "will not over-write existing file 'splfix.movb.sed'"
Xelse
Xsed 's/^Z//' << \SHAR_EOF > 'splfix.movb.sed'
XZ# splfix.movb.sed - replace "jsr[ \t]pc,_spl*" calls with 'movb'
XZ#       instructions.  The sed 't' command is used liberally to short circuit
XZ#       the script - if a match is made there's no sense continuing on because
XZ#       there can never be more than a single 'spl' call per line.
XZ#
XZ# NOTE: there are embedded tabs (\t) characters in many of the patterns below
XZ#	be *very* careful when editing or cutting&pasting that the tabs do not
XZ#	get converted to spaces!
XZ#
XZ# Do the easy ones - these do not save the previous spl.
XZ
XZs/jsr[	 ]*pc,__spl0/clrb 177776/g
XZt
XZs/jsr[	 ]*pc,__spl\([1-7]\)/movb $40*\1,177776/g
XZt
XZs/jsr[	 ]*pc,__splsoftclock/movb $40,177776/g
XZt
XZs/jsr[	 ]*pc,__splnet/movb $100,177776/g
XZt
XZs/jsr[	 ]*pc,__splimp/movb $300,177776/g
XZt
XZs/jsr[	 ]*pc,__splbio/movb $240,177776/g
XZt
XZs/jsr[	 ]*pc,__spltty/movb $240,177776/g
XZt
XZs/jsr[	 ]*pc,__splclock/movb $300,177776/g
XZt
XZs/jsr[	 ]*pc,__splhigh/movb $340,177776/g
XZt
XZ
XZ# Now the harder ones.  It is *very* tempting to read ahead a line and optimize
XZ# the "movb PS,r0; movb $N,PS; movb r0,foo" into "movb PS,foo; movb $N,PS".  
XZ# Alas, this would break code which relied on "splN()" being a function which 
XZ# returned a value in r0.
XZ
XZs/jsr[	 ]*pc,_spl0/movb 177776,r0; clrb 177776/g
XZt
XZs/jsr[	 ]*pc,_spl\([1-7]\)/movb 177776,r0; movb $40*\1,177776/g
XZt
XZs/jsr[	 ]*pc,_splsoftclock/movb 177776,r0; movb $40,177776/g
XZt
XZs/jsr[	 ]*pc,_splnet/movb 177776,r0; movb $100,177776/g
XZt
XZs/jsr[	 ]*pc,_splbio/movb 177776,r0; movb $240,177776/g
XZt
XZs/jsr[	 ]*pc,_splimp/movb 177776,r0; movb $300,177776/g
XZt
XZs/jsr[	 ]*pc,_spltty/movb 177776,r0; movb $240,177776/g
XZt
XZs/jsr[	 ]*pc,_splclock/movb 177776,r0; movb $300,177776/g
XZt
XZs/jsr[	 ]*pc,_splhigh/movb 177776,r0; movb $340,177776/g
XZt
XSHAR_EOF
Xchmod 644 'splfix.movb.sed'
Xfi
Xif test -f 'splfix.profil.sed'
Xthen
X	echo shar: "will not over-write existing file 'splfix.profil.sed'"
Xelse
Xsed 's/^Z//' << \SHAR_EOF > 'splfix.profil.sed'
XZ# splfix.profil.sed - replace "jsr[ \t]pc,_splN" calls with 'movb' and 'spl'
XZ#       instructions.  The sed 't' command is used liberally to short circuit
XZ#       the script - if a match is made there's no sense continuing on because
XZ#       there can never be more than a single 'spl' call per line.
XZ#
XZ# Do the easy ones - these do not save the previous spl.
XZ
XZs/jsr[	 ]*pc,__spl\([0-6]\)/spl \1/g
XZt
XZs/jsr[	 ]*pc,__spl7/spl 6/g
XZt
XZs/jsr[	 ]*pc,__splsoftclock/spl 1/g
XZt
XZs/jsr[	 ]*pc,__splnet/spl 2/g
XZt
XZs/jsr[	 ]*pc,__splbio/spl 5/g
XZt
XZs/jsr[	 ]*pc,__splimp/spl 6/g
XZt
XZs/jsr[	 ]*pc,__spltty/spl 5/g
XZt
XZs/jsr[	 ]*pc,__splclock/spl 6/g
XZt
XZs/jsr[	 ]*pc,__splhigh/spl 6/g
XZt
XZ
XZ# Now the harder ones.  It is *very* tempting to read ahead a line and optimize
XZ# the "movb PS,r0; spl $N; movb r0,foo" into "mfps foo; spl $N".  Alas, 
XZ# this would break code which relied on "splN()" being a function which 
XZ# returned a value in r0.
XZ
XZs/jsr[	 ]*pc,_spl\([0-6]\)/movb 177776,r0; spl \1/g
XZt
XZs/jsr[	 ]*pc,_spl7/movb 177776,r0; spl 6/g
XZt
XZs/jsr[	 ]*pc,_splsoftclock/movb 177776,r0; spl 1/g
XZt
XZs/jsr[	 ]*pc,_splnet/movb 177776,r0; spl 2/g
XZt
XZs/jsr[	 ]*pc,_splbio/movb 177776,r0; spl 5/g
XZt
XZs/jsr[	 ]*pc,_splimp/movb 177776,r0; spl 6/g
XZt
XZs/jsr[	 ]*pc,_spltty/movb 177776,r0; spl 5/g
XZt
XZs/jsr[	 ]*pc,_splclock/movb 177776,r0; spl 6/g
XZt
XZs/jsr[	 ]*pc,_splhigh/movb 177776,r0; spl 6/g
XZt
XSHAR_EOF
Xchmod 644 'splfix.profil.sed'
Xfi
Xif test -f 'splfix.spl.sed'
Xthen
X	echo shar: "will not over-write existing file 'splfix.spl.sed'"
Xelse
Xsed 's/^Z//' << \SHAR_EOF > 'splfix.spl.sed'
XZ# splfix.spl.sed - replace "jsr[ \t]pc,_spl*" calls with 'movb' and 'spl'
XZ#       instructions.  The sed 't' command is used liberally to short circuit
XZ#       the script - if a match is made there's no sense continuing on because
XZ#       there can never be more than a single 'spl' call per line.
XZ#
XZ# NOTE: there are embedded tabs (\t) characters in many of the patterns below
XZ#	be *very* careful when editing or cutting&pasting that the tabs do not
XZ#	get converted to spaces!
XZ#
XZ# Do the easy ones - these do not save the previous spl.
XZ
XZs/jsr[	 ]*pc,__spl\([0-7]\)/spl \1/g
XZt
XZs/jsr[	 ]*pc,__splsoftclock/spl 1/g
XZt
XZs/jsr[	 ]*pc,__splnet/spl 2/g
XZt
XZs/jsr[	 ]*pc,__splbio/spl 5/g
XZt
XZs/jsr[	 ]*pc,__splimp/spl 6/g
XZt
XZs/jsr[	 ]*pc,__spltty/spl 5/g
XZt
XZs/jsr[	 ]*pc,__splclock/spl 6/g
XZt
XZs/jsr[	 ]*pc,__splhigh/spl 7/g
XZt
XZ
XZ# Now the harder ones.  It is *very* tempting to read ahead a line and optimize
XZ# the "movb PS,r0; spl $N; movb r0,foo" into "movb PS,foo; spl $N".  Alas, 
XZ# this would break code which relied on "splN()" being a function which 
XZ# returned a value in r0.
XZ
XZs/jsr[	 ]*pc,_spl\([0-7]\)/movb 177776,r0; spl \1/g
XZt
XZs/jsr[	 ]*pc,_splsoftclock/movb 177776,r0; spl 1/g
XZt
XZs/jsr[	 ]*pc,_splnet/movb 177776,r0; spl 2/g
XZt
XZs/jsr[	 ]*pc,_splbio/movb 177776,r0; spl 5/g
XZt
XZs/jsr[	 ]*pc,_splimp/movb 177776,r0; spl 6/g
XZt
XZs/jsr[	 ]*pc,_spltty/movb 177776,r0; spl 5/g
XZt
XZs/jsr[	 ]*pc,_splclock/movb 177776,r0; spl 6/g
XZt
XZs/jsr[	 ]*pc,_splhigh/movb 177776,r0; spl 7/g
XZt
XSHAR_EOF
Xchmod 644 'splfix.spl.sed'
Xfi
Xchmod 755 .
Xcd ..
Xexit 0
X#	End of shell archive
SHAR_EOF
fi
exit 0
#	End of shell archive