aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/powerpc/sysdep.h
AgeCommit message (Collapse)AuthorFilesLines
2021-08-27Make powerpc .machine directives be gcc-onlyStan Shebs1-0/+6
2018-03-05powerpc: Fix TLE build for SPE (BZ #22926)Adhemerval Zanella1-1/+1
Some SPE opcodes clashes with some recent PowerISA opcodes and until recently gas did not complain about it. However binutils recently changed it and now VLE configured gas does not support to assembler some instruction that might class with VLE (HTM for instance). It also does not help that glibc build hardware lock elision support as default (regardless of assembler support). Although runtime will not actually enables TLE on SPE hardware (since kernel will not advertise it), I see little advantage on adding HTM support on SPE built glibc. SPE uses an incompatible ABI which does not allow share the same build with default powerpc and HTM code slows down SPE without any benefict. This patch fixes it by only building HTM when SPE configuration is not used. Checked with a powerpc-linux-gnuspe build. I also did some sniff tests on a e500 hardware without any issue. [BZ #22926] * sysdeps/powerpc/powerpc32/sysdep.h (ABORT_TRANSACTION_IMPL): Define empty for __SPE__. * sysdeps/powerpc/sysdep.h (ABORT_TRANSACTION): Likewise. * sysdeps/unix/sysv/linux/powerpc/elision-lock.c (__lll_lock_elision): Do not build hardware transactional code for __SPE__. * sysdeps/unix/sysv/linux/powerpc/elision-trylock.c (__lll_trylock_elision): Likewise. * sysdeps/unix/sysv/linux/powerpc/elision-unlock.c (__lll_unlock_elision): Likewise. Cherry-pick from e921c89e01389161c036ec09112da6e18aeaa688.
2018-01-01Update copyright dates with scripts/update-copyrights.Joseph Myers1-1/+1
* All files with FSF copyright notices: Update copyright dates using scripts/update-copyrights. * locale/programs/charmap-kw.h: Regenerated. * locale/programs/locfile-kw.h: Likewise.
2017-12-05Add elision tunablesRogerio Alves1-3/+1
This patch adds several new tunables to control the behavior of elision on supported platforms[1]. Since elision now depends on tunables, we should always *compile* with elision enabled, and leave the code disabled, but available for runtime selection. This gives us *much* better compile-time testing of the existing code to avoid bit-rot[2]. Tested on ppc, ppc64, ppc64le, s390x and x86_64. [1] This part of the patch was initially proposed by Paul Murphy but was "staled" because the framework have changed since the patch was originally proposed: https://patchwork.sourceware.org/patch/10342/ [2] This part of the patch was inititally proposed as a RFC by Carlos O'Donnell. Make sense to me integrate this on the patch: https://sourceware.org/ml/libc-alpha/2017-05/msg00335.html * elf/dl-tunables.list: Add elision parameters. * manual/tunables.texi: Add entries about elision tunable. * sysdeps/unix/sysv/linux/powerpc/elision-conf.c: Add callback functions to dynamically enable/disable elision. Add multiple callbacks functions to set elision parameters. Deleted __libc_enable_secure check. * sysdeps/unix/sysv/linux/s390/elision-conf.c: Likewise. * sysdeps/unix/sysv/linux/x86/elision-conf.c: Likewise. * configure: Regenerated. * configure.ac: Option enable_lock_elision was deleted. * config.h.in: ENABLE_LOCK_ELISION flag was deleted. * config.make.in: Remove references to enable_lock_elision. * manual/install.texi: Elision configure option was removed. * INSTALL: Regenerated to remove enable_lock_elision. * nptl/Makefile: Disable elision so it can verify error case for destroying a mutex. * sysdeps/powerpc/nptl/elide.h: Cleanup ENABLE_LOCK_ELISION check. Deleted macros for the case when ENABLE_LOCK_ELISION was not defined. * sysdeps/s390/configure: Regenerated. * sysdeps/s390/configure.ac: Remove references to enable_lock_elision.. * nptl/tst-mutex8.c: Deleted all #ifndef ENABLE_LOCK_ELISION from the test. * sysdeps/powerpc/powerpc32/sysdep.h: Deleted all ENABLE_LOCK_ELISION checks. * sysdeps/powerpc/powerpc64/sysdep.h: Likewise. * sysdeps/powerpc/sysdep.h: Likewise. * sysdeps/s390/nptl/bits/pthreadtypes-arch.h: Likewise. * sysdeps/unix/sysv/linux/powerpc/force-elision.h: Likewise. * sysdeps/unix/sysv/linux/s390/elision-conf.h: Likewise. * sysdeps/unix/sysv/linux/s390/force-elision.h: Likewise. * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/s390/Makefile: Remove references to enable-lock-elision. Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
2017-01-01Update copyright dates with scripts/update-copyrights.Joseph Myers1-1/+1
2016-01-08powerpc: Enforce compiler barriers on hardware transactionsTulio Magno Quites Machado Filho1-1/+1
Work around a GCC behavior with hardware transactional memory built-ins. GCC doesn't treat the PowerPC transactional built-ins as compiler barriers, moving instructions past the transaction boundaries and altering their atomicity.
2016-01-04Update copyright dates with scripts/update-copyrights.Joseph Myers1-1/+1
2015-01-12powerpc: abort transaction in syscallsAdhemerval Zanella1-0/+22
Linux kernel powerpc documentation states issuing a syscall inside a transaction is not recommended and may lead to undefined behavior. It also states syscalls does not abort transactoin neither they run in transactional state. To avoid side-effects being visible outside transactions, GLIBC with lock elision enabled will issue a transaction abort instruction just before all syscalls if hardware supports hardware transactions.
2015-01-02Update copyright dates with scripts/update-copyrights.Joseph Myers1-1/+1
2014-02-21Allow sys/auxv.h to be used from the testsuite on powerpc and sparc.Adam Conrad1-1/+1
elf/tst-auxv.c includes misc/sys/auxv.h, which ends up not actually being included due to the guard overlap, and getauxval becomes an implicit declaration and implicit pointer conversion which means, at best, the test isn't actually testing what it thinks it is and, at worst, it'll crash and burn on platforms where implict pointer conversion is a Very Bad Thing. * sysdeps/powerpc/bits/hwcap.h: Allow _SYSDEPS_SYSDEP_H guard as a synonym for _SYS_AUXV_H to allow direct inclusion. * sysdeps/sparc/bits/hwcap.h: Likewise. * sysdeps/powerpc/sysdep.h: Define _SYSDEPS_SYSDEP_H instead of _SYS_AUXV_H so we can include sysdep.h and sys/auxv.h together. * sysdeps/sparc/sysdep.h: Likewise.
2014-01-01Update copyright notices with scripts/update-copyrightsAllan McRae1-1/+1
2013-10-04PowerPC floating point little-endian [12 of 15]Alan Modra1-0/+15
http://sourceware.org/ml/libc-alpha/2013-08/msg00087.html Fixes for little-endian in 32-bit assembly. * sysdeps/powerpc/sysdep.h (LOWORD, HIWORD, HISHORT): Define. * sysdeps/powerpc/powerpc32/fpu/s_copysign.S: Load little-endian words of double from correct stack offsets. * sysdeps/powerpc/powerpc32/fpu/s_copysignl.S: Likewise. * sysdeps/powerpc/powerpc32/fpu/s_lrint.S: Likewise. * sysdeps/powerpc/powerpc32/fpu/s_lround.S: Likewise. * sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S: Likewise. * sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S: Likewise. * sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S: Likewise. * sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S: Likewise. * sysdeps/powerpc/powerpc32/power5/fpu/s_isnan.S: Likewise. * sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S: Likewise. * sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S: Likewise. * sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S: Likewise. * sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S: Likewise. * sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S: Likewise. * sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S: Likewise. * sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S: Likewise. * sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S: Use HISHORT. * sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S: Likewise.
2013-06-05Remove trailing whitespace.Joseph Myers1-2/+2
2013-01-02Update copyright notices with scripts/update-copyrights.Joseph Myers1-1/+1
2012-12-04Define _SYS_AUXV_H to 1 not empty in sysdeps/powerpc/sysdep.h.Joseph Myers1-1/+1
2012-08-02Get rid of ASM_TYPE_DIRECTIVE{,_PREFIX}.Marek Polacek1-2/+0
2012-05-20Add <sys/auxv.h> and getauxval.Richard Henderson1-26/+3
2012-02-09Replace FSF snail mail address with URLs.Paul Eggert1-3/+2
2012-02-07Remove __ELF__ conditionalsMarek Polacek1-5/+1
2009-07-05Fix wrong PPC_FEATURE_* values.Andreas Schwab1-2/+2
Nothing uses these wrong values yet, but it fixes a warning due to conflicting definitions in <asm/cputable.h>.
2008-08-08[BZ #6817]Ulrich Drepper1-0/+2
2008-08-01 Steven Munroe <sjmunroe@us.ibm.com> Carlos Eduardo Seo <cseo@linux.vnet.ibm.com> [BZ #6817] * sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_cap_flags): Added the members 'vsx' and 'arch_2_06'. (_dl_powerpc_platforms): Add the member 'power7'. * sysdeps/powerpc/dl-procinfo.h: Modify _DL_HWCAP_FIRST to reflect the changes required by VSX and ISA 2.06. Modify _DL_PLATFORMS_COUNT to reflect the addition of 'power7'. Defined PPC_PLATFORM_POWER7. (_dl_string_platform): Add support for POWER7. * sysdeps/powerpc/sysdep.h: Define bit masks for VSX capability and ISA 2.06.
2006-12-19* elf/dl-support.c: Include dl-procinfo.h.Ulrich Drepper1-3/+6
* sysdeps/powerpc/dl-procinfo.h (PPC_PLATFORM_POWER4, PPC_PLATFORM_PPC970, PPC_PLATFORM_POWER5, PPC_PLATFORM_POWER5_PLUS, PPC_PLATFORM_POWER6, PPC_PLATFORM_CELL_BE, PPC_PLATFORM_POWER6X): Define. (_dl_string_platform): Use PPC_PLATFORM_* macros instead of hardcoded constants. * sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_platform): Use PPC_PLATFORM_* macros for array designators. 2006-11-11 Steven Munroe <sjmunroe@us.ibm.com> * sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_cap_flags): Add 3 new cap names to the beginning. (_dl_powerpc_platforms): Add "power6x". * sysdeps/powerpc/dl-procinfo.h (_DL_HWCAP_FIRST): Decrease. (HWCAP_IMPORTANT): Add PPC_FEATURE_HAS_DFP. (_DL_PLATFORMS_COUNT): Increase. (_dl_string_platform): Handle power6x case. * sysdeps/powerpc/sysdep.h (PPC_FEATURE_PA6T, PPC_FEATURE_HAS_DFP, PPC_FEATURE_POWER6_EXT): Define. (PPC_FEATURE_POWER5, PPC_FEATURE_POWER5_PLUS): Correct Comment.
2006-09-152006-09-14 Jakub Jelinek <jakub@redhat.com>cvs/fedora-glibc-20060915T0943Ulrich Drepper1-8/+12
Steven Munroe <sjmunroe@us.ibm.com> * sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_cap_flags): Add 4 new cap names to the beginning. Rename "cell" to "cellbe". (_dl_powerpc_platforms): New. * sysdeps/powerpc/dl-procinfo.h (_DL_HWCAP_FIRST): Decrease. (HWCAP_IMPORTANT): Remove power{4,5,5+} and cell. (_DL_PLATFORMS_COUNT, _DL_FIRST_PLATFORM): Define. (_DL_HWCAP_PLATFORM): Define to new mask. (_dl_platform_string, _dl_string_platform): New functions. * sysdeps/powerpc/sysdep.h (PPC_FEATURE_BOOKE, PPC_FEATURE_SMT, PPC_FEATURE_ICACHE_SNOOP, PPC_FEATURE_ARCH_2_05): Define.
2005-11-18[BZ #1877]Ulrich Drepper1-0/+9
2005-11-17 Steven Munroe <sjmunroe@us.ibm.com> [BZ #1877] * string/test-strncmp.c (do_test_limit): Handle zero length and non-zero align values. (test_main): Correct do_test_limit tests for 64-bit. 2005-11-15 Steven Munroe <sjmunroe@us.ibm.com> * sysdeps/powerpc/sysdep.h (PPC_FEATURE_HAS_SPE, PPC_FEATURE_HAS_EFP_SINGLE, PPC_FEATURE_HAS_EFP_DOUBLE, PPC_FEATURE_NO_TB, PPC_FEATURE_POWER4, PPC_FEATURE_POWER5, PPC_FEATURE_POWER5_PLUS, PPC_FEATURE_CELL, PPC_FEATURE_970): Define to match 2.6.15 kernel. * sysdeps/powerpc/fpu/e_sqrt.c: Remove dl-procinfo.h include. * sysdeps/powerpc/fpu/e_sqrtf.c: Likewise. * sysdeps/powerpc/fpu/w_sqrtf.c: Likewise.
2004-12-22(CFLAGS-tst-align.c): Add -mpreferred-stack-boundary=4.Ulrich Drepper1-17/+1
2007-07-122.5-18.1Jakub Jelinek1-1/+17
2004-05-26Update.Ulrich Drepper1-15/+15
2004-05-25 Steven Munroe <sjmunroe@us.ibm.com> * sysdeps/powerpc/fpu/Makefile: Make ld.so a dependency of libm.so. * sysdeps/powerpc/fpu/bits/mathinline.h [__LIBC_INERNAL_MATH_INLINES] (__ieee754_sqrt): Define as __MATH_INLINE using fsqrt instruction. (__ieee754_sqrtf): Define as __MATH_INLINE using fsqrts instruction. * sysdeps/powerpc/fpu/e_sqrt.c (__slow_ieee754_sqrt): Moved implementation from w_sqrt.c. * sysdeps/powerpc/fpu/e_sqrtf.c (__slow_ieee754_sqrtf): Moved implementation from w_sqrtf.c. * sysdeps/powerpc/fpu/w_sqrt.c (__sqrt): Wrapper implementation using inline __ieee754_sqrt(). * sysdeps/powerpc/fpu/w_sqrtf.c (__sqrtf): Wrapper implementation using inline __ieee754_sqrtf(). * sysdeps/powerpc/powerpc32/sysdep.h [__ASSEMBLER__]: Include <sysdeps/powerpc/sysdep.h> independent of __ASSEMBLER__. * sysdeps/powerpc/sysdep.h [__ASSEMBLER__] (PPC_FEATURE_*): Define PPC_FEATURE_* independent of __ASSEMBLER__. 2004-05-25 Jakub Jelinek <jakub@redhat.com> * sysdeps/pthread/aio_notify.c: Use <> instead of "" for aio_misc.h include. (aio_start_notify_thread): Define if not defined. (notify_func_wrapper): Use it. * sysdeps/pthread/aio_misc.c: Use <> instead of "" for aio_misc.h include. (aio_create_helper_thread): Define if not defined. (__aio_create_helper_thread): New function. (__aio_enqueue_request): Use aio_create_helper_thread. * nis/ypclnt.c (ypall_data, ypall_foreach): Remove. (struct ypresp_all_data): New type. (__xdr_ypresp_all): Change second argument to struct ypresp_all_data *. Replace ypall_foreach and ypall_data with objp->foreach and objp->data. (yp_all): Remove status variable, add data. Replace all uses of status with data.status. Initialize data.foreach and data.data instead of ypall_foreach and ypall_data. 2004-05-24 Jakub Jelinek <jakub@redhat.com> * elf/dl-lookup.c (add_dependency): Set DF_1_NODELETE bit in l_flags_1, not in l_flags.
2004-01-16Update.Ulrich Drepper1-0/+49
2004-01-14 Steven Munroe <sjmunroe@us.ibm.com> * include/libc-symbols.h [HAVE_ASM_GLOBAL_DOT_NAME] (_symbol_version): Use C_SYMBOL_DOT_NAME to create '.'ed symbols. (_default_symbol_version): Use C_SYMBOL_DOT_NAME to create '.'ed symbols. * sysdeps/powerpc/Makefile: Add rtld-global-offsets.sym to gen-as-const-headers. * sysdeps/powerpc/elf/rtld-global-offsets.sym: New file. * sysdeps/powerpc/sysdep.h: Define v# symbols for vector registers. Define PPC_FEATURE_* masks for Aux Vector AT_HWCAP. * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_SWAPCONTEXT_SYSCALL): Define for PPC and 2.6.0 kernels. * sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h [!__WORDSIZE == 32]: Declare mcontext_t inline and include altivec state for 64-bit. * sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions: Add GLIBC_2.3.4 versions for setcontext, getcontext, and swapcontext. * sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions: Add GLIBC_2.3.4 versions for setcontext, getcontext, swapcontext, and makecontext. * sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S (__getcontext): Upgrade to save Altivec regs and version GLIBC_2_3_4. [SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)](__novec_getcontext): Compatible with GLIBC_2.3.3 release. * sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S (__makecontext): Use parm save area instead of compiler_dw to hold context pointer. * sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S (__setcontext): Upgrade to restore Altivec regs and version GLIBC_2_3_4. [SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)](__novec_setcontext): Compatible with GLIBC_2.3.3 release. * sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S (__swapcontext): Upgrade to swap Altivec regs and version GLIBC_2_3_4. [SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)](__novec_swapcontext): Compatible with GLIBC_2.3.3 release. * sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.h (SIGCONTEXT_V_REGS_PTR, SIGCONTEXT_V_RESERVE): Defined. 2004-01-12 Steven Munroe <sjmunroe@us.ibm.com> * sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions: Add GLIBC_2.3.4 versions for setcontext, getcontext, swapcontext, and makecontext. * sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S (__getcontext): Upgrade to save Altivec regs and version GLIBC_2_3_4. [SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)](__novec_getcontext): Compatible with GLIBC_2.3.3 release. * sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S (__makecontext): Upgrade to align for Altivec regs and version GLIBC_2_3_4. [SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)](__novec_makecontext): Compatible with GLIBC_2.3.3 release. * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S (__setcontext): Upgrade to restore Altivec regs and version GLIBC_2_3_4. [SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)](__novec_setcontext): Compatible with GLIBC_2.3.3 release. * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S (__swapcontext): Upgrade to swap Altivec regs and version GLIBC_2_3_4. [SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)] (__novec_swapcontext): Compatible with GLIBC_2.3.3 release. * sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h: (_UC_VSCR, _UC_VRSAVE): Define. (_FRAME_BACKCHAIN, _FRAME_LR_SAVE,_FRAME_PARM_SAVE1,_FRAME_PARM_SAVE2, _FRAME_PARM_SAVE3, _FRAME_PARM_SAVE4): Defined.
2002-09-20* sysdeps/powerpc/sysdep.h: Remove powerpc32 specific macros.Roland McGrath1-108/+1
* sysdeps/powerpc/powerpc32/sysdep.h: New file. Define powerpc32 specific macros copied from sysdeps/powerpc/sysdep.h. * sysdeps/powerpc/powerpc64/sysdep.h: New file. Define powerpc64 specific macros. * sysdeps/unix/powerpc/sysdep.h: Include <bits/wordsize.h>. [__WORDSIZE==64]: Include sysdeps/powerpc/powerpc64/sysdep.h. [!__WORDSIZE==64]: Include sysdeps/powerpc/powerpc32/sysdep.h.
2001-11-052001-11-05 Roland McGrath <roland@frob.com>Roland McGrath1-2/+121
* sysdeps/powerpc/elf/sysdep.h: Remove this file, because it overrides the more-specific unix/sysv/linux/powerpc file and breaks everything. * sysdeps/powerpc/sysdep.h (ALIGNARG, ASM_TYPE_DIRECTIVE, ASM_SIZE_DIRECTIVE, CALL_MCOUNT, ENTRY, EALIGN, DO_CALL, JUMPTARGET, PSEUDO, PSEUDO_RET, PSEUDO_END, L, C_TEXT): These macros moved here here, put under [__ELF__].
2001-07-06Update to LGPL v2.1.Andreas Jaeger1-8/+8
2001-07-06 Paul Eggert <eggert@twinsun.com> * manual/argp.texi: Remove ignored LGPL copyright notice; it's not appropriate for documentation anyway. * manual/libc-texinfo.sh: "Library General Public License" -> "Lesser General Public License". 2001-07-06 Andreas Jaeger <aj@suse.de> * All files under GPL/LGPL version 2: Place under LGPL version 2.1.
1999-10-10Update.Ulrich Drepper1-0/+103
1999-10-10 Ulrich Drepper <drepper@cygnus.com> * sysdeps/powerpc/sysdep.h: New file. * sysdeps/unix/powerpc/sysdep.h: New file. * sysdeps/unix/sysv/linux/powerpc/sysdep.h: Include sysdeps/unix/powerpc/sysdep.h, not sysdeps/unix/sysdep.h. * sysdeps/powerpc/fpu/s_copysign.S: Use symbolic names for registers instead of bare numbers. * sysdeps/powerpc/fpu/s_fabs.S: Likewise. * sysdeps/powerpc/fpu/s_fmax.S: Likewise. * sysdeps/powerpc/fpu/s_fmin.S: Likewise. * sysdeps/hppa/sysdep.h: New file.