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
  ============
