public inbox for libc-ports@sourceware.org
 help / color / mirror / Atom feed
* [COMMITTED] BZ#1500: hppa: Fix _FPU_GETCW and _FPU_SETCW.
@ 2013-05-15 15:39 Carlos O'Donell
  0 siblings, 0 replies; only message in thread
From: Carlos O'Donell @ 2013-05-15 15:39 UTC (permalink / raw)
  To: libc-ports, Guy Martin

hppa: Fix _FPU_GETCW and _FPU_SETCW.
    
The following patch fixes both _FPU_GETCW and
_FPU_SETCW for hppa. The initial implementation was
flawed and not well tested. We failed to set cw,
and passed in the value of a register to fldd.
This patch fixes both of those errors and allows
the libm tests to pass without failure.
    
Signed-off-by: Guy Martin <gmsoft@tuxicoman.be>
Signed-off-by: Carlos O'Donell <carlos@redhat.com>
---
    
2013-05-15  Guy Martin  <gmsoft@tuxicoman.be>
            Carlos O'Donell  <carlos@redhat.com>
    
        [BZ# 15000]
        * ports/sysdeps/hppa/fpu/fpu_control.h (_FPU_GETCW): Set cw.
        (_FPU_SETCW): Pass address to fldd.

diff --git a/ports/sysdeps/hppa/fpu/fpu_control.h b/ports/sysdeps/hppa/fpu/fpu_control.h
index 5cac334..627cdd5 100644
--- a/ports/sysdeps/hppa/fpu/fpu_control.h
+++ b/ports/sysdeps/hppa/fpu/fpu_control.h
@@ -49,7 +49,7 @@ typedef unsigned int fpu_control_t;
   __asm__ ("fstd %%fr0,0(%1)\n\t"                                              \
            "fldd 0(%1),%%fr0\n\t"                                              \
           : "=m" (__fullfp.__fpreg) : "r" (&__fullfp.__fpreg) : "%r0");        \
-  __fullfp.__halfreg[0];                                                       \
+  cw = __fullfp.__halfreg[0];                                                  \
 })
 
 #define _FPU_SETCW(cw) \
@@ -57,7 +57,7 @@ typedef unsigned int fpu_control_t;
   union { __extension__ unsigned long long __fpreg; unsigned int __halfreg[2]; } __fullfp;     \
   __fullfp.__halfreg[0] = cw;                                                  \
   __asm__ ("fldd 0(%1),%%fr0\n\t"                                              \
-          : : "m" (__fullfp.__fpreg), "r" (__fullfp.__fpreg) : "%r0" );        \
+          : : "m" (__fullfp.__fpreg), "r" (&__fullfp.__fpreg) : "%r0" );       \
 })
 
 /* Default control word set at startup.  */

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2013-05-15 15:39 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-05-15 15:39 [COMMITTED] BZ#1500: hppa: Fix _FPU_GETCW and _FPU_SETCW Carlos O'Donell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).