aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2011-09-01 13:41:27 -0700
committerDavid S. Miller <davem@davemloft.net>2011-09-01 13:43:06 -0700
commit5f4318d102d604e2f80bc97927e2d80f76063639 (patch)
tree189e956cbde6fde7155f1961f03e8abc548c28ae /sysdeps
parent3ba575169aabc83993759305c0394f58ad1ce3e0 (diff)
downloadglibc-5f4318d102d604e2f80bc97927e2d80f76063639.zip
glibc-5f4318d102d604e2f80bc97927e2d80f76063639.tar.gz
glibc-5f4318d102d604e2f80bc97927e2d80f76063639.tar.bz2
Sanitize HWCAP_SPARC_* defines/usage, and add new entries.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/sparc/dl-procinfo.c9
-rw-r--r--sysdeps/sparc/dl-procinfo.h5
-rw-r--r--sysdeps/sparc/sparc32/bits/atomic.h8
-rw-r--r--sysdeps/sparc/sparc32/dl-machine.h3
-rw-r--r--sysdeps/sparc/sparc64/multiarch/memcpy.S8
-rw-r--r--sysdeps/sparc/sparc64/multiarch/memset.S6
-rw-r--r--sysdeps/sparc/sysdep.h45
-rw-r--r--sysdeps/unix/sparc/sysdep.h4
8 files changed, 69 insertions, 19 deletions
diff --git a/sysdeps/sparc/dl-procinfo.c b/sysdeps/sparc/dl-procinfo.c
index db7e867..4a629ca 100644
--- a/sysdeps/sparc/dl-procinfo.c
+++ b/sysdeps/sparc/dl-procinfo.c
@@ -1,5 +1,5 @@
/* Data for Linux/sparc version of processor capability information.
- Copyright (C) 2002,2003,2006 Free Software Foundation, Inc.
+ Copyright (C) 2002,2003,2006,2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2002.
@@ -47,10 +47,13 @@
#if !defined PROCINFO_DECL && defined SHARED
._dl_sparc_cap_flags
#else
-PROCINFO_CLASS const char _dl_sparc_cap_flags[8][7]
+PROCINFO_CLASS const char _dl_sparc_cap_flags[24][11]
#endif
#ifndef PROCINFO_DECL
- = { "flush", "stbar", "swap", "muldiv", "v9", "ultra3", "v9v", "v9v2" }
+ = { "flush", "stbar", "swap", "muldiv", "v9", "ultra3", "v9v", "v9v2",
+ "mul32", "div32", "fsmuld", "v8plus", "popc", "vis", "vis2",
+ "ASIBlkInit", "fmaf", "vis3", "hpc", "random", "trans", "fjfmau",
+ "ima", "cspare" }
#endif
#if !defined SHARED || defined PROCINFO_DECL
;
diff --git a/sysdeps/sparc/dl-procinfo.h b/sysdeps/sparc/dl-procinfo.h
index 04ebda7..1aea458 100644
--- a/sysdeps/sparc/dl-procinfo.h
+++ b/sysdeps/sparc/dl-procinfo.h
@@ -1,5 +1,5 @@
/* Linux/sparc version of processor capability information handling macros.
- Copyright (C) 1999,2000,2001,2002,2003,2004,2006
+ Copyright (C) 1999,2000,2001,2002,2003,2004,2006,2011
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jj@ultra.linux.cz>, 1999.
@@ -23,8 +23,9 @@
#define _DL_PROCINFO_H 1
#include <ldsodefs.h>
+#include <sysdep.h>
-#define _DL_HWCAP_COUNT 8
+#define _DL_HWCAP_COUNT 24
static inline int
__attribute__ ((unused))
diff --git a/sysdeps/sparc/sparc32/bits/atomic.h b/sysdeps/sparc/sparc32/bits/atomic.h
index ef553f7..b9b5124 100644
--- a/sysdeps/sparc/sparc32/bits/atomic.h
+++ b/sysdeps/sparc/sparc32/bits/atomic.h
@@ -1,5 +1,5 @@
/* Atomic operations. sparc32 version.
- Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004, 2006, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
@@ -22,6 +22,7 @@
#define _BITS_ATOMIC_H 1
#include <stdint.h>
+#include <sysdep.h>
typedef int8_t atomic8_t;
typedef uint8_t uatomic8_t;
@@ -238,13 +239,10 @@ volatile unsigned char __sparc32_atomic_locks[64]
apps on v9 CPUs e.g. with process shared primitives, use cas insn
on v9 CPUs and ldstub on pre-v9. */
-/* Avoid <ldsodefs.h> include here. */
extern uint64_t _dl_hwcap __attribute__((weak));
-# define __ATOMIC_HWCAP_SPARC_V9 16
# define __atomic_is_v9 \
(__builtin_expect (&_dl_hwcap != 0, 1) \
- && __builtin_expect (_dl_hwcap & __ATOMIC_HWCAP_SPARC_V9, \
- __ATOMIC_HWCAP_SPARC_V9))
+ && __builtin_expect (_dl_hwcap & HWCAP_SPARC_V9, HWCAP_SPARC_V9))
# define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
({ \
diff --git a/sysdeps/sparc/sparc32/dl-machine.h b/sysdeps/sparc/sparc32/dl-machine.h
index f8e8fe4..f2bc94a 100644
--- a/sysdeps/sparc/sparc32/dl-machine.h
+++ b/sysdeps/sparc/sparc32/dl-machine.h
@@ -1,5 +1,5 @@
/* Machine-dependent ELF dynamic relocation inline functions. SPARC version.
- Copyright (C) 1996-2003, 2004, 2005, 2006, 2007, 2010
+ Copyright (C) 1996-2003, 2004, 2005, 2006, 2007, 2010, 2011
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -26,6 +26,7 @@
#include <string.h>
#include <sys/param.h>
#include <ldsodefs.h>
+#include <sysdep.h>
#include <tls.h>
#include <dl-plt.h>
diff --git a/sysdeps/sparc/sparc64/multiarch/memcpy.S b/sysdeps/sparc/sparc64/multiarch/memcpy.S
index c12dc3b..c022a40 100644
--- a/sysdeps/sparc/sparc64/multiarch/memcpy.S
+++ b/sysdeps/sparc/sparc64/multiarch/memcpy.S
@@ -1,5 +1,5 @@
/* Multiple versions of memcpy
- Copyright (C) 2010 Free Software Foundation, Inc.
+ Copyright (C) 2010, 2011 Free Software Foundation, Inc.
Contributed by David S. Miller (davem@davemloft.net)
This file is part of the GNU C Library.
@@ -33,9 +33,9 @@ ENTRY(memcpy)
1: add %o7, %o3, %o3
mov %o5, %o7
# endif
- andcc %o0, 0x80, %g0 ! HWCAP_SPARC_N2
+ andcc %o0, HWCAP_SPARC_N2, %g0
be 1f
- andcc %o0, 0x40, %g0 ! HWCAP_SPARC_BLKINIT
+ andcc %o0, HWCAP_SPARC_BLKINIT, %g0
# ifdef SHARED
sethi %gdop_hix22(__memcpy_niagara2), %o1
xor %o1, %gdop_lox10(__memcpy_niagara2), %o1
@@ -45,7 +45,7 @@ ENTRY(memcpy)
ba 10f
nop
1: be 1f
- andcc %o0, 0x20, %g0 ! HWCAP_SPARC_ULTRA3
+ andcc %o0, HWCAP_SPARC_ULTRA3, %g0
# ifdef SHARED
sethi %gdop_hix22(__memcpy_niagara1), %o1
xor %o1, %gdop_lox10(__memcpy_niagara1), %o1
diff --git a/sysdeps/sparc/sparc64/multiarch/memset.S b/sysdeps/sparc/sparc64/multiarch/memset.S
index 2e27448..e2674d7 100644
--- a/sysdeps/sparc/sparc64/multiarch/memset.S
+++ b/sysdeps/sparc/sparc64/multiarch/memset.S
@@ -1,5 +1,5 @@
/* Multiple versions of memset and bzero
- Copyright (C) 2010 Free Software Foundation, Inc.
+ Copyright (C) 2010, 2011 Free Software Foundation, Inc.
Contributed by David S. Miller (davem@davemloft.net)
This file is part of the GNU C Library.
@@ -33,7 +33,7 @@ ENTRY(memset)
1: add %o7, %o3, %o3
mov %o5, %o7
# endif
- andcc %o0, 0x40, %g0 ! HWCAP_SPARC_BLKINIT
+ andcc %o0, HWCAP_SPARC_BLKINIT, %g0
be 9f
nop
# ifdef SHARED
@@ -69,7 +69,7 @@ ENTRY(__bzero)
1: add %o7, %o3, %o3
mov %o5, %o7
# endif
- andcc %o0, 0x40, %g0 ! HWCAP_SPARC_BLKINIT
+ andcc %o0, HWCAP_SPARC_BLKINIT, %g0
be 9f
nop
# ifdef SHARED
diff --git a/sysdeps/sparc/sysdep.h b/sysdeps/sparc/sysdep.h
new file mode 100644
index 0000000..bba4141
--- /dev/null
+++ b/sysdeps/sparc/sysdep.h
@@ -0,0 +1,45 @@
+/* Copyright (C) 2011 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/* Bits present in AT_HWCAP on SPARC. */
+
+#define HWCAP_SPARC_FLUSH 0x00000001
+#define HWCAP_SPARC_STBAR 0x00000002
+#define HWCAP_SPARC_SWAP 0x00000004
+#define HWCAP_SPARC_MULDIV 0x00000008
+#define HWCAP_SPARC_V9 0x00000010
+#define HWCAP_SPARC_ULTRA3 0x00000020
+#define HWCAP_SPARC_BLKINIT 0x00000040
+#define HWCAP_SPARC_N2 0x00000080
+#define HWCAP_SPARC_MUL32 0x00000100
+#define HWCAP_SPARC_DIV32 0x00000200
+#define HWCAP_SPARC_FSMULD 0x00000400
+#define HWCAP_SPARC_V8PLUS 0x00000800
+#define HWCAP_SPARC_POPC 0x00001000
+#define HWCAP_SPARC_VIS 0x00002000
+#define HWCAP_SPARC_VIS2 0x00004000
+#define HWCAP_SPARC_ASI_BLK_INIT 0x00008000
+#define HWCAP_SPARC_FMAF 0x00010000
+#define HWCAP_SPARC_VIS3 0x00020000
+#define HWCAP_SPARC_HPC 0x00040000
+#define HWCAP_SPARC_RANDOM 0x00080000
+#define HWCAP_SPARC_TRANS 0x00100000
+#define HWCAP_SPARC_FJFMAU 0x00200000
+#define HWCAP_SPARC_IMA 0x00400000
+#define HWCAP_SPARC_ASI_CACHE_SPARING \
+ 0x00800000
diff --git a/sysdeps/unix/sparc/sysdep.h b/sysdeps/unix/sparc/sysdep.h
index c8f4cca..590b7ab 100644
--- a/sysdeps/unix/sparc/sysdep.h
+++ b/sysdeps/unix/sparc/sysdep.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1993, 1994, 1995, 1997, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1994, 1995, 1997, 2003, 2011
+ 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
@@ -17,6 +18,7 @@
02111-1307 USA. */
#include <sysdeps/unix/sysdep.h>
+#include <sysdeps/sparc/sysdep.h>
#ifdef __ASSEMBLER__