This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi! On Tue, 29 May 2012 15:02:09 +0200, I wrote: > On Tue, 29 May 2012 14:47:14 +0200, I wrote: > > On Thu, 24 May 2012 08:43:04 +0900, Nobuhiro Iwamatsu <iwamatsu@nigauri.org> wrote: > > > 2012/5/23 Kaz Kojima <kkojima@rr.iij4u.or.jp>: > > > > Thomas Schwinge <thomas@codesourcery.com> wrote: > > > >>> + Â/* When read fpscr, this was initialized. > > > >>> + Â Â We need to rewrite value of temp. */ > > > >>> + Â_FPU_SETCW (temp); > > > >>> > > > >>> Â Âreturn temp & excepts & FE_ALL_EXCEPT; > > > >>> Â} > > > >> > > > >> Why is this needed? ÂIt seems that I can't find it neither in the SH-4A > > > >> Software Manual nor in the SH7785 Hardware Manual. > > > > > > > > I thought that there was an errata for the issue, though I can't > > > > find the corresponding documentation ATM. ÂIwamatsu-san? > > > > > When fetestexcept was called, the problem from which the information > > > on fpscr is deleted occurred. > > > To be sure, it is not writing to the manual. > > > I checked this problem using the Linux kernel. > > > I think that it may be a problem by the side of a Linux kernel... > > > > I see. Will you be working on resolving that? Because, currently the > > state is inconsistent: sometimes fpscr is reloaded, sometimes not > > (ftestexcept, as well as (potentially) all generic uses of _FPU_GETCW > > outside of our control). > > Sorry, ftestexcept is covered, fegetround is where it is missing. > > > If there indeed is an erratum regarding this, how about we directly add > > an _FPU_SETCW call to the _FPU_GETCW macro? This will be redundant for > > most cases (when a different value is stored afterwards), but will at > > least cover all usage of _FPU_GETCW. But I'd rather prefer to first > > clarify why/where this is really needed. (Based on glibc's test suite, > > it is not needed for our SH7785 board; makes no difference when reverting > > your patch.) I reverted the three occurrences of re-writing fpscr after reading it, to give us the chance to resolve this properly -- and if in glibc then consistently. * sysdeps/sh/sh4/fpu/fegetenv.c (fegetenv): Do not re-write fpscr after reading it. * sysdeps/sh/sh4/fpu/fegetexcept.c (fegetexcept): Likewise. * sysdeps/sh/sh4/fpu/ftestexcept.c (fetestexcept): Likewise. diff --git a/sysdeps/sh/sh4/fpu/fegetenv.c b/sysdeps/sh/sh4/fpu/fegetenv.c index ca7de16..cb3ca27 100644 --- a/sysdeps/sh/sh4/fpu/fegetenv.c +++ b/sysdeps/sh/sh4/fpu/fegetenv.c @@ -24,9 +24,6 @@ fegetenv (fenv_t *envp) { fpu_control_t temp; _FPU_GETCW (temp); - /* When read fpscr, this was initialized. - We need to rewrite value of temp. */ - _FPU_SETCW (temp); envp->__fpscr = temp; diff --git a/sysdeps/sh/sh4/fpu/fegetexcept.c b/sysdeps/sh/sh4/fpu/fegetexcept.c index a2faaac..038fe97 100644 --- a/sysdeps/sh/sh4/fpu/fegetexcept.c +++ b/sysdeps/sh/sh4/fpu/fegetexcept.c @@ -27,9 +27,6 @@ fegetexcept (void) /* Get current exceptions. */ _FPU_GETCW (temp); - /* When read fpscr, this was initialized. - We need to rewrite value of temp. */ - _FPU_SETCW (temp); return (temp >> 5) & FE_ALL_EXCEPT; } diff --git a/sysdeps/sh/sh4/fpu/ftestexcept.c b/sysdeps/sh/sh4/fpu/ftestexcept.c index c61af4c..8f09611 100644 --- a/sysdeps/sh/sh4/fpu/ftestexcept.c +++ b/sysdeps/sh/sh4/fpu/ftestexcept.c @@ -26,9 +26,6 @@ fetestexcept (int excepts) /* Get current exceptions. */ _FPU_GETCW (temp); - /* When read fpscr, this was initialized. - We need to rewrite value of temp. */ - _FPU_SETCW (temp); return temp & excepts & FE_ALL_EXCEPT; } GrÃÃe, Thomas
Attachment:
pgp00000.pgp
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |