Subject: kernel floating point simulation crash, postscript printer Makefile update Index: sys/pdp/mch_fpsim.s,local/mp/Makefile 2.11BSD Description: The in kernel floating point emulator, used when no hardware FP unit is present, would panic the system on the first FP instruction executed by a user program. Repeat-By: Try to run a program using FP on a system w/o hardware FP Fix: Apply the patch below and rebuild the kernel. Also included in the patch is an update to the 'mp' Makefile. This had been completed several years ago but never posted. ------------------------cut here----------------------- *** /usr/src/sys/pdp/mch_fpsim.s.dist Sat Dec 26 23:38:19 1992 --- /usr/src/sys/pdp/mch_fpsim.s Tue Dec 26 14:56:08 2006 *************** *** 17,23 **** * RIGHTS, APPROPRIATE COPYRIGHT LEGENDS MAY BE PLACED ON THE * DERIVATIVE WORK IN ADDITION TO THAT SET FORTH ABOVE. * ! * @(#)mch_fpsim.s 1.2 (2.11BSD GTE) 12/26/92 */ #include "DEFS.h" --- 17,23 ---- * RIGHTS, APPROPRIATE COPYRIGHT LEGENDS MAY BE PLACED ON THE * DERIVATIVE WORK IN ADDITION TO THAT SET FORTH ABOVE. * ! * @(#)mch_fpsim.s 1.3 (2.11BSD) 2006/12/26 */ #include "DEFS.h" *************** *** 226,233 **** 1: movb (r3)+,r2 asl r2 ! add uar0,r0 ! mov (r1)+,(r0) sob r4,1b bit $020,sps(r5) / Check to see if T bit was set. --- 226,233 ---- 1: movb (r3)+,r2 asl r2 ! add uar0,r2 ! mov (r1)+,(r2) sob r4,1b bit $020,sps(r5) / Check to see if T bit was set. *** /usr/src/local/mp/Makefile.dist Sun Feb 16 21:19:00 1992 --- /usr/src/local/mp/Makefile Mon Sep 22 20:36:53 1997 *************** *** 57,66 **** # You might wish to alter these values. # MPPATH = /usr/local ! MPBINDIR = $(MPPATH)/bin ! MPLIBDIR = $(MPPATH)/lib ! MPMANDIR = $(MPPATH)/man/man$(MPMANSECT) ! MPMANSECT = l #--------------------------------------------------------------------- # Alternate names for the mailp frontend # --- 57,66 ---- # You might wish to alter these values. # MPPATH = /usr/local ! MPBINDIR = $(MPPATH) ! MPLIBDIR = $(MPPATH)/lib/mp ! MPMANDIR = $(MPPATH)/man/cat$(MPMANSECT) ! MPMANSECT = 1 #--------------------------------------------------------------------- # Alternate names for the mailp frontend # *************** *** 71,83 **** CDEFS = $(GECOSFIELDS) $(GECOSLENGTH) $(NOSTRCHR) $(PROLOGUE) $(SYSV) CCOMP = -O CFLAGS = $(CCOMP) $(CDEFS) ! LDFLAGS = ! CC = cc #================================================================= - .KEEPSTATE: - BINARIES = mp SRCS = header.c io.c main.c misc.c print.c --- 71,80 ---- CDEFS = $(GECOSFIELDS) $(GECOSLENGTH) $(NOSTRCHR) $(PROLOGUE) $(SYSV) CCOMP = -O CFLAGS = $(CCOMP) $(CDEFS) ! LDFLAGS = -z CC = cc #================================================================= BINARIES = mp SRCS = header.c io.c main.c misc.c print.c *************** *** 88,99 **** PROLOGS = mp.common.ps mp.pro.ps mp.pro.l.ps mp.pro.alt.ps mp.pro.altl.ps \ mp.pro.ff.ps mp.pro.fp.ps mp.pro.tm.ps mp.pro.ts.ps OTHERS = README Makefile.dist mailp MANIFEST FILES CHANGES TODO \ ! mp.el mp.pro.old mp.pro.l.old Data SFILES1 = README Makefile.dist MANIFEST FILES Data SFILES2 = $(SRCS) $(HDRS) SFILES3 = $(PROLOGS) ! SFILES4 = TODO mailp mp.el mp.pro.old mp.pro.l.old $(MPAGES) SFILES5 = CHANGES all: $(BINARIES) --- 85,96 ---- PROLOGS = mp.common.ps mp.pro.ps mp.pro.l.ps mp.pro.alt.ps mp.pro.altl.ps \ mp.pro.ff.ps mp.pro.fp.ps mp.pro.tm.ps mp.pro.ts.ps OTHERS = README Makefile.dist mailp MANIFEST FILES CHANGES TODO \ ! mp.el Data SFILES1 = README Makefile.dist MANIFEST FILES Data SFILES2 = $(SRCS) $(HDRS) SFILES3 = $(PROLOGS) ! SFILES4 = TODO mailp mp.el $(MPAGES) SFILES5 = CHANGES all: $(BINARIES) *************** *** 127,169 **** @echo common-install: $(BINARIES) # mp ! -cp mp $(MPBINDIR) ! -chmod 751 $(MPBINDIR)/mp ! -strip $(MPBINDIR)/mp # mp.1 ! -cp mp.1 $(MPMANDIR)/mp.$(MPMANSECT) ! -chmod 644 $(MPMANDIR)/mp.$(MPMANSECT) # mailp.1 ! -cp mailp.1 $(MPMANDIR)/mailp.$(MPMANSECT) ! -chmod 644 $(MPMANDIR)/mailp.$(MPMANSECT) # mp.common.ps ! -cp mp.common.ps $(MPLIBDIR) ! -chmod 644 $(MPLIBDIR)/mp.common.ps # mp.pro.ps ! -cp mp.pro.ps $(MPLIBDIR) ! -chmod 644 $(MPLIBDIR)/mp.pro.ps # mp.pro.l.ps ! -cp mp.pro.l.ps $(MPLIBDIR) ! -chmod 644 $(MPLIBDIR)/mp.pro.l.ps # mp.pro.alt.ps ! -cp mp.pro.alt.ps $(MPLIBDIR) ! -chmod 644 $(MPLIBDIR)/mp.pro.alt.ps # mp.pro.altl.ps ! -cp mp.pro.altl.ps $(MPLIBDIR) ! -chmod 644 $(MPLIBDIR)/mp.pro.altl.ps # mp.pro.ff.ps ! -cp mp.pro.ff.ps $(MPLIBDIR) ! -chmod 644 $(MPLIBDIR)/mp.pro.ff.ps # mp.pro.fp.ps ! -cp mp.pro.fp.ps $(MPLIBDIR) ! -chmod 644 $(MPLIBDIR)/mp.pro.fp.ps # mp.pro.tm.ps ! -cp mp.pro.tm.ps $(MPLIBDIR) ! -chmod 644 $(MPLIBDIR)/mp.pro.tm.ps # mp.pro.ts.ps ! -cp mp.pro.ts.ps $(MPLIBDIR) ! -chmod 644 $(MPLIBDIR)/mp.pro.ts.ps # mailp # -sed -e s,BINDIR,$(MPBINDIR),g mailp >$(MPBINDIR)/mailp --- 124,156 ---- @echo common-install: $(BINARIES) + -mkdir -p ${MPLIBDIR} # mp ! install -m 751 -o bin -g bin -s mp $(MPBINDIR) # mp.1 ! nroff -h -man mp.1 > mp.0 ! install -m 644 -o bin -g bin mp.0 $(MPMANDIR) # mailp.1 ! nroff -h -man mailp.1 > mailp.0 ! install -m 644 -o bin -g bin mailp.0 $(MPMANDIR) # mp.common.ps ! install -c -m 644 -o bin -g bin mp.common.ps $(MPLIBDIR) # mp.pro.ps ! install -c -m 644 -o bin -g bin mp.pro.ps $(MPLIBDIR) # mp.pro.l.ps ! install -c -m 644 -o bin -g bin mp.pro.l.ps $(MPLIBDIR) # mp.pro.alt.ps ! install -c -m 644 -o bin -g bin mp.pro.alt.ps $(MPLIBDIR) # mp.pro.altl.ps ! install -c -m 644 -o bin -g bin mp.pro.altl.ps $(MPLIBDIR) # mp.pro.ff.ps ! install -c -m 644 -o bin -g bin mp.pro.ff.ps $(MPLIBDIR) # mp.pro.fp.ps ! install -c -m 644 -o bin -g bin mp.pro.fp.ps $(MPLIBDIR) # mp.pro.tm.ps ! install -c -m 644 -o bin -g bin mp.pro.tm.ps $(MPLIBDIR) # mp.pro.ts.ps ! install -c -m 644 -o bin -g bin mp.pro.ts.ps $(MPLIBDIR) # mailp # -sed -e s,BINDIR,$(MPBINDIR),g mailp >$(MPBINDIR)/mailp *************** *** 176,187 **** -@for name in $(MAILPNAMES); do \ echo -n $$name " "; \ rm -f $(MPBINDIR)/$$name; \ ! ln -s $(MPBINDIR)/mailp $(MPBINDIR)/$$name; \ done @echo clean: ! rm -rf mp.part? Part? *.Z *.uu mp.1 mp *.o core create: SCCS -sccs create $(SRCS) $(OTHERS) --- 163,174 ---- -@for name in $(MAILPNAMES); do \ echo -n $$name " "; \ rm -f $(MPBINDIR)/$$name; \ ! ln $(MPBINDIR)/mailp $(MPBINDIR)/$$name; \ done @echo clean: ! rm -rf mp.part? Part? *.Z *.uu mp.1 mailp.1 mp *.o core create: SCCS -sccs create $(SRCS) $(OTHERS) *** /VERSION.dist Mon Feb 10 20:53:27 2003 --- /VERSION Tue Dec 26 14:53:42 2006 *************** *** 1,5 **** ! Current Patch Level: 444 ! Date: February 10, 2003 2.11 BSD ============ --- 1,5 ---- ! Current Patch Level: 445 ! Date: December 26, 2006 2.11 BSD ============