]> sourceware.org Git - glibc.git/commitdiff
hppa: Fix _FPU_GETCW and _FPU_SETCW.
authorCarlos O'Donell <carlos@systemhalted.org>
Wed, 15 May 2013 15:47:47 +0000 (11:47 -0400)
committerCarlos O'Donell <carlos@systemhalted.org>
Wed, 15 May 2013 16:05:10 +0000 (12:05 -0400)
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.

NEWS
ports/ChangeLog.hppa
ports/sysdeps/hppa/fpu/fpu_control.h

diff --git a/NEWS b/NEWS
index 72c6a1c7172b5ae8fb8eb685ebec8ca188ded730..f7bff079633ef6cfdad03b6012ba5e602edbf1ef 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -12,12 +12,12 @@ Version 2.18
   2546, 2560, 5159, 6809, 10060, 10062, 10357, 11120, 11561, 12387, 12723,
   13550, 13889, 13951, 13988, 14142, 14176, 14200, 14280, 14293, 14317,
   14327, 14478, 14496, 14582, 14686, 14812, 14888, 14908, 14920, 14952,
-  14964, 14981, 14982, 14985, 14994, 14996, 15003, 15006, 15007, 15020,
-  15023, 15036, 15054, 15055, 15062, 15078, 15084, 15085, 15086, 15160,
-  15214, 15221, 15232, 15234, 15283, 15285, 15287, 15304, 15305, 15307,
-  15309, 15327, 15330, 15335, 15336, 15337, 15342, 15346, 15359, 15361,
-  15366, 15380, 15394, 15395, 15405, 15406, 15409, 15416, 15418, 15419,
-  15423, 15426, 15429, 15448.
+  14964, 14981, 14982, 14985, 14994, 14996, 15000, 15003, 15006, 15007,
+  15020, 15023, 15036, 15054, 15055, 15062, 15078, 15084, 15085, 15086,
+  15160, 15214, 15221, 15232, 15234, 15283, 15285, 15287, 15304, 15305,
+  15307, 15309, 15327, 15330, 15335, 15336, 15337, 15342, 15346, 15359,
+  15361, 15366, 15380, 15394, 15395, 15405, 15406, 15409, 15416, 15418,
+  15419, 15423, 15426, 15429, 15448.
 
 * CVE-2013-0242 Buffer overrun in regexp matcher has been fixed (Bugzilla
   #15078).
index 6aa0e9188b4544ac5345ba01212ecc4d6d2bcdcd..64bf7605f4064ddc0ccd47bf79c026f92945da4c 100644 (file)
@@ -1,3 +1,10 @@
+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.
+
 2013-04-02  Thomas Schwinge  <thomas@codesourcery.com>
 
        * sysdeps/hppa/math_private.h: New file.
index 5cac3344d6fb2a28e84f80083f08fa1184614adf..627cdd5b9299c016a0b21940df94cd9dbdaa9a34 100644 (file)
@@ -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.  */
This page took 0.048704 seconds and 5 git commands to generate.