From 5f4318d102d604e2f80bc97927e2d80f76063639 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Thu, 1 Sep 2011 13:41:27 -0700 Subject: Sanitize HWCAP_SPARC_* defines/usage, and add new entries. --- sysdeps/sparc/dl-procinfo.c | 9 ++++--- sysdeps/sparc/dl-procinfo.h | 5 ++-- sysdeps/sparc/sparc32/bits/atomic.h | 8 +++--- sysdeps/sparc/sparc32/dl-machine.h | 3 ++- sysdeps/sparc/sparc64/multiarch/memcpy.S | 8 +++--- sysdeps/sparc/sparc64/multiarch/memset.S | 6 ++--- sysdeps/sparc/sysdep.h | 45 ++++++++++++++++++++++++++++++++ sysdeps/unix/sparc/sysdep.h | 4 ++- 8 files changed, 69 insertions(+), 19 deletions(-) create mode 100644 sysdeps/sparc/sysdep.h (limited to 'sysdeps') diff --git a/sysdeps/sparc/dl-procinfo.c b/sysdeps/sparc/dl-procinfo.c index db7e867468..4a629caa1e 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 , 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 04ebda751b..1aea45867b 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 , 1999. @@ -23,8 +23,9 @@ #define _DL_PROCINFO_H 1 #include +#include -#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 ef553f7270..b9b51245ff 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 , 2003. @@ -22,6 +22,7 @@ #define _BITS_ATOMIC_H 1 #include +#include 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 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 f8e8fe4179..f2bc94a07d 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 #include #include +#include #include #include diff --git a/sysdeps/sparc/sparc64/multiarch/memcpy.S b/sysdeps/sparc/sparc64/multiarch/memcpy.S index c12dc3bbed..c022a40526 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 2e27448742..e2674d7adf 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 0000000000..bba41416d8 --- /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 c8f4ccafa6..590b7abc4a 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 +#include #ifdef __ASSEMBLER__ -- cgit 1.4.1