From owner-freebsd-current Wed Aug 26 05:27:18 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id FAA21341 for freebsd-current-outgoing; Wed, 26 Aug 1998 05:27:18 -0700 (PDT) (envelope-from owner-freebsd-current@FreeBSD.ORG) Received: from gilgamesch.bik-gmbh.de (gilgamesch.bik-gmbh.de [194.233.237.91]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id FAA21334 for ; Wed, 26 Aug 1998 05:27:13 -0700 (PDT) (envelope-from cracauer@gilgamesch.bik-gmbh.de) Received: (from cracauer@localhost) by gilgamesch.bik-gmbh.de (8.8.8/8.7.3) id OAA21047; Wed, 26 Aug 1998 14:25:42 +0200 (MET DST) Message-ID: <19980826142541.B20511@cons.org> Date: Wed, 26 Aug 1998 14:25:41 +0200 From: Martin Cracauer To: Stephen Hocking-Senior Programmer PGS Tensor Perth , Bruce Evans Cc: current@FreeBSD.ORG Subject: Re: Floating Point Exceptions, signal handlers & subsequent ops References: <199808252351.JAA32306@godzilla.zeta.org.au> <199808260127.JAA02700@ariadne.tensor.pgs.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=LpQ9ahxlCli8rRTG X-Mailer: Mutt 0.93.1i In-Reply-To: <199808260127.JAA02700@ariadne.tensor.pgs.com>; from Stephen Hocking-Senior Programmer PGS Tensor Perth on Wed, Aug 26, 1998 at 09:27:48AM +0800 Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG --LpQ9ahxlCli8rRTG Content-Type: text/plain; charset=us-ascii In <199808260127.JAA02700@ariadne.tensor.pgs.com>, Stephen Hocking-Senior Programmer PGS Tensor Perth wrote: > > [Much scary stuff regarding traps and the like...] > > OK, I've had a look at machine/trap.h, how do I go about getting info on > exactly was exception was caused? A brief perusal of the man pages for math > and fpsetmask offers no clues (unless I've missed something totally obvious). > All the program wishes to do is note the fact and excveption has occured, get > some runtime stats (which is where that next FP operation happens) and exit. As far as I know, you can't. The kernel does not pass the FP registers as they were in the mainline program flow to your signal handler. What we need here is a system call to ask the kernel for the FP register contents which it should have saved before entering the FP handler. If the user required so, by a system call, sysctl variable or kernel config option. I actually didn't beleive this :-) and wrote some code to get the registers via the "hidden" third parameter to a signal handler, but in fact the exception indication bits were cleared. Example code to copy the register contents to some save place: static int handler(int sig, int code, struct sigcontext *scp) { #define TMP "FPE handler\n" write(2,TMP,sizeof(TMP)-1); #undef TMP sig_fpe_was_here++; sig_sig = sig; sig_code = code; memcpy(&sig_context, scp, sizeof(*scp)); return sig; } It's very possible that this code is nonsense. I appended some programs tangling with FP on FreeBSD. This fragment is from "freebsd-signal.c". Martin -- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Martin Cracauer http://www.cons.org/cracauer BSD User Group Hamburg, Germany http://www.bsdhh.org/ --LpQ9ahxlCli8rRTG Content-Type: application/x-tar-gz Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="float.tar.gz" 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 f+FdWVfMDFt+e8f19Dw9T88XP/8PBUqK7ABQAAA= --LpQ9ahxlCli8rRTG-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message