aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1997-03-08 05:28:20 +0000
committerUlrich Drepper <drepper@redhat.com>1997-03-08 05:28:20 +0000
commit4cca6b868f08e4f95a4c3786a69135676b086c50 (patch)
treeea8f4fbb6972588bc85c5979175c1e5cb6734993 /sysdeps
parentf5f52655ceb5152d79ca88db5293fa1136969303 (diff)
downloadglibc-cvs/libc-970314.tar.xz
glibc-cvs/libc-970314.zip
1997-03-08 05:30 Ulrich Drepper <drepper@cygnus.com> * argp/Makefile (routines): Add argp-eexst. * argp/argp-ba.c (argp_program_bug_address): Make `const'. * argp/argp-eexst.c: New file. Define exit status variable. * argp/argp-help.c (__argp_state_help): Use argp_err_exit_status variable instead of always exiting with value 1. * argp/argp-pv.c (argp_program_version): Make `const'. * argp/argp.h: Declare argp_err_exit_status. Patches by Miles Bader <miles@gnu.ai.mit.edu>. * locale/programs/localedef.c: Use argp_err_exit_status to terminate with correct value. * inet/rcmd.c (iruserok): Use euidaccess instead of half-hearted switching of UID before opening .rhosts. * libio/vsnprintf.c: Change implementation to follow ISO C 9X proposal. The return value now is always the number of characters which would be written if enough space is available. * manual/stdio.texi: Update description for new behaviour. * locale/locale.h (__locale_t): Don't use __locale_t for struct name and pointer to struct since old gccs cannot keep the namespaces apart. Rename struct to __locale_struct. * locale/duplocale.h: Likewise. * locale/newlocale.h: Likewise. * math/Makefile (headers): Add complex.h and cmathcalls.h. (routines): Remove w_cabs. Add conj, cimag, creal, and cabs. * math/math.h: Undefine __MATHDECL_1, __MATHDECL, and __MATHCALL after use. (signgam): Move declaration to here from mathcalls.h. * math/mathcalls.h (cabs, __cabs_complex, signgam): Remove definition. Correct comment for fmin and fmax. Start implementing complex math function from ISO C 9X. * math/complex.h: New file. * math/cmathcalls.h: New file. * math/cabs.c: New file. * math/cabsf.c: New file. * math/cabsl.c: New file. * math/cimag.c: New file. * math/cimagf.c: New file. * math/cimagl.c: New file. * math/conj.c: New file. * math/conjf.c: New file. * math/conjl.c: New file. * math/creal.c: New file. * math/crealf.c: New file. * math/creall.c: New file. * sysdeps/libm-ieee754/w_cabs.c: Removed. * sysdeps/libm-ieee754/w_cabsf.c: Removed. * sysdeps/libm-ieee754/w_cabsl.c: Removed. * posix/regex.c: Merge with regex sources from Arnold Robbins' version in GNU awk. * posix/regex.h: Likewise. Add regex test suite by Tom Lord. * posix/Makefile (distribute): Add TESTS, TESTS2C.sed, and testcases.h. (tests): Add runtests. (before-compile): Add testcases.h. (testcases.h): New rule to generate header with tests. * posix/TESTS: New file. * posix/TESTS2C.sed.: New file. * posix/runtests.c: New file. * posix/testcases.h: New file. * sysdeps/unix/sysv/linux/poll.c: Test whether poll syscall is available and use fall-back implementation if not. * sysdeps/unix/sysv/linux/syscalls.list: Sort entries. * time/ialloc.c: Update from tzcode1997c. * time/private.h: Likewise. * time/scheck.c: Likewise. * time/tzselect.ksh: Likewise. * time/zdump.c: Likewise. * time/zic.c: Likewise. * time/tzfile.c: Pretty print. 1997-03-06 07:37 Geoff Keating <geoffk@ozemail.com.au> Port to powerpc-*-linux-gnu. Slightly tested, under MkLinux, on a 601. * sysdeps/powerpc/Implies: Added. * sysdeps/powerpc/__longjmp.S: Added. * sysdeps/powerpc/__math.h: Added. * sysdeps/powerpc/bsd-_setjmp.S: Added. * sysdeps/powerpc/bsd-setjmp.S: Added. * sysdeps/powerpc/dl-machine.h: Added. * sysdeps/powerpc/ffs.c: Added. * sysdeps/powerpc/fpu_control.h: Added. * sysdeps/powerpc/jmp_buf.h: Added. * sysdeps/powerpc/setjmp.S: Added. * sysdeps/powerpc/strlen.s: Added. * sysdeps/powerpc/elf/start.c: Added. * sysdeps/powerpc/fpu_control.h: Added. * sysdeps/powerpc/jmp_buf.h: Added. * sysdeps/unix/sysv/linux/powerpc/Dist: Added. * sysdeps/unix/sysv/linux/powerpc/_exit.S: Added. * sysdeps/unix/sysv/linux/powerpc/brk.c: Added. * sysdeps/unix/sysv/linux/powerpc/clone.S: Added. * sysdeps/unix/sysv/linux/powerpc/init-first.h: Added. * sysdeps/unix/sysv/linux/powerpc/ioctl-types.h: Added. * sysdeps/unix/sysv/linux/powerpc/profil.c: Added. * sysdeps/unix/sysv/linux/powerpc/sigreturn.S: Added. * sysdeps/unix/sysv/linux/powerpc/socket.S: Added. * sysdeps/unix/sysv/linux/powerpc/syscall.S: Added. * sysdeps/unix/sysv/linux/powerpc/syscalls.list: Added. * sysdeps/unix/sysv/linux/powerpc/sysdep.c: Added. * sysdeps/unix/sysv/linux/powerpc/sysdep.h: Added. * sysdeps/unix/sysv/linux/powerpc/termbits.h: Added. * sysdeps/unix/sysv/linux/powerpc/sys/syscall.h: Added. 1997-03-05 05:24 Geoff Keating <geoffk@ozemail.com.au> * elf/dl-runtime.c (fixup): Add ELF_FIXUP_RETURNS_ADDRESS switch, because knowing the first instruction of a PowerPC PLT trampoline is not very helpful. 1997-03-04 08:04 Geoff Keating <geoffk@ozemail.com.au> * elf/dl-load.c (ELF_PREFERRED_ADDRESS, ELF_PREFERRED_ADDRESS_DATA, ELF_FIXED_ADDRESS): Added. These are for dl-machine.h to indicate a preference as to where executables should be loaded. 1997-02-28 08:50 Geoff Keating <geoffk@ozemail.com.au> * elf/elf.h: Add in all those PowerPC reloc types. 1997-02-24 07:12 Geoff Keating <geoffk@ozemail.com.au> * stdio-common/vfscanf.c: Use __va_copy if available. 1997-03-06 13:50 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * malloc/malloc.c (mprotect) [_LIBC]: Define as __mprotect to clean up namespace. 1997-03-07 14:27 Ulrich Drepper <drepper@cygnus.com> * sysdeps/libm-ieee754/s_fpclassify.c (__fpclassify): Don't use non-existing GET_WORDS macro, use EXTRACT_WORDS. Reported by Andres Schwab <schwab@issan.informatik.uni-dortmund.de>. 1997-03-07 05:27 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/i386/sigaction.c: The user- and kernel-level sigaction structure is different. handle this correctly. Bug report by Andres Jaeger <jaeger@informatik.uni-kl.de>. 1997-03-06 05:55 David Engel <david@sw.ods.com> * sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Also recognize cache entries with flag == 3. 1997-03-06 01:05 Ulrich Drepper <drepper@cygnus.com> * sysdeps/generic/netinet/in.h (INADDR_NONE): Cast to unsigned int. (INADDR_LOOPBACK): Likewise. * sysdeps/unix/sysv/linux/netinet/in.h: Likewise. * manual/socket.texi: Correct types of INADDR_* constants from unsigned long to unsigned. 1997-03-05 23:14 Ulrich Drepper <drepper@cygnus.com> * time/antarctica: Update from tzdata1997c. * time/asia: Likewise. * time/zone.tab: Likewise. 1997-03-05 00:43 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * configure.in (libc_cv_asm_symver_directive, libc_cv_ld_version_script_option): Remove unknown instruction from assembler test file. 1997-03-04 19:14 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/m68k/fpu/__math.h: Update feature tests to use __USE_ISOC9X. [__USE_ISOC9X]: Define __log2 and __exp2 inlines. (fabs): Remove defininition, it is a gcc builtin. (sqrt, __sqrt): Remove definition, they have wrappers in libm. 1997-03-04 10:11 H.J. Lu <hjl@lucon.org> * sunrpc/Makefile ($(objpfx)rpc-proto.c): Create subdir before generating file. 1997-03-05 03:59 Ulrich Drepper <drepper@cygnus.com> * inet/rcmd.c (__ivaliduser): Don't use getline, but __getline instead to avoid namespace problems. Reported by David Mosberger-Tang <davidm@AZStarNet.COM>. 1997-03-03 19:01 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * login/utmp_file.c: Fix previous change. Make portable by checking the _HAVE_UT_* feature macros. * libio/fileops.c (_IO_file_finish): Likewise.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/generic/dl-cache.c3
-rw-r--r--sysdeps/generic/netinet/in.h4
-rw-r--r--sysdeps/libm-ieee754/w_cabs.c26
-rw-r--r--sysdeps/libm-ieee754/w_cabsf.c17
-rw-r--r--sysdeps/libm-ieee754/w_cabsl.c18
-rw-r--r--sysdeps/m68k/fpu/__math.h25
-rw-r--r--sysdeps/powerpc/Implies2
-rw-r--r--sysdeps/powerpc/__longjmp.S66
-rw-r--r--sysdeps/powerpc/__math.h89
-rw-r--r--sysdeps/powerpc/bsd-_setjmp.S29
-rw-r--r--sysdeps/powerpc/dl-machine.h529
-rw-r--r--sysdeps/powerpc/elf/start.c111
-rw-r--r--sysdeps/powerpc/ffs.c38
-rw-r--r--sysdeps/powerpc/fpu_control.h77
-rw-r--r--sysdeps/powerpc/jmp_buf.h19
-rw-r--r--sysdeps/powerpc/setjmp.S66
-rw-r--r--sysdeps/powerpc/strlen.S52
-rw-r--r--sysdeps/unix/sysv/linux/i386/sigaction.c57
-rw-r--r--sysdeps/unix/sysv/linux/netinet/in.h4
-rw-r--r--sysdeps/unix/sysv/linux/poll.c16
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/Dist4
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/_exit.S26
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/brk.c47
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/clone.S74
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/init-first.h27
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/ioctl-types.h1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/profil.c2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/sigreturn.S26
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/socket.S83
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/syscall.S32
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/syscall.h357
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/syscalls.list3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/sysdep.c33
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/sysdep.h53
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/termbits.h356
-rw-r--r--sysdeps/unix/sysv/linux/syscalls.list2
36 files changed, 2275 insertions, 99 deletions
diff --git a/sysdeps/generic/dl-cache.c b/sysdeps/generic/dl-cache.c
index 7b471787f4..c704fd869d 100644
--- a/sysdeps/generic/dl-cache.c
+++ b/sysdeps/generic/dl-cache.c
@@ -77,7 +77,8 @@ _dl_load_cache_lookup (const char *name)
}
for (i = 0; i < cache->nlibs; ++i)
- if (cache->libs[i].flags == 1 && /* ELF library entry. */
+ if ((cache->libs[i].flags == 1 ||
+ cache->libs[i].flags == 3) && /* ELF library entry. */
/* Make sure string table indices are not bogus before using them. */
cache->libs[i].key < cachesize - sizeof *cache &&
cache->libs[i].value < cachesize - sizeof *cache &&
diff --git a/sysdeps/generic/netinet/in.h b/sysdeps/generic/netinet/in.h
index 5531fc2ece..a59f584085 100644
--- a/sysdeps/generic/netinet/in.h
+++ b/sysdeps/generic/netinet/in.h
@@ -128,13 +128,13 @@ struct in_addr
/* Address to send to all hosts. */
#define INADDR_BROADCAST ((unsigned) 0xffffffff)
/* Address indicating an error return. */
-#define INADDR_NONE 0xffffffff
+#define INADDR_NONE ((unsigned) 0xffffffff)
/* Network number for local host loopback. */
#define IN_LOOPBACKNET 127
/* Address to loopback in software to local host. */
#ifndef INADDR_LOOPBACK
-#define INADDR_LOOPBACK 0x7f000001 /* Internet address 127.0.0.1. */
+#define INADDR_LOOPBACK ((unsigned) 0x7f000001) /* Inet address 127.0.0.1. */
#endif
diff --git a/sysdeps/libm-ieee754/w_cabs.c b/sysdeps/libm-ieee754/w_cabs.c
deleted file mode 100644
index bf62f22be3..0000000000
--- a/sysdeps/libm-ieee754/w_cabs.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * cabs() wrapper for hypot().
- *
- * Written by J.T. Conklin, <jtc@wimsey.com>
- * Placed into the Public Domain, 1994.
- */
-
-#include <math.h>
-
-double
-__cabs(z)
- struct __cabs_complex z;
-{
- return __hypot(z.x, z.y);
-}
-weak_alias (__cabs, cabs)
-
-#ifdef NO_LONG_DOUBLE
-double
-__cabsl(z)
- struct __cabs_complexl z;
-{
- return __hypotl(z.x, z.y);
-}
-weak_alias (__cabsl, cabsl)
-#endif
diff --git a/sysdeps/libm-ieee754/w_cabsf.c b/sysdeps/libm-ieee754/w_cabsf.c
deleted file mode 100644
index 20ff5b7744..0000000000
--- a/sysdeps/libm-ieee754/w_cabsf.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * cabsf() wrapper for hypotf().
- *
- * Written by J.T. Conklin, <jtc@wimsey.com>
- * Placed into the Public Domain, 1994.
- */
-
-#include "math.h"
-#include "math_private.h"
-
-float
-__cabsf(z)
- struct __cabs_complexf z;
-{
- return __hypotf(z.x, z.y);
-}
-weak_alias (__cabsf, cabsf)
diff --git a/sysdeps/libm-ieee754/w_cabsl.c b/sysdeps/libm-ieee754/w_cabsl.c
deleted file mode 100644
index 21ef860a95..0000000000
--- a/sysdeps/libm-ieee754/w_cabsl.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * cabsl() wrapper for hypotl().
- *
- * Written by J.T. Conklin, <jtc@wimsey.com>
- * Conversion to long double by Ulrich Drepper,
- * Cygnus Support, drepper@cygnus.com.
- * Placed into the Public Domain, 1994.
- */
-
-#include <math.h>
-
-long double
-__cabsl(z)
- struct __cabs_complexl z;
-{
- return __hypotl(z.x, z.y);
-}
-weak_alias (__cabsl, cabsl)
diff --git a/sysdeps/m68k/fpu/__math.h b/sysdeps/m68k/fpu/__math.h
index 1a29a56d92..fe01c254d7 100644
--- a/sysdeps/m68k/fpu/__math.h
+++ b/sysdeps/m68k/fpu/__math.h
@@ -43,7 +43,7 @@
suffixed with f and l for the float and long double version, resp). OP
is the name of the fpu operation (without leading f). */
-#ifdef __USE_MISC
+#if defined __USE_MISC || defined __USE_ISOC9X
#define __inline_mathop(func, op) \
__inline_mathop1(double, func, op) \
__inline_mathop1(float, __CONCAT(func,f), op) \
@@ -81,7 +81,6 @@ __inline_mathop(__sin, sin)
__inline_mathop(__tan, tan)
__inline_mathop(__tanh, tanh)
__inline_mathop(__fabs, abs)
-__inline_mathop(__sqrt, sqrt)
__inline_mathop(__rint, int)
__inline_mathop(__expm1, etoxm1)
@@ -89,6 +88,9 @@ __inline_mathop(__log1p, lognp1)
__inline_mathop(__logb, log2)
__inline_mathop(__significand, getman)
+__inline_mathop(__log2, log2)
+__inline_mathop(__exp2, twotox)
+
#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__
__inline_mathop(atan, atan)
@@ -96,10 +98,8 @@ __inline_mathop(cos, cos)
__inline_mathop(sin, sin)
__inline_mathop(tan, tan)
__inline_mathop(tanh, tanh)
-__inline_mathop(fabs, abs)
-__inline_mathop(sqrt, sqrt)
-#if defined(__USE_MISC) || defined(__USE_XOPEN_EXTENDED)
+#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC9X
__inline_mathop(rint, int)
__inline_mathop(expm1, etoxm1)
__inline_mathop(log1p, lognp1)
@@ -110,6 +110,11 @@ __inline_mathop(logb, log2)
__inline_mathop(significand, getman)
#endif
+#ifdef __USE_ISOC9X
+__inline_mathop(log2, log2)
+__inline_mathop(exp2, twotox)
+#endif
+
#endif /* !__NO_MATH_INLINES && __OPTIMIZE__ */
/* This macro contains the definition for the rest of the inline
@@ -375,11 +380,13 @@ __inline_forward_c(int,finite, (double __value), (__value))
__inline_forward_c(double,scalbn, (double __x, int __n), (__x, __n))
#endif
#if defined __USE_MISC || defined __USE_XOPEN
+#ifndef __USE_ISOC9X /* Conflict with macro of same name. */
__inline_forward_c(int,isnan, (double __value), (__value))
+#endif
__inline_forward_c(int,ilogb, (double __value), (__value))
#endif
-#ifdef __USE_MISC
+#if defined __USE_MISC || defined __USE_ISOC9X
__inline_forward(float,frexpf, (float __value, int *__expptr),
(__value, __expptr))
@@ -387,11 +394,13 @@ __inline_forward_c(float,floorf, (float __x), (__x))
__inline_forward_c(float,ceilf, (float __x), (__x))
__inline_forward(float,modff, (float __value, float *__iptr),
(__value, __iptr))
+#ifdef __USE_MISC
__inline_forward_c(int,isinff, (float __value), (__value))
__inline_forward_c(int,finitef, (float __value), (__value))
__inline_forward_c(float,scalbnf, (float __x, int __n), (__x, __n))
__inline_forward_c(int,isnanf, (float __value), (__value))
__inline_forward_c(int,ilogbf, (float __value), (__value))
+#endif
__inline_forward(long double,frexpl, (long double __value, int *__expptr),
(__value, __expptr))
@@ -400,14 +409,16 @@ __inline_forward_c(long double,ceill, (long double __x), (__x))
__inline_forward(long double,modfl,
(long double __value, long double *__iptr),
(__value, __iptr))
+#ifdef __USE_MISC
__inline_forward_c(int,isinfl, (long double __value), (__value))
__inline_forward_c(int,finitel, (long double __value), (__value))
__inline_forward_c(long double,scalbnl, (long double __x, int __n),
(__x, __n))
__inline_forward_c(int,isnanl, (long double __value), (__value))
__inline_forward_c(int,ilogbl, (long double __value), (__value))
+#endif
-#endif /* __USE_MISC */
+#endif /* Use misc or ISO C9X */
#undef __inline_forward
#undef __inline_forward_c
diff --git a/sysdeps/powerpc/Implies b/sysdeps/powerpc/Implies
new file mode 100644
index 0000000000..d6acf04a82
--- /dev/null
+++ b/sysdeps/powerpc/Implies
@@ -0,0 +1,2 @@
+wordsize-32
+ieee754
diff --git a/sysdeps/powerpc/__longjmp.S b/sysdeps/powerpc/__longjmp.S
new file mode 100644
index 0000000000..928b5c540a
--- /dev/null
+++ b/sysdeps/powerpc/__longjmp.S
@@ -0,0 +1,66 @@
+/* longjmp for PowerPC.
+ Copyright (C) 1995, 1996, 1997 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 Library General Public License as
+ published by the Free Software Foundation; either version 2 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include <sysdep.h>
+#define _ASM
+#include <jmp_buf.h>
+
+ENTRY (__longjmp)
+ lwz 1,(JB_GPR1*4)(3)
+ lwz 2,(JB_GPR2*4)(3)
+ lwz 0,(JB_LR*4)(3)
+ lwz 14,((JB_GPRS+0)*4)(3)
+ lfd 14,((JB_FPRS+0*2)*4)(3)
+ lwz 15,((JB_GPRS+1)*4)(3)
+ lfd 15,((JB_FPRS+1*2)*4)(3)
+ lwz 16,((JB_GPRS+2)*4)(3)
+ lfd 16,((JB_FPRS+2*2)*4)(3)
+ lwz 17,((JB_GPRS+3)*4)(3)
+ lfd 17,((JB_FPRS+3*2)*4)(3)
+ lwz 18,((JB_GPRS+4)*4)(3)
+ lfd 18,((JB_FPRS+4*2)*4)(3)
+ lwz 19,((JB_GPRS+5)*4)(3)
+ lfd 19,((JB_FPRS+5*2)*4)(3)
+ lwz 20,((JB_GPRS+6)*4)(3)
+ lfd 20,((JB_FPRS+6*2)*4)(3)
+ mtlr 0
+ lwz 21,((JB_GPRS+7)*4)(3)
+ lfd 21,((JB_FPRS+7*2)*4)(3)
+ lwz 22,((JB_GPRS+8)*4)(3)
+ lfd 22,((JB_FPRS+8*2)*4)(3)
+ lwz 23,((JB_GPRS+9)*4)(3)
+ lfd 23,((JB_FPRS+9*2)*4)(3)
+ lwz 24,((JB_GPRS+10)*4)(3)
+ lfd 24,((JB_FPRS+10*2)*4)(3)
+ lwz 25,((JB_GPRS+11)*4)(3)
+ lfd 25,((JB_FPRS+11*2)*4)(3)
+ lwz 26,((JB_GPRS+12)*4)(3)
+ lfd 26,((JB_FPRS+12*2)*4)(3)
+ lwz 27,((JB_GPRS+13)*4)(3)
+ lfd 27,((JB_FPRS+13*2)*4)(3)
+ lwz 28,((JB_GPRS+14)*4)(3)
+ lfd 28,((JB_FPRS+14*2)*4)(3)
+ lwz 29,((JB_GPRS+15)*4)(3)
+ lfd 29,((JB_FPRS+15*2)*4)(3)
+ lwz 30,((JB_GPRS+16)*4)(3)
+ lfd 30,((JB_FPRS+16*2)*4)(3)
+ lwz 31,((JB_GPRS+17)*4)(3)
+ lfd 31,((JB_FPRS+17*2)*4)(3)
+ blr
+END (__longjmp)
diff --git a/sysdeps/powerpc/__math.h b/sysdeps/powerpc/__math.h
new file mode 100644
index 0000000000..9dc19a91a5
--- /dev/null
+++ b/sysdeps/powerpc/__math.h
@@ -0,0 +1,89 @@