Sanitize HWCAP_SPARC_* defines/usage, and add new entries.
This commit is contained in:
parent
3ba575169a
commit
5f4318d102
16
ChangeLog
16
ChangeLog
@ -1,3 +1,19 @@
|
|||||||
|
2011-09-01 David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
|
* elf/elf.h (HWCAP_SPARC_*): Move to..
|
||||||
|
* sysdeps/sparc/sysdep.h: this new file and add new values.
|
||||||
|
* sysdeps/unix/sparc/sysdep.h: Include sysdeps/sparc/sysdep.h
|
||||||
|
* sysdeps/sparc/dl-procinfo.h: Include sysdep.h and increase
|
||||||
|
_DL_HWCAP_COUNT to 24.
|
||||||
|
* sysdeps/sparc/dl-procinfo.c (_dl_sparc_cap_flags): Add new
|
||||||
|
entries.
|
||||||
|
* sysdeps/sparc/sparc32/bits/atomic.h: Don't use magic local
|
||||||
|
__ATOMIC_HWCAP_SPARC_V9 define, use sysdep.h one instead.
|
||||||
|
* sysdeps/sparc/sparc32/dl-machine.h: Include sysdep.h
|
||||||
|
* sysdeps/sparc/sparc64/multiarch/memcpy.S: Use HWCAP_SPARC_*
|
||||||
|
instead of magic constants.
|
||||||
|
* sysdeps/sparc/sparc64/multiarch/memset.S: Likewise.
|
||||||
|
|
||||||
2011-08-31 David S. Miller <davem@davemloft.net>
|
2011-08-31 David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
* sysdeps/unix/sparc/sysdep.h (SETUP_PIC_REG): Define.
|
* sysdeps/unix/sparc/sysdep.h (SETUP_PIC_REG): Define.
|
||||||
|
11
elf/elf.h
11
elf/elf.h
@ -1339,17 +1339,6 @@ typedef struct
|
|||||||
#define DT_SPARC_REGISTER 0x70000001
|
#define DT_SPARC_REGISTER 0x70000001
|
||||||
#define DT_SPARC_NUM 2
|
#define DT_SPARC_NUM 2
|
||||||
|
|
||||||
/* Bits present in AT_HWCAP on SPARC. */
|
|
||||||
|
|
||||||
#define HWCAP_SPARC_FLUSH 1 /* The CPU supports flush insn. */
|
|
||||||
#define HWCAP_SPARC_STBAR 2
|
|
||||||
#define HWCAP_SPARC_SWAP 4
|
|
||||||
#define HWCAP_SPARC_MULDIV 8
|
|
||||||
#define HWCAP_SPARC_V9 16 /* The CPU is v9, so v8plus is ok. */
|
|
||||||
#define HWCAP_SPARC_ULTRA3 32
|
|
||||||
#define HWCAP_SPARC_BLKINIT 64 /* Sun4v with block-init/load-twin. */
|
|
||||||
#define HWCAP_SPARC_N2 128
|
|
||||||
|
|
||||||
/* MIPS R3000 specific definitions. */
|
/* MIPS R3000 specific definitions. */
|
||||||
|
|
||||||
/* Legal values for e_flags field of Elf32_Ehdr. */
|
/* Legal values for e_flags field of Elf32_Ehdr. */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Data for Linux/sparc version of processor capability information.
|
/* 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.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Jakub Jelinek <jakub@redhat.com>, 2002.
|
Contributed by Jakub Jelinek <jakub@redhat.com>, 2002.
|
||||||
|
|
||||||
@ -47,10 +47,13 @@
|
|||||||
#if !defined PROCINFO_DECL && defined SHARED
|
#if !defined PROCINFO_DECL && defined SHARED
|
||||||
._dl_sparc_cap_flags
|
._dl_sparc_cap_flags
|
||||||
#else
|
#else
|
||||||
PROCINFO_CLASS const char _dl_sparc_cap_flags[8][7]
|
PROCINFO_CLASS const char _dl_sparc_cap_flags[24][11]
|
||||||
#endif
|
#endif
|
||||||
#ifndef PROCINFO_DECL
|
#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
|
#endif
|
||||||
#if !defined SHARED || defined PROCINFO_DECL
|
#if !defined SHARED || defined PROCINFO_DECL
|
||||||
;
|
;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Linux/sparc version of processor capability information handling macros.
|
/* 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.
|
Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Jakub Jelinek <jj@ultra.linux.cz>, 1999.
|
Contributed by Jakub Jelinek <jj@ultra.linux.cz>, 1999.
|
||||||
@ -23,8 +23,9 @@
|
|||||||
#define _DL_PROCINFO_H 1
|
#define _DL_PROCINFO_H 1
|
||||||
|
|
||||||
#include <ldsodefs.h>
|
#include <ldsodefs.h>
|
||||||
|
#include <sysdep.h>
|
||||||
|
|
||||||
#define _DL_HWCAP_COUNT 8
|
#define _DL_HWCAP_COUNT 24
|
||||||
|
|
||||||
static inline int
|
static inline int
|
||||||
__attribute__ ((unused))
|
__attribute__ ((unused))
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Atomic operations. sparc32 version.
|
/* 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.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
|
Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
|
||||||
|
|
||||||
@ -22,6 +22,7 @@
|
|||||||
#define _BITS_ATOMIC_H 1
|
#define _BITS_ATOMIC_H 1
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <sysdep.h>
|
||||||
|
|
||||||
typedef int8_t atomic8_t;
|
typedef int8_t atomic8_t;
|
||||||
typedef uint8_t uatomic8_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
|
apps on v9 CPUs e.g. with process shared primitives, use cas insn
|
||||||
on v9 CPUs and ldstub on pre-v9. */
|
on v9 CPUs and ldstub on pre-v9. */
|
||||||
|
|
||||||
/* Avoid <ldsodefs.h> include here. */
|
|
||||||
extern uint64_t _dl_hwcap __attribute__((weak));
|
extern uint64_t _dl_hwcap __attribute__((weak));
|
||||||
# define __ATOMIC_HWCAP_SPARC_V9 16
|
|
||||||
# define __atomic_is_v9 \
|
# define __atomic_is_v9 \
|
||||||
(__builtin_expect (&_dl_hwcap != 0, 1) \
|
(__builtin_expect (&_dl_hwcap != 0, 1) \
|
||||||
&& __builtin_expect (_dl_hwcap & __ATOMIC_HWCAP_SPARC_V9, \
|
&& __builtin_expect (_dl_hwcap & HWCAP_SPARC_V9, HWCAP_SPARC_V9))
|
||||||
__ATOMIC_HWCAP_SPARC_V9))
|
|
||||||
|
|
||||||
# define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
|
# define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
|
||||||
({ \
|
({ \
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Machine-dependent ELF dynamic relocation inline functions. SPARC version.
|
/* 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.
|
Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
@ -26,6 +26,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <ldsodefs.h>
|
#include <ldsodefs.h>
|
||||||
|
#include <sysdep.h>
|
||||||
#include <tls.h>
|
#include <tls.h>
|
||||||
#include <dl-plt.h>
|
#include <dl-plt.h>
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Multiple versions of memcpy
|
/* 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)
|
Contributed by David S. Miller (davem@davemloft.net)
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
@ -33,9 +33,9 @@ ENTRY(memcpy)
|
|||||||
1: add %o7, %o3, %o3
|
1: add %o7, %o3, %o3
|
||||||
mov %o5, %o7
|
mov %o5, %o7
|
||||||
# endif
|
# endif
|
||||||
andcc %o0, 0x80, %g0 ! HWCAP_SPARC_N2
|
andcc %o0, HWCAP_SPARC_N2, %g0
|
||||||
be 1f
|
be 1f
|
||||||
andcc %o0, 0x40, %g0 ! HWCAP_SPARC_BLKINIT
|
andcc %o0, HWCAP_SPARC_BLKINIT, %g0
|
||||||
# ifdef SHARED
|
# ifdef SHARED
|
||||||
sethi %gdop_hix22(__memcpy_niagara2), %o1
|
sethi %gdop_hix22(__memcpy_niagara2), %o1
|
||||||
xor %o1, %gdop_lox10(__memcpy_niagara2), %o1
|
xor %o1, %gdop_lox10(__memcpy_niagara2), %o1
|
||||||
@ -45,7 +45,7 @@ ENTRY(memcpy)
|
|||||||
ba 10f
|
ba 10f
|
||||||
nop
|
nop
|
||||||
1: be 1f
|
1: be 1f
|
||||||
andcc %o0, 0x20, %g0 ! HWCAP_SPARC_ULTRA3
|
andcc %o0, HWCAP_SPARC_ULTRA3, %g0
|
||||||
# ifdef SHARED
|
# ifdef SHARED
|
||||||
sethi %gdop_hix22(__memcpy_niagara1), %o1
|
sethi %gdop_hix22(__memcpy_niagara1), %o1
|
||||||
xor %o1, %gdop_lox10(__memcpy_niagara1), %o1
|
xor %o1, %gdop_lox10(__memcpy_niagara1), %o1
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Multiple versions of memset and bzero
|
/* 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)
|
Contributed by David S. Miller (davem@davemloft.net)
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
@ -33,7 +33,7 @@ ENTRY(memset)
|
|||||||
1: add %o7, %o3, %o3
|
1: add %o7, %o3, %o3
|
||||||
mov %o5, %o7
|
mov %o5, %o7
|
||||||
# endif
|
# endif
|
||||||
andcc %o0, 0x40, %g0 ! HWCAP_SPARC_BLKINIT
|
andcc %o0, HWCAP_SPARC_BLKINIT, %g0
|
||||||
be 9f
|
be 9f
|
||||||
nop
|
nop
|
||||||
# ifdef SHARED
|
# ifdef SHARED
|
||||||
@ -69,7 +69,7 @@ ENTRY(__bzero)
|
|||||||
1: add %o7, %o3, %o3
|
1: add %o7, %o3, %o3
|
||||||
mov %o5, %o7
|
mov %o5, %o7
|
||||||
# endif
|
# endif
|
||||||
andcc %o0, 0x40, %g0 ! HWCAP_SPARC_BLKINIT
|
andcc %o0, HWCAP_SPARC_BLKINIT, %g0
|
||||||
be 9f
|
be 9f
|
||||||
nop
|
nop
|
||||||
# ifdef SHARED
|
# ifdef SHARED
|
||||||
|
45
sysdeps/sparc/sysdep.h
Normal file
45
sysdeps/sparc/sysdep.h
Normal file
@ -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
|
@ -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.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -17,6 +18,7 @@
|
|||||||
02111-1307 USA. */
|
02111-1307 USA. */
|
||||||
|
|
||||||
#include <sysdeps/unix/sysdep.h>
|
#include <sysdeps/unix/sysdep.h>
|
||||||
|
#include <sysdeps/sparc/sysdep.h>
|
||||||
|
|
||||||
#ifdef __ASSEMBLER__
|
#ifdef __ASSEMBLER__
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user