This is the mail archive of the glibc-cvs@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]

GNU C Library master sources branch master updated. glibc-2.16-ports-merge-700-g030c5d6


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  030c5d66b80934fa1de9340f47749c8fdfadd8aa (commit)
      from  0d6bed71502f053fa702ccbb7dd4fa6741b2a0ed (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=030c5d66b80934fa1de9340f47749c8fdfadd8aa

commit 030c5d66b80934fa1de9340f47749c8fdfadd8aa
Author: Carlos O'Donell <carlos@systemhalted.org>
Date:   Mon Nov 19 00:37:56 2012 -0500

    hppa: Implement fpu_control.h.
    
    The HP-PARISC processor has full IEEE-754 support
    and we implement all of fpu_control.h.

diff --git a/ports/ChangeLog.hppa b/ports/ChangeLog.hppa
index 71b5e17..3d8e9e6 100644
--- a/ports/ChangeLog.hppa
+++ b/ports/ChangeLog.hppa
@@ -1,5 +1,7 @@
 2012-11-18  Carlos O'Donell  <carlos@systemhalted.org>
 
+	* ports/sysdeps/hppa/fpu/fpu_control.h: New file.
+
 	* ports/sysdeps/hppa/__longjmp.S: Removed.
 	* ports/sysdeps/hppa/__longjmp.c: New file.
 	* ports/sysdeps/unix/sysv/linux/hppa/____longjmp_chk.c: New file.
diff --git a/ports/sysdeps/hppa/fpu/fpu_control.h b/ports/sysdeps/hppa/fpu/fpu_control.h
new file mode 100644
index 0000000..6069797
--- /dev/null
+++ b/ports/sysdeps/hppa/fpu/fpu_control.h
@@ -0,0 +1,66 @@
+/* FPU control word definitions.  HP-PARISC version.
+   Copyright (C) 2012 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _FPU_CONTROL_H
+#define _FPU_CONTROL_H
+
+/* Masking of interrupts */
+#define _FPU_MASK_PM	0x00000001	/* Inexact (I) */
+#define _FPU_MASK_UM	0x00000002	/* Underflow (U) */
+#define _FPU_MASK_OM	0x00000004	/* Overflow (O) */
+#define _FPU_MASK_ZM	0x00000008	/* Divide by zero (Z) */
+#define _FPU_MASK_IM	0x00000010	/* Invalid operation (V) */
+
+/* Masking of rounding modes.  */
+#define _FPU_HPPA_MASK_RM	0x00000600	/* Rounding mode mask */
+/* Masking of interrupt enable bits.  */
+#define _FPU_HPPA_MASK_INT	0x0000001f	/* Interrupt mask */
+
+/* There are no reserved bits in the PA fpsr (though some are undefined).  */
+#define _FPU_RESERVED	0x00000000
+/* Default is: No traps enabled, no flags set, round to nearest.  */
+#define _FPU_DEFAULT    0x00000000
+/* Default + exceptions (FE_ALL_EXCEPT) enabled. */
+#define _FPU_IEEE	(_FPU_DEFAULT | _FPU_HPPA_MASK_INT)
+
+/* Type of the control word.  */
+typedef unsigned int fpu_control_t;
+
+/* Macros for accessing the hardware control word.  */
+#define _FPU_GETCW(cw) \
+({										\
+  union { unsigned long long __fpreg; unsigned int __halfreg[2]; } __fullfp;	\
+  /* Get the current status word. */						\
+  __asm__ ("fstd %%fr0,0(%1)\n\t"						\
+           "fldd 0(%1),%%fr0\n\t"						\
+	   : "=m" (__fullfp.__fpreg) : "r" (&__fullfp.__fpreg) : "%r0");	\
+  __fullfp.__halfreg[0];							\
+})
+
+#define _FPU_SETCW(cw) \
+({										\
+  union { 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" );	\
+})
+
+/* Default control word set at startup.  */
+extern fpu_control_t __fpu_control;
+
+#endif /* _FPU_CONTROL_H */

-----------------------------------------------------------------------

Summary of changes:
 ports/ChangeLog.hppa                 |    2 +
 ports/sysdeps/hppa/fpu/fpu_control.h |   66 ++++++++++++++++++++++++++++++++++
 2 files changed, 68 insertions(+), 0 deletions(-)
 create mode 100644 ports/sysdeps/hppa/fpu/fpu_control.h


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]