Subject: bin/2408: cc -m68060 creates 32->64bit multiplications.
To: None <gnats-bugs@NetBSD.ORG>
From: Ignatios Souvatzis <>
List: netbsd-bugs
Date: 05/13/1996 03:15:01
>Number:         2408
>Category:       bin
>Synopsis:       cc -m68060 creates 32->64 bit multiplications.
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    bin-bug-people (Utility Bug People)
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue May 14 07:35:06 1996
>Originator:     Ignatios Souvatzis
>Release:        1.1
System: NetBSD 1.1B NetBSD 1.1B (DRACO) #56: Mon May 13 02:35:50 MET DST 1996 amiga

	Last weeks compiler.

	The latest compiler/assembler changes (for the assembler to
	accept -m68060 and  not to bail out on  some FP instructions) isn't
	yet in, in  case this matters.

	If I make a 68060 kernel with the next-to-latest cc -m68060,
	a 32->64 bit multiplication is created in grf_rh.o, making the
	kernel crash in the graphics board setup (that is, before the 
	kernel debugger is available.)

	Assembler diff excerpt (< is from a work-in-progress version of
	the compiler, > from last weeks)

	< 	movel d4,d3
	< 	divul #13982,d3
	> 	movel a3,d1
	> 	mulul d6,d0:d1
	> 	movel d0,d3
	> 	moveq #13,d7
	> 	lsrl d7,d3

	config DRACO; cd ../compile/DRACO; make; su; cp netbsd /; reboot

	Fix: not known yet.

	Workaround: install the 060sp unimplemented integer handler
	at compilation time. Unfortunately, this makes kernels without
	the 060 software support package impossible.