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