Age | Commit message (Collapse) | Author |
|
This patches consolidates all the powerpc round{f} implementations on
the generic sysdeps/powerpc/fpu/s_round{f}. The generic implementation
uses either the compiler builts for ISA 2.03+ (which generates the
frim instruction) or a generic implementation which uses FP only
operations.
The IFUNC organization for powerpc64 is also change to be enabled only
for powerpc64 and not for powerpc64le (since minium ISA of 2.08 does not
require the fallback generic implementation).
Checked on powerpc-linux-gnu (built without --with-cpu, with
--with-cpu=power4 and with --with-cpu=power5+ and --disable-multi-arch),
powerpc64-linux-gnu (built without --with-cp and with --with-cpu=power5+
and --disable-multi-arch).
* sysdeps/powerpc/fpu/round_to_integer.h (set_fenv_mode): Add
ROUND handling.
(round_mode): Add definition for ROUND.
(round_to_integer_float): Likewise.
* sysdeps/powerpc/fpu/s_round.c: New file.
* sysdeps/powerpc/fpu/s_roundf.c: New file.
* sysdeps/powerpc/powerpc32/fpu/s_round.S: Remove file.
* sysdeps/powerpc/powerpc32/fpu/s_roundf.S: Likewise.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_round-power5+.S:
Likewise.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_round-ppc32.S:
Likewise.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_roundf-power5+.S:
Likewise.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_roundf-ppc32.S:
Likewise.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_round-power5+.c: New
file.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_round-ppc32.c:
Likewise.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_roundf-power5+.c:
Likewise.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_roundf-ppc32.c:
Likewise.
* sysdep/powerpc/powerpc32/power5+/fpu/s_round.S: Remove file.
* sysdep/powerpc/powerpc32/power5+/fpu/s_roundf.S: Likewise.
* sysdep/powerpc/powerpc64/be/fpu/multiarch/Makefile
(libm-sysdep_routines): Add s_round-power5+, s_round-ppc64,
s_roundf-power5+, and s_roundf-ppc64.
(CFLAGS-s_round-power5+.c, CFLAGS-s_roundf-power5+.c): New rule.
* sysdep/powerpc/powercp64/be/fpu/multiarch/s_round-power5+.c: New
file.
* sysdep/powerpc/powercp64/be/fpu/multiarch/s_round-ppc64.c: Likewise.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c: Move to ...
* sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_round.c: ... here.
* sysdep/powerpc/powercp64/be/fpu/multiarch/s_roundf-power5+.c: New
file.
* sysdep/powerpc/powercp64/be/fpu/multiarch/s_roundf-ppc64.c:
Likewise.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c: Move to ...
* sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_roundf.c: ... here.
* sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
(libm-sysdep_routines): Remove s_round-power5+, s_round-ppc64,
s_roundf-power5+, and s_roundf-ppc64.
* sysdep/powerpc/powerpc64/fpu/multiarch/s_round-power5+.S: Remove
file.
* sysdep/powerpc/powerpc64/fpu/multiarch/s_round-ppc64.S: Likewise.
* sysdep/powerpc/powerpc64/fpu/multiarch/s_roundf-power5+.S:
Likewise.
* sysdep/powerpc/powerpc64/fpu/multiarch/s_roundf-ppc64.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_round.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_roundf.S: Likewise.
* sysdep/powerpc/powerpc64/power5+/fpu/s_round.S: Likewise.
* sysdep/powerpc/powerpc64/power5+/fpu/s_roundf.S: Likewise.
Reviewed-by: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
|
|
* 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.
|
|
* 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.
|
|
Continuing the preparation for additional _FloatN / _FloatNx function
aliases, this patch makes powerpc libm function implementations use
libm_alias_float to define function aliases.
Tested with build-many-glibcs.py that installed stripped shared
libraries are unchanged for all its hard-float powerpc configurations.
* sysdeps/powerpc/fpu/s_cosf.c: Include <libm-alias-float.h>.
(cosf): Define using libm_alias_float.
* sysdeps/powerpc/fpu/s_fabs.S: Include <libm-alias-float.h>.
(fabsf): Define using libm_alias_float.
* sysdeps/powerpc/fpu/s_fmaf.S: Include <libm-alias-float.h>.
(fmaf): Define using libm_alias_float.
* sysdeps/powerpc/fpu/s_rintf.c: Include <libm-alias-float.h>.
(rintf): Define using libm_alias_float.
* sysdeps/powerpc/fpu/s_sinf.c: Include <libm-alias-float.h>.
(sinf): Define using libm_alias_float.
* sysdeps/powerpc/power5+/fpu/s_modff.c: Include
<libm-alias-float.h>.
(modff): Define using libm_alias_float.
* sysdeps/powerpc/power7/fpu/s_logbf.c: Include
<libm-alias-float.h>.
(logbf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/fpu/s_ceilf.S: Include
<libm-alias-float.h>.
(ceilf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/fpu/s_copysign.S: Include
<libm-alias-float.h>.
(copysignf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/fpu/s_floorf.S: Include
<libm-alias-float.h>.
(floorf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/fpu/s_llrintf.c: Include
<libm-alias-float.h>.
(llrintf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/fpu/s_llroundf.c: Include
<libm-alias-float.h>.
(llroundf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/fpu/s_lrint.S: Include
<libm-alias-float.h>.
(lrintf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/fpu/s_lround.S: Include
<libm-alias-float.h>.
(lroundf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/fpu/s_nearbyintf.S: Include
<libm-alias-float.h>.
(nearbyintf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/fpu/s_rintf.S: Include
<libm-alias-float.h>.
(rintf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/fpu/s_roundf.S: Include
<libm-alias-float.h>.
(roundf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/fpu/s_truncf.S: Include
<libm-alias-float.h>.
(truncf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_ceilf.c:
Include <libm-alias-float.h>.
(ceilf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_copysignf.c:
Include <libm-alias-float.h>.
(copysignf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf.c:
Include <libm-alias-float.h>.
(floorf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf.c:
Include <libm-alias-float.h>.
(llrintf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llroundf.c:
Include <libm-alias-float.h>.
(llroundf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf.c:
Include <libm-alias-float.h>.
(logbf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lrintf.c:
Include <libm-alias-float.h>.
(lrintf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_lroundf.c:
Include <libm-alias-float.h>.
(lroundf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff.c:
Include <libm-alias-float.h>.
(modff): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf.c:
Include <libm-alias-float.h>.
(roundf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_truncf.c:
Include <libm-alias-float.h>.
(truncf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S: Include
<libm-alias-float.h>.
(llrintf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S: Include
<libm-alias-float.h>.
(llroundf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power5+/fpu/s_ceilf.S: Include
<libm-alias-float.h>.
(ceilf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S: Include
<libm-alias-float.h>.
(floorf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S: Include
<libm-alias-float.h>.
(llroundf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S: Include
<libm-alias-float.h>.
(lroundf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power5+/fpu/s_roundf.S: Include
<libm-alias-float.h>.
(roundf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power5+/fpu/s_truncf.S: Include
<libm-alias-float.h>.
(truncf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S: Include
<libm-alias-float.h>.
(copysignf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S: Include
<libm-alias-float.h>.
(llrintf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S: Include
<libm-alias-float.h>.
(llroundf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power6x/fpu/s_lrint.S: Include
<libm-alias-float.h>.
(lrintf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc32/power6x/fpu/s_lround.S: Include
<libm-alias-float.h>.
(lroundf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c: Include
<libm-alias-float.h>.
(ceilf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c: Include
<libm-alias-float.h>.
(copysignf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_cosf.c: Include
<libm-alias-float.h>.
(cosf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c: Include
<libm-alias-float.h>.
(floorf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrintf.c: Include
<libm-alias-float.h>.
(llrintf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_llroundf.c: Include
<libm-alias-float.h>.
(llroundf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c: Include
<libm-alias-float.h>.
(logbf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c: Include
<libm-alias-float.h>.
(modff): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c: Include
<libm-alias-float.h>.
(roundf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_sinf.c: Include
<libm-alias-float.h>.
(sinf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c: Include
<libm-alias-float.h>.
(truncf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/fpu/s_ceilf.S: Include
<libm-alias-float.h>.
(ceilf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/fpu/s_copysign.S: Include
<libm-alias-float.h>.
(copysignf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/fpu/s_floorf.S: Include
<libm-alias-float.h>.
(floorf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/fpu/s_llrint.S: Include
<libm-alias-float.h>.
(llrintf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/fpu/s_llroundf.S: Include
<libm-alias-float.h>.
(llroundf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S: Include
<libm-alias-float.h>.
(nearbyintf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/fpu/s_rintf.S: Include
<libm-alias-float.h>.
(rintf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/fpu/s_roundf.S: Include
<libm-alias-float.h>.
(roundf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/fpu/s_truncf.S: Include
<libm-alias-float.h>.
(truncf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_ceilf.S: Include
<libm-alias-float.h>.
(ceilf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_floorf.S: Include
<libm-alias-float.h>.
(floorf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_llround.S: Include
<libm-alias-float.h>.
(llroundf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_roundf.S: Include
<libm-alias-float.h>.
(roundf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_truncf.S: Include
<libm-alias-float.h>.
(truncf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S: Include
<libm-alias-float.h>.
(copysignf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/power6x/fpu/s_llrint.S: Include
<libm-alias-float.h>.
(llrintf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/power6x/fpu/s_llround.S: Include
<libm-alias-float.h>.
(llroundf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/power8/fpu/s_cosf.S: Include
<libm-alias-float.h>.
(cosf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S: Include
<libm-alias-float.h>.
(llrintf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S: Include
<libm-alias-float.h>.
(llroundf): Define using libm_alias_float.
* sysdeps/powerpc/powerpc64/power8/fpu/s_sinf.S: Include
<libm-alias-float.h>.
(sinf): Define using libm_alias_float.
|
|
|
|
The powerpc32 versions of ceil, floor, round, trunc, rint, nearbyint
and their float versions return sNaN for sNaN input when they should
return qNaN. This patch fixes them to add a NaN argument to itself to
quiet sNaNs before returning. The powerpc64 versions, which have the
same bug, will be addressed separately.
Tested for powerpc32.
[BZ #20160]
* sysdeps/powerpc/powerpc32/fpu/s_ceil.S (__ceil): Add NaN
argument to itself before returning the result.
* sysdeps/powerpc/powerpc32/fpu/s_ceilf.S (__ceilf): Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_floor.S (__floor): Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_floorf.S (__floorf): Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_nearbyint.S (__nearbyint):
Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_nearbyintf.S (__nearbyintf):
Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_rint.S (__rint): Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_rintf.S (__rintf): Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_round.S (__round): Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_roundf.S (__roundf): Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_trunc.S (__trunc): Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_truncf.S (__truncf): Likewise.
|
|
|
|
The powerpc hard-float round and roundf functions, both 32-bit and
64-bit, raise spurious "inexact" exceptions for integer arguments from
adding 0.5 and rounding to integer toward zero.
Since these functions already save and restore the rounding mode, it's
natural to make them restore the full floating-point state instead to
fix this bug, which this patch does. The save of the state is moved
after the first floating-point operation on the input so that any
"invalid" exceptions from signaling NaN inputs are properly
preserved. As a consequence of this approach to the fix, "inexact"
for noninteger arguments (disallowed by TS 18661-1 but not by C99/C11,
see bug 15479) is also avoided for these implementations; this is
*not* a general fix for bug 15479 since plenty of other
implementations of various functions still raise spurious "inexact"
for noninteger arguments.
This issue and fix do not apply to builds using power5+ versions of
round and roundf, which use the frin instruction and avoid "inexact"
exceptions that way.
This patch should get hard-float powerpc32 and powerpc64 (default
function implementations) back to a state where test-float and
test-double will pass after ulps regeneration.
Tested for powerpc32 and powerpc64.
[BZ #15479]
[BZ #19238]
* sysdeps/powerpc/powerpc32/fpu/s_round.S (__round): Save
floating-point state after first operation on input. Restore full
state rather than just rounding mode.
* sysdeps/powerpc/powerpc32/fpu/s_roundf.S (__roundf): Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_round.S (__round): Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_roundf.S (__roundf): Likewise.
|
|
|
|
|
|
http://sourceware.org/ml/libc-alpha/2013-08/msg00088.html
* sysdeps/powerpc/powerpc32/fpu/s_roundf.S: Increase alignment of
constants to usual value for .cst8 section, and remove redundant
high address load.
* sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S: Use float
constant for 0x1p52. Load little-endian words of double from
correct stack offsets.
|
|
|
|
|
|
|
|
|
|
|
|
2006-01-03 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/generic/sysdep.h (cfi_same_value): Define macro.
* sysdeps/powerpc/powerpc32/dl-trampoline.S (_dl_runtime_resolve,
_dl_profile_resolve): Add CFI directives for stack and LR save.
Save LR in LRSAVE of previous frame per ABI.
* sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S: Add CFI directives
for LR save.
* sysdeps/powerpc/powerpc32/lshift.S: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S
(__makecontext, __novec_makecontext): Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_ceil.S: Add CFI directive
for LR save to register.
* sysdeps/powerpc/powerpc32/fpu/s_ceilf.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_floor.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_floorf.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_rint.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_rintf.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_round.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_roundf.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_trunc.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_truncf.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_copysign.S: Add CFI directive
for stack.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Likewise.
* sysdeps/powerpc/powerpc32/ppc-mcount.S: Add CFI directives for stack
and LR save.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S:
Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_lround.S: Likewise. Don't use
negative stack addressing.
* sysdeps/powerpc/powerpc64/dl-trampoline.S (_dl_runtime_resolve,
_dl_profile_resolve): Add CFI directives for stack and LR save.
* sysdeps/powerpc/powerpc64/fpu/s_copysign.S: Add CFI directives
for stack.
* sysdeps/powerpc/powerpc64/ppc-mcount.S (_mcount): Add CFI
directives for stack and LR save.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S (__brk): Add CFI
directives for stack.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S (__clone): Add CFI
directives for stack.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S
(__getcontext, __novec_getcontext): Add CFI directives for stack
and LR save.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S
(__makecontext): Add CFI directives for stack and LR save.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S
(__setcontext, __novec_setcontext): Add CFI directives for stack
and LR save.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S
(__swapcontext, __novec_swapcontext): Add CFI directives for stack
and LR save.
|
|
Handle prelinked libraries and binaries with new style PLT.
2005-06-07 Jakub Jelinek <jakub@redhat.com>
* elf/elf.h (R_PPC_REL16, R_PPC_REL16_LO, R_PPC_REL16_HI,
R_PPC_REL16_HA): Define.
2005-06-14 Alan Modra <amodra@bigpond.net.au>
* config.h.in (HAVE_ASM_PPC_REL16): Add.
* elf/elf.h (DT_PPC_GOT, DT_PPC_NUM): Define.
* elf/tls-macros.h (PowerPC32): Include config.h. Add variants of
TLS_IE, TLS_LD and TLS_GD for new PLT/GOT layout.
* sysdeps/powerpc/powerpc32/configure.in: New file,
* sysdeps/powerpc/powerpc32/dl-dtprocnum.h: New file.
* sysdeps/powerpc/powerpc32/dl-machine.h (DT_PPC): Define.
(ppc_got): New inline function.
(elf_machine_dynamic): Use ppc_got. Add attribute const.
(elf_machine_load_address): Add attribute const. Don't use int vars.
Use bcl rather than bl to save trashing branch target stack. Use
elf_machine_dynamic rather than duplicating code here.
(elf_machine_runtime_setup): New inline function replacing define.
Handle new PLT.
(elf_machine_fixup_plt): Handle new PLT.
(elf_machine_rela): Likewise.
* sysdeps/powerpc/powerpc32/sysdep.h: Include config.h.
(CALL_MCOUNT): Don't set up counter vars.
* sysdeps/powerpc/powerpc32/ppc-mcount.S: Correct comment.
* sysdeps/powerpc/powerpc32/elf/start.S (start_addressesp): Don't
define when HAVE_ASM_PPC_REL16.
(_start): Add HAVE_ASM_PPC_REL16 code.
* sysdeps/powerpc/powerpc32/dl-start.S (_dl_start_user): Don't bl
into the GOT when HAVE_ASM_PPC_REL16.
* sysdeps/powerpc/powerpc32/memset.S (memset): Likewise.
* sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S (__longjmp): Ditto.
* sysdeps/powerpc/powerpc32/fpu/s_ceil.S (__ceil): Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_ceilf.S (__ceilf): Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_floor.S (__floor): Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_floorf.S (__floorf): Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_lround.S (__lround): Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_rint.S (__rint): Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_rintf.S (__rintf): Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_round.S (__round): Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_roundf.S (__roundf): Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_trunc.S (__trunc): Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_truncf.S (__truncf): Likewise.
* sysdeps/powerpc/powerpc32/fpu/setjmp-common.S (__sigsetjmp):
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S (__brk): Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S
(__getcontext): Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S
(__setcontext): Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S
(__swapcontext): Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S (stackblock):
Comment.
(__socket): Bomb if NARGS >= 7. Invoke CGOTSETUP and CGOTRESTORE.
2005-06-17 Ulrich Drepper <drepper@redhat.com>
* sysdeps/posix/sigignore.c: Include <string.h> to tell the compiler
to use __GI_memset.
* sysdeps/posix/signal.c: Likewise.
* sysdeps/posix/sigset.c: Likewise.
* sysdeps/posix/sysv_signal.c: Likewise.
* sysdeps/unix/sysv/linux/sleep.c: Likewise.
* sysdeps/unix/sysv/linux/sysctl.c: Likewise.
* sysdeps/unix/sysv/linux/system.c: Likewise.
|
|
JUMPTARGET. Instead append @local to __syscall_error.
* sysdeps/powerpc/powerpc32/bsd-_setjmp.S: Delete all occurrences
of JUMPTARGET. Instead append @local to labels.
* sysdeps/powerpc/powerpc32/bsd-setjmp.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: Likewise.
* sysdeps/powerpc/powerpc32/ppc-mcount.S: Likewise.
* sysdeps/powerpc/powerpc32/setjmp-common.S: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_ceil.S: Use float constants.
* sysdeps/powerpc/powerpc32/fpu/s_floor.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_rint.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_trunc.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_lround.S: Likewise. Use one GOT
slot to access both constants.
* sysdeps/powerpc/powerpc32/fpu/s_round.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_roundf.S: Likewise.
|
|
* sysdeps/powerpc/powerpc32/fpu/s_ceilf.S (TWO23.0): Delete.
* sysdeps/powerpc/powerpc32/fpu/s_floor.S (TWO52.0): Delete.
* sysdeps/powerpc/powerpc32/fpu/s_floorf.S (TWO23.0): Delete.
* sysdeps/powerpc/powerpc32/fpu/s_lround.S: Comment typo.
(NEGZERO.0, POINTFIVE.0): Delete.
* sysdeps/powerpc/powerpc32/fpu/s_rint.S (TWO52.0): Delete.
* sysdeps/powerpc/powerpc32/fpu/s_rintf.S (TWO23.0): Delete.
* sysdeps/powerpc/powerpc32/fpu/s_round.S (__round): Code in .text.
(TWO52.0, POINTFIVE.0): Delete.
* sysdeps/powerpc/powerpc32/fpu/s_roundf.S (__roundf): Code in .text.
(TWO23.0, POINTFIVE.0): Delete.
* sysdeps/powerpc/powerpc32/fpu/s_trunc.S (__trunc): Code in .text.
(TWO52.0): Delete.
* sysdeps/powerpc/powerpc32/fpu/s_truncf.S (__truncf): Code in .text.
(TWO23.0): Delete.
* sysdeps/powerpc/powerpc32/memset.S (memset): Formatting.
|
|
2004-12-22 Steven Munroe <sjmunroe@us.ibm.com>
* math/libm-test.inc (rint_test_tonearest): New test.
(rint_test_towardzero): New test.
(rint_test_downward): New test.
(rint_test_upward): New test.
* sysdeps/powerpc/powerpc32/fpu/s_ceil.S: Fix -0.0 case.
Remove redundant const values.
* sysdeps/powerpc/powerpc32/fpu/s_ceilf.S: Fix -0.0 case.
Remove redundant const values. Use float const.
* sysdeps/powerpc/powerpc32/fpu/s_floor.S: Fix -0.0 case.
* sysdeps/powerpc/powerpc32/fpu/s_floorf.S: Fix -0.0 case.
Use float const.
* sysdeps/powerpc/powerpc32/fpu/s_rint.S: Fix -0.0 case.
* sysdeps/powerpc/powerpc32/fpu/s_rintf.S: Fix -0.0 case.
Use float const.
* sysdeps/powerpc/powerpc32/fpu/s_round.S: Fix -0.0 case.
Remove redundant const values.
* sysdeps/powerpc/powerpc32/fpu/s_roundf.S: Fix -0.0 case.
Remove redundant const values. Use float const.
* sysdeps/powerpc/powerpc32/fpu/s_trunc.S: Fix -0.0 case.
Remove redundant const values.
* sysdeps/powerpc/powerpc32/fpu/s_truncf.S: Fix -0.0 case.
Remove redundant const values. Use float const.
* sysdeps/powerpc/powerpc64/fpu/s_ceil.S: Use EALIGN for Quadword
alignment. Fix -0.0 case. Remove redundant const values.
* sysdeps/powerpc/powerpc64/fpu/s_ceilf.S: Use EALIGN for Quadword
alignment. Fix -0.0 case. Remove redundant const values.
Use float const.
* sysdeps/powerpc/powerpc64/fpu/s_floor.S: Use EALIGN for Quadword
alignment. Fix -0.0 case.
* sysdeps/powerpc/powerpc64/fpu/s_floorf.S: Use EALIGN for Quadword
alignment. Fix -0.0 case. Use float const.
* sysdeps/powerpc/powerpc64/fpu/s_rint.S: Use EALIGN for Quadword
alignment. Fix -0.0 case.
* sysdeps/powerpc/powerpc64/fpu/s_rintf.S: Use EALIGN for Quadword
alignment. Fix -0.0 case. Use float const.
* sysdeps/powerpc/powerpc64/fpu/s_round.S: Use EALIGN for Quadword
alignment. Fix -0.0 case. Remove redundant const values.
* sysdeps/powerpc/powerpc64/fpu/s_roundf.S: Use EALIGN for Quadword
alignment. Fix -0.0 case. Remove redundant const values.
Use float const.
* sysdeps/powerpc/powerpc64/fpu/s_trunc.S: Use EALIGN for Quadword
alignment. Fix -0.0 case.
* sysdeps/powerpc/powerpc64/fpu/s_truncf.S: Use EALIGN for Quadword
alignment. Fix -0.0 case. Remove redundant const values.
Use float const.
|
|
|
|
|
|
2004-06-11 Dwayne Grant McConnell <dgm69@us.ibm.com>
* sysdeps/powerpc/fpu/s_lround.c: Removed.
* sysdeps/powerpc/fpu/s_lroundf.c: Removed.
* sysdeps/powerpc/powerpc32/fpu/s_ceilf.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_ceil.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_floorf.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_floor.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_lrint.c: Removed.
* sysdeps/powerpc/powerpc32/fpu/s_lrint.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_lroundf.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_lround.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_rintf.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_rint.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_roundf.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_round.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_truncf.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_trunc.S: New file.
|