No subject

utzoo!decvax!ucbvax!unix-wizards utzoo!decvax!ucbvax!unix-wizards
Sun Dec 27 01:00:49 AEST 1981


>From decvax!duke!reed!ross at Berkeley Sun Dec 27 00:47:23 1981
	Can someone help me?  I'm trying to trap floating underflow
on the VAX in C.  The way I read the "Architecture Handbook", there
are two kinds of underflow events -- traps and faults (pp. 301-2).
The 11/780 has the trap but not the fault.  The 11/750 is the other
way around ("Hardware Handbook", pp. 43-4).  I have an 11/780.  The
trap only happens when the trap enable bit is turned on; the fault
is always enabled.  This much seems reasonable.
	Herein lies the rub:  the "calls" instruction (emitted by C)
turns off the trap enable bit for the called routine.  DEC calls this
bug a "feature," noting that the "calls" instruction thus leaves the
processor in a "known state" at the beginning of the ensuing subrou-
tine.  I can write some as(1) code to patch the enable bit in the
saved psl and return, but I'd rather not put calls to this routine
all over in my program.  Berkeley Pascal on my 4.?BSD diagnoses under-
flows as overflows -- but at least it traps them!  I'd be pretty happy
just knowing how it does it.  I'd be overjoyed to know how to diagnose
them correctly.  I don't need to recover the arguments and retry in
software or anything like that.
	The best idea I've had yet is to compile my code for profiling
and write my own mcount and mcrt0.  This gives me a place (mcount) to
do the grunge-work.  But I'd rather find out that I'm wrong about the
VAX and that it's really a nice machine after all.
					-Graham Ross
					(duke!reed!ross)



More information about the Comp.unix.wizards mailing list