From owner-freebsd-threads@FreeBSD.ORG Wed May 4 23:09:32 2005 Return-Path: Delivered-To: freebsd-threads@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id E569F16A4CF; Wed, 4 May 2005 23:09:31 +0000 (GMT) Received: from mail.ntplx.net (mail.ntplx.net [204.213.176.10]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8813E43D4C; Wed, 4 May 2005 23:09:31 +0000 (GMT) (envelope-from deischen@freebsd.org) Received: from sea.ntplx.net (sea.ntplx.net [204.213.176.11]) j44N7mjg025612; Wed, 4 May 2005 19:07:48 -0400 (EDT) Date: Wed, 4 May 2005 19:07:48 -0400 (EDT) From: Daniel Eischen X-X-Sender: eischen@sea.ntplx.net To: Marc Olzheim In-Reply-To: <20050504230157.GA1886@stack.nl> Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/Mixed; BOUNDARY=NMuMz9nt05w80d4+ Content-ID: Content-Disposition: INLINE X-Virus-Scanned: by AMaViS and Clam AntiVirus (mail.ntplx.net) cc: David Schultz cc: freebsd-threads@freebsd.org Subject: Re: Floating point exceptions with -pthread X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: Daniel Eischen List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 May 2005 23:09:32 -0000 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --NMuMz9nt05w80d4+ Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Content-ID: Content-Disposition: INLINE On Thu, 5 May 2005, Marc Olzheim wrote: > On Thu, May 05, 2005 at 12:32:13AM +0200, Marc Olzheim wrote: > > That fixed it for me indeed. :-P > > I've applied the attached patch on my systems. > > Question remains why the truncf() doesn't trigger it and the ceilf() and > floorf() does. > And why it only triggers with threads (even a single thread is enough). For the latter, the threads library may place a stackframe on top of the swapped-out thread's stack. Without threads, or even with libthr, the thread's stack doesn't get used by anything else. -- DE --NMuMz9nt05w80d4+ Content-Type: TEXT/PLAIN; CHARSET=us-ascii Content-Transfer-Encoding: QUOTED-PRINTABLE Content-ID: Content-Description: Content-Disposition: ATTACHMENT; FILENAME="fpu.patch" Index: lib/msun/i387/s_ceilf.S --- lib/msun/i387/s_ceilf.S.orig Thu Jan 13 19:58:25 2005 +++ lib/msun/i387/s_ceilf.S Thu May 5 00:54:18 2005 @@ -13,17 +13,17 @@ movl %esp,%ebp subl $8,%esp =20 - fstcw -12(%ebp) /* store fpu control word */ - movw -12(%ebp),%dx + fstcw -4(%ebp) /* store fpu control word */ + movw -4(%ebp),%dx orw $0x0800,%dx /* round towards +oo */ andw $0xfbff,%dx - movw %dx,-16(%ebp) - fldcw -16(%ebp) /* load modfied control word */ + movw %dx,-8(%ebp) + fldcw -8(%ebp) /* load modfied control word */ =20 flds 8(%ebp); /* round */ frndint =20 - fldcw -12(%ebp) /* restore original control word */ + fldcw -4(%ebp) /* restore original control word */ =20 leave ret Index: lib/msun/i387/s_floorf.S --- lib/msun/i387/s_floorf.S.orig Thu Jan 13 19:58:25 2005 +++ lib/msun/i387/s_floorf.S Thu May 5 00:54:29 2005 @@ -13,17 +13,17 @@ movl %esp,%ebp subl $8,%esp =20 - fstcw -12(%ebp) /* store fpu control word */ - movw -12(%ebp),%dx + fstcw -4(%ebp) /* store fpu control word */ + movw -4(%ebp),%dx orw $0x0400,%dx /* round towards -oo */ andw $0xf7ff,%dx - movw %dx,-16(%ebp) - fldcw -16(%ebp) /* load modfied control word */ + movw %dx,-8(%ebp) + fldcw -8(%ebp) /* load modfied control word */ =20 flds 8(%ebp); /* round */ frndint =20 - fldcw -12(%ebp) /* restore original control word */ + fldcw -4(%ebp) /* restore original control word */ =20 leave ret Index: lib/msun/i387/s_truncf.S --- lib/msun/i387/s_truncf.S.orig Sat Apr 16 23:12:55 2005 +++ lib/msun/i387/s_truncf.S Thu May 5 00:54:35 2005 @@ -11,16 +11,16 @@ movl %esp,%ebp subl $8,%esp =20 - fstcw -12(%ebp) /* store fpu control word */ - movw -12(%ebp),%dx + fstcw -4(%ebp) /* store fpu control word */ + movw -4(%ebp),%dx orw $0x0c00,%dx /* round towards -oo */ - movw %dx,-16(%ebp) - fldcw -16(%ebp) /* load modfied control word */ + movw %dx,-8(%ebp) + fldcw -8(%ebp) /* load modfied control word */ =20 flds 8(%ebp) /* round */ frndint =20 - fldcw -12(%ebp) /* restore original control word */ + fldcw -4(%ebp) /* restore original control word */ =20 leave ret --NMuMz9nt05w80d4+--