summary refs log tree commit diff
path: root/sysdeps/powerpc
Commit message (Collapse)AuthorAgeFilesLines
* PowerPC: multiarch __ieee754_hypot[f] for PowerPC32Adhemerval Zanella2013-12-067-1/+172
|
* PowerPC: multiarch logb/logbf/logbl for PowerPC32Adhemerval Zanella2013-12-0616-5/+269
|
* PowerPC: multiarch modf/modff for PowerPC32Adhemerval Zanella2013-12-067-2/+194
|
* PowerPC: multiarch lrint/lrintf for PowerPC32Adhemerval Zanella2013-12-065-1/+137
|
* PowerPC: multiarch lround/lrounf for PowerPC32Adhemerval Zanella2013-12-066-1/+176
|
* PowerPC: multiarch copysign/copysignf for PowerPC32Adhemerval Zanella2013-12-065-2/+154
|
* PowerPC: multiarch trunc/truncf for PowerPC32Adhemerval Zanella2013-12-067-1/+191
|
* PowerPC: multiarch round/roundf for PowerPC32Adhemerval Zanella2013-12-067-1/+191
|
* PowerPC: multiarch floor/floorf for PowerPC32Adhemerval Zanella2013-12-067-1/+192
|
* PowerPC: multiarch ceil/ceilf for PowerPC32Adhemerval Zanella2013-12-067-1/+191
|
* PowerPC: multiarch finite/finitef for PowerPC32Adhemerval Zanella2013-12-066-2/+184
|
* PowerPC: multiarch isinf/isinff for PowerPC32Adhemerval Zanella2013-12-066-2/+178
|
* PowerPC: multiarch isnan/isnanf for PowerPC32Adhemerval Zanella2013-12-0610-1/+283
|
* PowerPC: multiarch sqrt/sqrtf for PowerPC32Adhemerval Zanella2013-12-067-1/+188
|
* PowerPC: multiarch llround/llroundf for PowerPC32Adhemerval Zanella2013-12-066-1/+172
|
* PowerPC: multiarch llrint/llrintf for PowerPC32Adhemerval Zanella2013-12-067-0/+189
|
* PowerPC: multiarch wordcopy routines for PowerPC32Adhemerval Zanella2013-12-069-255/+203
|
* PowerPC: multiarch wcscpy for PowerPC32Adhemerval Zanella2013-12-068-6/+125
|
* PowerPC: multiarch wcsrchr for PowerPC32Adhemerval Zanella2013-12-068-6/+122
|
* PowerPC: multiarch wcschr for PowerPC32Adhemerval Zanella2013-12-068-6/+142
|
* PowerPC: multiarch strchr for PowerPC32Adhemerval Zanella2013-12-066-1/+143
|
* PowerPC: multiarch strchrnul for PowerPC32Adhemerval Zanella2013-12-065-1/+113
|
* PowerPC: multiarch strncasecmp for PowerPC32Adhemerval Zanella2013-12-066-1/+155
|
* PowerPC: multiarch strcasecmp for PowerPC32Adhemerval Zanella2013-12-066-1/+179
|
* PowerPC: multiarch strncmp for PowerPC32Adhemerval Zanella2013-12-065-1/+121
|
* PowerPC: multiarch strnlen for PowerPC32Adhemerval Zanella2013-12-066-1/+123
|
* PowerPC: multiarch strlen for PowerPC32Adhemerval Zanella2013-12-065-1/+115
|
* PowerPC: multiarch rawmemchr for PowerPC32Adhemerval Zanella2013-12-065-1/+119
|
* PowerPC: multiarch memrchr for PowerPC32Adhemerval Zanella2013-12-065-1/+111
|
* PowerPC: multiarch memchr for PowerPC32Adhemerval Zanella2013-12-065-1/+122
|
* PowerPC: multiarch mempcpy for PowerPC32Adhemerval Zanella2013-12-065-1/+114
|
* PowerPC: multiarch memset/bzero for PowerPC32Adhemerval Zanella2013-12-0611-1/+307
|
* PowerPC: multiarch memcmp for PowerPC32Adhemerval Zanella2013-12-066-1/+146
|
* PowerPC: multiarch memcpy for PowerPC32Adhemerval Zanella2013-12-068-1/+254
|
* PowerPC: initial support for multilib for PowerPC32Adhemerval Zanella2013-12-063-0/+105
| | | | | This patch add a empty Makefile, the C IFUNC helper macros, and a empty available IFUNC implementation enumeration.
* Update powerpc-fpu ULPs.Adhemerval Zanella2013-12-051-8/+2217
|
* PowerPC: Add systemtap static probe points in setjmp/longjmpAdhemerval Zanella2013-12-0511-59/+96
| | | | | | | | | This patch add static probes for setjmp/longjmp in the way gdb expects,fixing the gdb.base/longjmp.exp gdb testcases. It changes the symbol_name and use macros to to avoid change the probe names and ending up adding more logic on GDB (since with the expected name GDB work seamlessly).
* PowerPC64 ELFv2 ABI 5/6: LD_AUDIT interface changesUlrich Weigand2013-12-045-45/+163
| | | | | | | | | | | | | | | | | | | | | | | | The ELFv2 ABI changes the calling convention by passing and returning structures in registers in more cases than the old ABI: http://gcc.gnu.org/ml/gcc-patches/2013-11/msg01145.html http://gcc.gnu.org/ml/gcc-patches/2013-11/msg01147.html For the most part, this does not affect glibc, since glibc assembler files do not use structure parameters / return values. However, one place is affected: the LD_AUDIT interface provides a structure to the audit routine that contains all registers holding function argument and return values for the intercepted PLT call. Since the new ABI now sometimes uses registers to return values that were never used for this purpose in the old ABI, this structure has to be extended. To force audit routines to be modified for the new ABI if necessary, the patch defines v2 variants of the la_ppc64 types and routines. In addition, the patch contains two unrelated changes to the PLT trampoline routines: it fixes a bug where FPR return values were stored in the wrong place, and it removes the unnecessary save/restore of CR.
* PowerPC64 ELFv2 ABI 4/6: Stack frame layout changesUlrich Weigand2013-12-047-65/+109
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This updates glibc for the changes in the ELFv2 relating to the stack frame layout. These are described in more detail here: http://gcc.gnu.org/ml/gcc-patches/2013-11/msg01149.html http://gcc.gnu.org/ml/gcc-patches/2013-11/msg01146.html Specifically, the "compiler and linker doublewords" were removed, which has the effect that the save slot for the TOC register is now at offset 24 rather than 40 to the stack pointer. In addition, a function may now no longer necessarily assume that its caller has set up a 64-byte register save area its use. To address the first change, the patch goes through all assembler files and replaces immediate offsets in instructions accessing the ABI-defined stack slots by symbolic offsets. Those already were defined in ucontext_i.sym and used in some of the context routines, but that doesn't really seem like the right place for those defines. The patch instead defines those symbolic offsets in sysdeps.h, in two variants for the old and new ABI, and uses them systematically in all assembler files, not just the context routines. The second change only affected a few assembler files that used the save area to temporarily store some registers. In those cases where this happens within a leaf function, this patch changes the code to store those registers to the "red zone" below the stack pointer. Otherwise, the functions already allocate a stack frame, and the patch changes them to add extra space in these frames as temporary space for the ELFv2 ABI.
* PowerPC64 ELFv2 ABI 3/6: PLT local entry point optimizationUlrich Weigand2013-12-042-2/+50
| | | | | | | | | | | | | | | | | | | | | | | | | This is a follow-on to the previous patch to support the ELFv2 ABI in the dynamic loader, split off into its own patch since it is just an optional optimization. In the ELFv2 ABI, most functions define both a global and a local entry point; the local entry requires r2 to be already set up by the caller to point to the callee's TOC; while the global entry does not require the caller to know about the callee's TOC, but it needs to set up r12 to the callee's entry point address. Now, when setting up a PLT slot, the dynamic linker will usually need to enter the target function's global entry point. However, if the linker can prove that the target function is in the same DSO as the PLT slot itself, and the whole DSO only uses a single TOC (which the linker will let ld.so know via a DT_PPC64_OPT entry), then it is possible to actually enter the local entry point address into the PLT slot, for a slight improvement in performance. Note that this uncovered a problem on the first call via _dl_runtime_resolve, because that routine neglected to restore the caller's TOC before calling the target function for the first time, since it assumed that function would always reload its own TOC anyway ...
* PowerPC64 ELFv2 ABI 2/6: Remove function descriptorsUlrich Weigand2013-12-045-29/+138
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds support for the ELFv2 ABI feature to remove function descriptors. See this GCC patch for in-depth discussion: http://gcc.gnu.org/ml/gcc-patches/2013-11/msg01141.html This mostly involves two types of changes: updating assembler source files to the new logic, and updating the dynamic loader. After the refactoring in the previous patch, most of the assembler source changes can be handled simply by providing ELFv2 versions of the macros in sysdep.h. One somewhat non-obvious change is in __GI__setjmp: this used to "fall through" to the immediately following __setjmp ENTRY point. This is no longer safe in the ELFv2 since ENTRY defines both a global and a local entry point, and you cannot simply fall through to a global entry point as it requires r12 to be set up. Also, makecontext needs to be updated to set up registers according to the new ABI for calling into the context's start routine. The dynamic linker changes mostly consist of removing special code to handle function descriptors. We also need to support the new PLT and glink format used by the the ELFv2 linker, see: https://sourceware.org/ml/binutils/2013-10/msg00376.html In addition, the dynamic linker now verifies that the dynamic libraries it loads match its own ABI. The hack in VDSO_IFUNC_RET to "synthesize" a function descriptor for vDSO routines is also no longer necessary for ELFv2.
* PowerPC64 ELFv2 ABI 1/6: Code refactoringUlrich Weigand2013-12-044-59/+38
| | | | | | | | | | | | | | This is the first patch to support the new ELFv2 ABI in glibc. As preparation, this patch simply refactors some of the powerpc64 assembler code to move all code related to creating function descriptors (.opd section) or using function descriptors (function pointer call) into a central place in sysdep.h. Note that most locations creating .opd entries were already using macros in sysdep.h, this patch simply extends this to the remaining places. No relevant change in generated code expected.
* PowerPC64: Report overflow on @h and @ha relocationsAlan Modra2013-12-041-2/+22
| | | | | | | | | | | | | | | | | This patch updates glibc in accordance with the binutils patch checked in here: https://sourceware.org/ml/binutils/2013-10/msg00372.html This changes the various R_PPC64_..._HI and _HA relocations to report 32-bit overflows. The motivation is that existing uses of @h / @ha are to build up 32-bit offsets (for the "medium model" TOC access that GCC now defaults to), and we'd really like to see failures at link / load time rather than silent truncations. For those rare cases where a modifier is needed to build up a 64-bit constant, new relocations _HIGH / _HIGHA are supported. The patch also fixes a bug in overflow checking for the R_PPC64_ADDR30 and R_PPC64_ADDR32 relocations.
* Update powerpc-fpu ULPs.Adhemerval Zanella2013-12-041-2/+260
|
* Update powerpc-fpu ULPs.Adhemerval Zanella2013-12-021-34/+1199
|
* Add powerpc-nofpu/e500 support functions for atomic compound assignment and ↵Joseph Myers2013-11-2812-4/+340
| | | | FLT_ROUNDS.
* Fix dbl-64 e_sqrt.c for non-default rounding modes (bug 16271).Joseph Myers2013-11-283-0/+3
|
* PowerPC: Fix __fe_nomask_env missing symbolAdhemerval Zanella2013-11-266-10/+9
| | | | | This patch fix the missing symbol __fe_nomask_env from commit 41e8926aa4b7f17bc95984737ee82a254ad0911c for GLIBC_2.1.
* Fix powerpc-nofpu build.Joseph Myers2013-11-252-0/+6
|
* PowerPC: Set/restore rounding mode only when neededAdhemerval Zanella2013-11-253-4/+277
| | | | | | | | | | | | | | | | | | | | | | | | | | This patch helps some math functions performance by adding the libc_fexxx variant of inline functions to handle both FPU round and exception set/restore and by using them on the libc_fexxx_ctx functions. It is based on already coded fexxx family functions for PPC with fpu. Here is the summary of performance improvements due this patch (measured on a POWER7 machine): Before: cos(): ITERS:9.5895e+07: TOTAL:5116.03Mcy, MAX:77.6cy, MIN:49.792cy, 18744 calls/Mcy exp(): ITERS:2.827e+07: TOTAL:5187.15Mcy, MAX:494.018cy, MIN:38.422cy, 5450.01 calls/Mcy pow(): ITERS:6.1705e+07: TOTAL:5144.26Mcy, MAX:171.95cy, MIN:29.935cy, 11994.9 calls/Mcy sin(): ITERS:8.6898e+07: TOTAL:5117.06Mcy, MAX:83.841cy, MIN:46.582cy, 16982 calls/Mcy tan(): ITERS:2.9473e+07: TOTAL:5115.39Mcy, MAX:191.017cy, MIN:172.352cy, 5761.63 calls/Mcy After: cos(): ITERS:2.05265e+08: TOTAL:5111.37Mcy, MAX:78.754cy, MIN:24.196cy, 40158.5 calls/Mcy exp(): ITERS:3.341e+07: TOTAL:5170.84Mcy, MAX:476.317cy, MIN:15.574cy, 6461.23 calls/Mcy pow(): ITERS:7.6153e+07: TOTAL:5129.1Mcy, MAX:147.5cy, MIN:30.916cy, 14847.2 calls/Mcy sin(): ITERS:1.58816e+08: TOTAL:5115.11Mcy, MAX:1490.39cy, MIN:22.341cy, 31048.4 calls/Mcy tan(): ITERS:3.4964e+07: TOTAL:5114.18Mcy, MAX:177.422cy, MIN:146.115cy, 6836.68 calls/Mcy