Date: Fri, 17 May 2002 09:01:11 +0200 (CEST) From: Andreas Haakh <ah@alvman.Haakh.de> To: FreeBSD-gnats-submit@FreeBSD.org Subject: kern/38170: fpgetmask, fpsetmask yield strange results Message-ID: <200205170701.g4H71BVv000804@alvman.Haakh.de>
next in thread | raw e-mail | index | archive | help
>Number: 38170 >Category: kern >Synopsis: fpgetmask, fpsetmask yield strange results >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Fri May 17 00:10:01 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Andreas Haakh >Release: FreeBSD 4.6-RC i386 >Organization: Ingenieurbüro für Baustatik >Environment: System: FreeBSD alvman.Haakh.de 4.6-RC FreeBSD 4.6-RC #0: Fri May 17 07:18:23 CEST 2002 root@alvman.Haakh.de:/usr/obj/usr/src/sys/ALVMAN i386 i686-class CPU >Description: I tried to modify the default fp_exception-mask. The results from fpgetmask and fpsetmask (and probably some other fp[sg]et-routines) are buggy. >How-To-Repeat: The following codeexample shows this strange behaviour: #include <stdio.h> #include <ieeefp.h> int main (void) { fp_except_t except, res; res=fpgetmask(); printf ("fp_except from fpgetmask: \t0x%02x!\n", res); except = FP_X_INV|FP_X_DZ|FP_X_OFL|FP_X_STK; printf ("attempt to set fp_except to: \t0x%02x!\n", except); res=fpsetmask(except); printf ("fp_except from fpsetmask: \t0x%02x!\n", res); res=fpgetmask(); printf ("fp_except from fpgetmask: \t0x%02x!\n", res); res=fpsetmask(except); printf ("retry to set fp_except to:\t0x%02x!\n", except); res=fpsetmask(except); printf ("fp_except from fpsetmask: \t0x%02x!\n", res); res=fpgetmask(); printf ("fp_except from fpgetmask: \t0x%02x!\n", res); exit (except); } The results from this prog are: fp_except from fpgetmask: 0x00! attempt to set fp_except to: 0x4d! fp_except from fpsetmask: 0x3f! fp_except from fpgetmask: 0x0d! retry to set fp_except to: 0x4d! fp_except from fpsetmask: 0x32! fp_except from fpgetmask: 0x0d! >Fix: correct the inline functions and/or macros in <machine/floatingpoint.h> I have not enough knowledge to do it myself... >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200205170701.g4H71BVv000804>