about summary refs log tree commit diff
path: root/sysdeps/powerpc
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2002-09-05 10:28:51 +0000
committerUlrich Drepper <drepper@redhat.com>2002-09-05 10:28:51 +0000
commit92b27c7470ca2844e4e1265746cb56ad1f664df3 (patch)
tree989027a0a57d82034206d3e2bbb7a4151dd2e24f /sysdeps/powerpc
parent75e4a282218ce382d0fb3ff1ffef2108dd84fcce (diff)
downloadglibc-92b27c7470ca2844e4e1265746cb56ad1f664df3.tar.gz
glibc-92b27c7470ca2844e4e1265746cb56ad1f664df3.tar.xz
glibc-92b27c7470ca2844e4e1265746cb56ad1f664df3.zip
Update.
2002-07-29  Steven Munroe  <sjmunroe@us.ibm.com>

	* sysdeps/powerpc/__longjmp.S: Moved to...
	* sysdeps/powerpc/powerpc32/__longjmp.S: ...here.
	* sysdeps/powerpc/add_n.S: Moved to...
	* sysdeps/powerpc/powerpc32/add_n.S: ...here.
	* sysdeps/powerpc/addmul_1.S: Moved to...
	* sysdeps/powerpc/powerpc32/addmul_1.S: ...here.
	* sysdeps/powerpc/atomicity.h: Moved to...
	* sysdeps/powerpc/powerpc32/atomicity.h: ...here.
	* sysdeps/powerpc/backtrace.c: Moved to...
	* sysdeps/powerpc/powerpc32/backtrace.c: ...here.
	* sysdeps/powerpc/bp-asm.h: Moved to...
	* sysdeps/powerpc/powerpc32/bp-asm.h: ...here.
	* sysdeps/powerpc/bsd-_setjmp.S: Moved to...
	* sysdeps/powerpc/powerpc32/bsd-_setjmp.S: ...here.
	* sysdeps/powerpc/bsd-setjmp.S: Moved to...
	* sysdeps/powerpc/powerpc32/bsd-setjmp.S: ...here.
	* sysdeps/powerpc/dl-machine.c: Moved to...
	* sysdeps/powerpc/powerpc32/dl-machine.c: ...here.
	* sysdeps/powerpc/dl-machine.h: Moved to...
	* sysdeps/powerpc/powerpc32/dl-machine.h: ...here.
	* sysdeps/powerpc/dl-start.S: Moved to...
	* sysdeps/powerpc/powerpc32/dl-start.S: ...here.
	* sysdeps/powerpc/gprrest0.S: Moved to...
	* sysdeps/powerpc/powerpc32/gprrest0.S: ...here.
	* sysdeps/powerpc/gprrest1.S: Moved to...
	* sysdeps/powerpc/powerpc32/gprrest1.S: ...here.
	* sysdeps/powerpc/gprsave0.S: Moved to...
	* sysdeps/powerpc/powerpc32/gprsave0.S: ...here.
	* sysdeps/powerpc/gprsave1.S: Moved to...
	* sysdeps/powerpc/powerpc32/gprsave1.S: ...here.
	* sysdeps/powerpc/lshift.S: Moved to...
	* sysdeps/powerpc/powerpc32/lshift.S: ...here.
	* sysdeps/powerpc/memset.S: Moved to...
	* sysdeps/powerpc/powerpc32/memset.S: ...here.
	* sysdeps/powerpc/mul_1.S: Moved to...
	* sysdeps/powerpc/powerpc32/mul_1.S: ...here.
	* sysdeps/powerpc/ppc-mcount.S: Moved to...
	* sysdeps/powerpc/powerpc32/ppc-mcount.S: ...here.
	* sysdeps/powerpc/register-dump.h: Moved to...
	* sysdeps/powerpc/powerpc32/register-dump.h: ...here.
	* sysdeps/powerpc/rshift.S: Moved to...
	* sysdeps/powerpc/powerpc32/rshift.S: ...here.
	* sysdeps/powerpc/setjmp.S: Moved to...
	* sysdeps/powerpc/powerpc32/setjmp.S: ...here.
	* sysdeps/powerpc/stpcpy.S: Moved to...
	* sysdeps/powerpc/powerpc32/stpcpy.S: ...here.
	* sysdeps/powerpc/strchr.S: Moved to...
	* sysdeps/powerpc/powerpc32/strchr.S: ...here.
	* sysdeps/powerpc/strcmp.S: Moved to...
	* sysdeps/powerpc/powerpc32/strcmp.S: ...here.
	* sysdeps/powerpc/strcpy.S: Moved to...
	* sysdeps/powerpc/powerpc32/strcpy.S: ...here.
	* sysdeps/powerpc/strlen.S: Moved to...
	* sysdeps/powerpc/powerpc32/strlen.S: ...here.
	* sysdeps/powerpc/sub_n.S: Moved to...
	* sysdeps/powerpc/powerpc32/sub_n.S: ...here.
	* sysdeps/powerpc/submul_1.S: Moved to...
	* sysdeps/powerpc/powerpc32/submul_1.S: ...here.
	* sysdeps/powerpc/elf/bzero.S: Moved to...
	* sysdeps/powerpc/powerpc32/elf/bzero.S: ...here.
	* sysdeps/powerpc/elf/start.S: Moved to...
	* sysdeps/powerpc/powerpc32/elf/start.S: ...here.
	* sysdeps/powerpc/fpu/__longjmp.S: Moved to...
	* sysdeps/powerpc/powerpc32/fpu/__longjmp.S: ...here.
	* sysdeps/powerpc/fpu/fprrest.S: Moved to...
	* sysdeps/powerpc/powerpc32/fpu/fprrest.S: ...here.
	* sysdeps/powerpc/fpu/fprsave.S: Moved to...
	* sysdeps/powerpc/powerpc32/fpu/fprsave.S: ...here.
	* sysdeps/powerpc/fpu/setjmp.S: Moved to...
	* sysdeps/powerpc/powerpc32/fpu/setjmp.S: ...here.
	* sysdeps/powerpc/fpu/s_copysign.S: Moved to...
	* sysdeps/powerpc/powerpc32/fpu/s_copysign.S: ...here.
	* sysdeps/powerpc/fpu/s_copysignf.S: Moved to...
	* sysdeps/powerpc/powerpc32/fpu/s_copysignf.S: ...here.
	* sysdeps/unix/sysv/linux/powerpc/brk.S: Moved to...
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S: ...here.
	* sysdeps/unix/sysv/linux/powerpc/clone.S: Moved to...
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: ...here.
	* sysdeps/unix/sysv/linux/powerpc/glob64.c: Moved to...
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/glob64.c: ...here.
	* sysdeps/unix/sysv/linux/powerpc/kernel_stat.h: Moved to...
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/kernel_stat.h: ...here.
	* sysdeps/unix/sysv/linux/powerpc/socket.S: Moved to...
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/socket.S: ...here.
	* sysdeps/unix/sysv/linux/powerpc/sysdep.h: Moved to...
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h: ...here.
	* sysdeps/unix/sysv/linux/powerpc/syscalls.list: Moved to...
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list: ...here.
	Support PowerPC64.  Separate powerpc into powerpc/powerpc32 and
	powerpc/powerpc64.

2002-07-29  Steven Munroe  <sjmunroe@us.ibm.com>

	* FAQ.in: Add powerpc64 to supported targets list. Also state the
	minimum gcc version is 3.2
	* README: Add powerpc64 to supported targets list.
	* configure.in: Change machine=powerpc to machine=powerpc/powerpc32.
	Add powerpc64 and machine=powerpc/powerpc64.
	(HAVE_ASM_GLOBAL_DOT_NAME): Define if linux*powerpc/powerpc64*.
	* shlib-versions: Set DEFAULT version to 2.2.5 for powerpc64.
	* sysdeps/powerpc/Dist: Remove dl-machine.c, dl-start.S, ppc-mcount.S,
	gprsave1.S, gprsave0.S, gprrest1.S, and gprrest0.S.
	* sysdeps/powerpc/powerpc32/Dist: New file.
	* sysdeps/powerpc/Implies: Remove wordsize-32 and powerpc/soft-fp.
	* sysdeps/powerpc/powerpc32/Implies: New file.
	* sysdeps/powerpc/Makefile(cflags): Remove powerpc32 specific cflags.
	($(with-fp) = no): Move test to powerpc32/Makefile.
	($(subdir) = misc): Move to powerpc32/Makefile.
	($(build-shared) = yes): Move to powerpc32/Makefile.
	($(subdir) = csu): Move to powerpc32/Makefile.
	(sysdep-rtld-routines): Remove dl-start.  Moved these bits to ...
	* sysdeps/powerpc/powerpc32/Makefile: New file.
	* sysdeps/powerpc/Versions: Remove libgcc functions.
	* sysdeps/powerpc/powerpc32/Versions: New file.
	* sysdeps/powerpc/fpu/Makefile: Remove fprsave and fprrest.
	* sysdeps/powerpc/powerpc32/fpu/Makefile: New file.
	* sysdeps/unix/sysv/linux/configure.in (powerpc*):
	Set arch_minimum_kernel=2.4.19 for powerpc/powerpc64. Also set
	libc_cv_gcc_unwind_find_fde=yes only if !powerpc/powerpc64.
	($machine): Add powerpc/powerpc64 to if ... | for
	libc_cv_slibdir=/libc64.
	(powerpc*): Set ldd_rewrite_script.
	* sysdeps/unix/sysv/linux/powerpc/ldd-rewrite.sed: New file.
	* sysdeps/unix/sysv/linux/powerpc/Dist: Remove clone.S.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/Dist: New file.
	Add clone.S.
	* sysdeps/unix/sysv/linux/powerpc/Makefile: Remove oldgetrlimit64.
	* sysdeps/unix/sysv/linux/powerpc/Versions: Remove GLIBC_2.0
	functions.  Remove GLIBC_2.2 functions except getrlimit and
	setrlimit.  Moved them to ...
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions: New file.

2002-09-04  Ulrich Drepper  <drepper@redhat.com>

	* libio/tst-atime.c: Include <errno.h>.
	(do_test): Only perform fstatvfs check if ST_NOATIME is defined.

2002-09-03  Isamu Hasegawa  <isamu@yamato.ibm.com>

	* posix/regcomp.c (regcomp): Append "__restrict" modifier to avoid
	warnings of some compilers.
	(build_collating_symbol): Change the type of characters from
	"unsigned char"	to "char", and append a cast to "char*" pointer in
	array subscript.
	(build_collating_symbol): Likewise.
	(build_equiv_class): Likewise.
	(build_charclass): Likewise.
	(re_compile_pattern): Remove incorrect cast.
	(re_compile_fastmap_iter): Change the type of characters from
	"unsigned char"	to "char", and append a cast to "char*" pointer
	in array subscript.
	(parse_bracket_exp): Likewise.
	* posix/regex_internal.c (re_string_construct_common): Likewise.
	(re_string_allocate): Likewise.
	(re_string_construct): Likewise.
	(re_string_realloc_buffers): Likewise.
	(build_wcs_buffer): Likewise.
	(re_string_reconstruct): Likewise.
	* posix/regex_internal.h: Change the type of characters in
	re_string_t and bracket_elem_t from "unsigned char" to "char".
	* posix/regexec.c (regexec): Append "__restrict" modifier to avoid
	warnings of some compilers.
	(transit_state_bkref_loop): Change the type of characters from
	"unsigned char"	to "char", and append a cast to "char*" pointer in
	array subscript.
	(check_node_accept_bytes): Likewise.
	(find_collation_sequence_value): Likewise.
Diffstat (limited to 'sysdeps/powerpc')
-rw-r--r--sysdeps/powerpc/Implies2
-rw-r--r--sysdeps/powerpc/Makefile44
-rw-r--r--sysdeps/powerpc/Versions32
-rw-r--r--sysdeps/powerpc/fpu/Makefile3
-rw-r--r--sysdeps/powerpc/powerpc32/Dist (renamed from sysdeps/powerpc/Dist)0
-rw-r--r--sysdeps/powerpc/powerpc32/Implies2
-rw-r--r--sysdeps/powerpc/powerpc32/Makefile48
-rw-r--r--sysdeps/powerpc/powerpc32/Versions34
-rw-r--r--sysdeps/powerpc/powerpc32/__longjmp.S (renamed from sysdeps/powerpc/__longjmp.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/add_n.S (renamed from sysdeps/powerpc/add_n.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/addmul_1.S (renamed from sysdeps/powerpc/addmul_1.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/atomicity.h (renamed from sysdeps/powerpc/atomicity.h)0
-rw-r--r--sysdeps/powerpc/powerpc32/backtrace.c (renamed from sysdeps/powerpc/backtrace.c)0
-rw-r--r--sysdeps/powerpc/powerpc32/bp-asm.h (renamed from sysdeps/powerpc/bp-asm.h)0
-rw-r--r--sysdeps/powerpc/powerpc32/bsd-_setjmp.S (renamed from sysdeps/powerpc/bsd-_setjmp.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/bsd-setjmp.S (renamed from sysdeps/powerpc/bsd-setjmp.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/divdi3.c (renamed from sysdeps/powerpc/divdi3.c)0
-rw-r--r--sysdeps/powerpc/powerpc32/dl-machine.c (renamed from sysdeps/powerpc/dl-machine.c)0
-rw-r--r--sysdeps/powerpc/powerpc32/dl-machine.h (renamed from sysdeps/powerpc/dl-machine.h)0
-rw-r--r--sysdeps/powerpc/powerpc32/dl-start.S (renamed from sysdeps/powerpc/dl-start.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/elf/bzero.S (renamed from sysdeps/powerpc/elf/bzero.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/elf/start.S (renamed from sysdeps/powerpc/elf/start.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/Makefile3
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/__longjmp.S (renamed from sysdeps/powerpc/fpu/__longjmp.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/fprrest.S (renamed from sysdeps/powerpc/fpu/fprrest.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/fprsave.S (renamed from sysdeps/powerpc/fpu/fprsave.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_copysign.S (renamed from sysdeps/powerpc/fpu/s_copysign.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/s_copysignf.S (renamed from sysdeps/powerpc/fpu/s_copysignf.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/setjmp.S (renamed from sysdeps/powerpc/fpu/setjmp.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/gprrest0.S (renamed from sysdeps/powerpc/gprrest0.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/gprrest1.S (renamed from sysdeps/powerpc/gprrest1.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/gprsave0.S (renamed from sysdeps/powerpc/gprsave0.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/gprsave1.S (renamed from sysdeps/powerpc/gprsave1.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/libgcc-compat.S (renamed from sysdeps/powerpc/libgcc-compat.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/lshift.S (renamed from sysdeps/powerpc/lshift.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/memset.S (renamed from sysdeps/powerpc/memset.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/mul_1.S (renamed from sysdeps/powerpc/mul_1.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/ppc-mcount.S (renamed from sysdeps/powerpc/ppc-mcount.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/register-dump.h (renamed from sysdeps/powerpc/register-dump.h)0
-rw-r--r--sysdeps/powerpc/powerpc32/rshift.S (renamed from sysdeps/powerpc/rshift.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/setjmp.S (renamed from sysdeps/powerpc/setjmp.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/stpcpy.S (renamed from sysdeps/powerpc/stpcpy.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/strchr.S (renamed from sysdeps/powerpc/strchr.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/strcmp.S (renamed from sysdeps/powerpc/strcmp.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/strcpy.S (renamed from sysdeps/powerpc/strcpy.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/strlen.S (renamed from sysdeps/powerpc/strlen.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/sub_n.S (renamed from sysdeps/powerpc/sub_n.S)0
-rw-r--r--sysdeps/powerpc/powerpc32/submul_1.S (renamed from sysdeps/powerpc/submul_1.S)0
48 files changed, 89 insertions, 79 deletions
diff --git a/sysdeps/powerpc/Implies b/sysdeps/powerpc/Implies
index 7009ffeada..12ca48b4c9 100644
--- a/sysdeps/powerpc/Implies
+++ b/sysdeps/powerpc/Implies
@@ -1,4 +1,2 @@
-wordsize-32
 ieee754/flt-32
 ieee754/dbl-64
-powerpc/soft-fp
diff --git a/sysdeps/powerpc/Makefile b/sysdeps/powerpc/Makefile
index 0737f6f2d3..befa9c3bb7 100644
--- a/sysdeps/powerpc/Makefile
+++ b/sysdeps/powerpc/Makefile
@@ -1,51 +1,11 @@
 # We always want to use the new mnemonic syntax even if we are on a RS6000
 # machine.
-+cflags += -mnew-mnemonics -Wa,-mppc -mpowerpc
-asm-CPPFLAGS += -Wa,-mppc
-
-ifeq ($(with-fp),no)
-+cflags += -msoft-float
-sysdep-LDFLAGS += -msoft-float
-endif
++cflags += -mnew-mnemonics
 
 ifeq ($(subdir),gmon)
 sysdep_routines += ppc-mcount
 endif
 
-ifeq ($(subdir),misc)
-sysdep_routines += gprsave0 gprrest0 gprsave1 gprrest1
-endif
-
-# On PPC, -fpic works until the GOT contains 2^15 bytes, and possibly
-# more depending on how clever the linker is.  Each GOT entry takes 4 bytes,
-# so that's at least 8192 entries.  Since libc only uses about 2000 entries,
-# we want to use -fpic, because this generates fewer relocs.
-ifeq (yes,$(build-shared))
-pic-ccflag = -fpic
-endif
-
-ifeq ($(subdir),csu)
-ifneq ($(elf),no)
-# The initfini generation code doesn't work in the presence of -fPIC, so
-# we use -fpic instead which is much better.
-CFLAGS-initfini.s = -g0 -fpic -O1
-
-# There is no benefit to using sdata for these objects, and the user
-# of the library should be able to control what goes into sdata.
-CFLAGS-init.o = -G0
-CFLAGS-gmon-start.o = -G0
-endif
-ifeq (yes,$(build-shared))
-# Compatibility
-ifeq (yes,$(have-protected))
-CPPFLAGS-divdi3.c = -DHAVE_DOT_HIDDEN
-CPPFLAGS-libgcc-compat.S = -DHAVE_DOT_HIDDEN
-endif
-sysdep_routines += divdi3 libgcc-compat
-shared-only-routines += divdi3 libgcc-compat
-endif
-endif
-
 ifeq ($(subdir),string)
 CFLAGS-memcmp.c += -Wno-uninitialized
 endif
@@ -55,5 +15,5 @@ ifeq ($(subdir),elf)
 sysdep-dl-routines += dl-machine
 sysdep_routines += dl-machine
 # extra shared linker files to link only into dl-allobjs.so
-sysdep-rtld-routines += dl-machine dl-start
+sysdep-rtld-routines += dl-machine
 endif
diff --git a/sysdeps/powerpc/Versions b/sysdeps/powerpc/Versions
index e26809a3c7..b7d5bf904b 100644
--- a/sysdeps/powerpc/Versions
+++ b/sysdeps/powerpc/Versions
@@ -1,38 +1,6 @@
-libc {
-  GLIBC_2.0 {
-    # Functions from libgcc.
-    __divdi3; __moddi3; __udivdi3; __umoddi3;
-    __cmpdi2; __ucmpdi2;
-    __ashldi3; __ashrdi3; __lshrdi3;
-    __fixdfdi; __fixunsdfdi;
-    __fixsfdi; __fixunssfdi;
-    __floatdidf; __floatdisf;
-  }
-}
-
 libm {
   GLIBC_2.1 {
     # symbols used in macros from sysdeps/powerpc/bits/fenv.h
     __fe_dfl_env; __fe_enabled_env; __fe_nonieee_env; __fe_nomask_env;
   }
-  GLIBC_2.2 {
-    # Special functions to save and restore registers used by the
-    # runtime libraries.
-    _restgpr0_13; _restgpr0_14; _restgpr0_15; _restgpr0_16; _restgpr0_17;
-    _restgpr0_18; _restgpr0_19; _restgpr0_20; _restgpr0_21; _restgpr0_22;
-    _restgpr0_22; _restgpr0_23; _restgpr0_24; _restgpr0_25; _restgpr0_26;
-    _restgpr0_27; _restgpr0_28; _restgpr0_29; _restgpr0_30; _restgpr0_31;
-    _savegpr0_13; _savegpr0_14; _savegpr0_15; _savegpr0_16; _savegpr0_17;
-    _savegpr0_18; _savegpr0_19; _savegpr0_20; _savegpr0_21; _savegpr0_22;
-    _savegpr0_22; _savegpr0_23; _savegpr0_24; _savegpr0_25; _savegpr0_26;
-    _savegpr0_27; _savegpr0_28; _savegpr0_29; _savegpr0_30; _savegpr0_31;
-    _restgpr1_13; _restgpr1_14; _restgpr1_15; _restgpr1_16; _restgpr1_17;
-    _restgpr1_18; _restgpr1_19; _restgpr1_20; _restgpr1_21; _restgpr1_22;
-    _restgpr1_22; _restgpr1_23; _restgpr1_24; _restgpr1_25; _restgpr1_26;
-    _restgpr1_27; _restgpr1_28; _restgpr1_29; _restgpr1_30; _restgpr1_31;
-    _savegpr1_13; _savegpr1_14; _savegpr1_15; _savegpr1_16; _savegpr1_17;
-    _savegpr1_18; _savegpr1_19; _savegpr1_20; _savegpr1_21; _savegpr1_22;
-    _savegpr1_22; _savegpr1_23; _savegpr1_24; _savegpr1_25; _savegpr1_26;
-    _savegpr1_27; _savegpr1_28; _savegpr1_29; _savegpr1_30; _savegpr1_31;
-  }
 }
diff --git a/sysdeps/powerpc/fpu/Makefile b/sysdeps/powerpc/fpu/Makefile
index 391cf3caf9..bf2ed92e7b 100644
--- a/sysdeps/powerpc/fpu/Makefile
+++ b/sysdeps/powerpc/fpu/Makefile
@@ -1,6 +1,3 @@
 ifeq ($(subdir),math)
 libm-support += fenv_const fe_nomask t_sqrt
 endif
-ifeq ($(subdir),misc)
-sysdep_routines += fprsave fprrest
-endif
diff --git a/sysdeps/powerpc/Dist b/sysdeps/powerpc/powerpc32/Dist
index ef137361a4..ef137361a4 100644
--- a/sysdeps/powerpc/Dist
+++ b/sysdeps/powerpc/powerpc32/Dist
diff --git a/sysdeps/powerpc/powerpc32/Implies b/sysdeps/powerpc/powerpc32/Implies
new file mode 100644
index 0000000000..9ef3ac175b
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/Implies
@@ -0,0 +1,2 @@
+wordsize-32
+powerpc/soft-fp
diff --git a/sysdeps/powerpc/powerpc32/Makefile b/sysdeps/powerpc/powerpc32/Makefile
new file mode 100644
index 0000000000..d687ab4c85
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/Makefile
@@ -0,0 +1,48 @@
+# Powerpc32 specific build options.
+
++cflags += -Wa,-mppc -mpowerpc
+asm-CPPFLAGS += -Wa,-mppc
+
+ifeq ($(with-fp),no)
++cflags += -msoft-float
+sysdep-LDFLAGS += -msoft-float
+endif
+
+ifeq ($(subdir),misc)
+sysdep_routines += gprsave0 gprrest0 gprsave1 gprrest1
+endif
+
+# On PPC, -fpic works until the GOT contains 215 bytes, and possibly
+# more depending on how clever the linker is.  Each GOT entry takes 4 bytes,
+# so that's at least 8192 entries.  Since libc only uses about 2000 entries,
+# we want to use -fpic, because this generates fewer relocs.
+ifeq (yes,$(build-shared))
+pic-ccflag = -fpic
+endif
+
+ifeq ($(subdir),csu)
+ifneq ($(elf),no)
+# The initfini generation code doesn't work in the presence of -fPIC, so
+# we use -fpic instead which is much better.
+CFLAGS-initfini.s = -g0 -fpic -O1
+
+# There is no benefit to using sdata for these objects, and the user
+# of the library should be able to control what goes into sdata.
+CFLAGS-init.o = -G0
+CFLAGS-gmon-start.o = -G0
+endif
+ifeq (yes,$(build-shared))
+# Compatibility
+ifeq (yes,$(have-protected))
+CPPFLAGS-divdi3.c = -DHAVE_DOT_HIDDEN
+CPPFLAGS-libgcc-compat.S = -DHAVE_DOT_HIDDEN
+endif
+sysdep_routines += divdi3 libgcc-compat
+shared-only-routines += divdi3 libgcc-compat
+endif
+endif
+
+ifeq ($(subdir),elf)
+# extra shared linker files to link only into dl-allobjs.so
+sysdep-rtld-routines += dl-start
+endif
diff --git a/sysdeps/powerpc/powerpc32/Versions b/sysdeps/powerpc/powerpc32/Versions
new file mode 100644
index 0000000000..3635c4a4a1
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/Versions
@@ -0,0 +1,34 @@
+libc {
+  GLIBC_2.0 {
+    # Functions from libgcc.
+    __divdi3; __moddi3; __udivdi3; __umoddi3;
+    __cmpdi2; __ucmpdi2;
+    __ashldi3; __ashrdi3; __lshrdi3;
+    __fixdfdi; __fixunsdfdi;
+    __fixsfdi; __fixunssfdi;
+    __floatdidf; __floatdisf;
+  }
+}
+
+libm {
+  GLIBC_2.2 {
+    # Special functions to save and restore registers used by the
+    # runtime libraries.
+    _restgpr0_13; _restgpr0_14; _restgpr0_15; _restgpr0_16; _restgpr0_17;
+    _restgpr0_18; _restgpr0_19; _restgpr0_20; _restgpr0_21; _restgpr0_22;
+    _restgpr0_22; _restgpr0_23; _restgpr0_24; _restgpr0_25; _restgpr0_26;
+    _restgpr0_27; _restgpr0_28; _restgpr0_29; _restgpr0_30; _restgpr0_31;
+    _savegpr0_13; _savegpr0_14; _savegpr0_15; _savegpr0_16; _savegpr0_17;
+    _savegpr0_18; _savegpr0_19; _savegpr0_20; _savegpr0_21; _savegpr0_22;
+    _savegpr0_22; _savegpr0_23; _savegpr0_24; _savegpr0_25; _savegpr0_26;
+    _savegpr0_27; _savegpr0_28; _savegpr0_29; _savegpr0_30; _savegpr0_31;
+    _restgpr1_13; _restgpr1_14; _restgpr1_15; _restgpr1_16; _restgpr1_17;
+    _restgpr1_18; _restgpr1_19; _restgpr1_20; _restgpr1_21; _restgpr1_22;
+    _restgpr1_22; _restgpr1_23; _restgpr1_24; _restgpr1_25; _restgpr1_26;
+    _restgpr1_27; _restgpr1_28; _restgpr1_29; _restgpr1_30; _restgpr1_31;
+    _savegpr1_13; _savegpr1_14; _savegpr1_15; _savegpr1_16; _savegpr1_17;
+    _savegpr1_18; _savegpr1_19; _savegpr1_20; _savegpr1_21; _savegpr1_22;
+    _savegpr1_22; _savegpr1_23; _savegpr1_24; _savegpr1_25; _savegpr1_26;
+    _savegpr1_27; _savegpr1_28; _savegpr1_29; _savegpr1_30; _savegpr1_31;
+  }
+}
diff --git a/sysdeps/powerpc/__longjmp.S b/sysdeps/powerpc/powerpc32/__longjmp.S
index c9d2a2d02d..c9d2a2d02d 100644
--- a/sysdeps/powerpc/__longjmp.S
+++ b/sysdeps/powerpc/powerpc32/__longjmp.S
diff --git a/sysdeps/powerpc/add_n.S b/sysdeps/powerpc/powerpc32/add_n.S
index 89e1a30c14..89e1a30c14 100644
--- a/sysdeps/powerpc/add_n.S
+++ b/sysdeps/powerpc/powerpc32/add_n.S
diff --git a/sysdeps/powerpc/addmul_1.S b/sysdeps/powerpc/powerpc32/addmul_1.S
index 98fad2b8e2..98fad2b8e2 100644
--- a/sysdeps/powerpc/addmul_1.S
+++ b/sysdeps/powerpc/powerpc32/addmul_1.S
diff --git a/sysdeps/powerpc/atomicity.h b/sysdeps/powerpc/powerpc32/atomicity.h
index a3f672e5ec..a3f672e5ec 100644
--- a/sysdeps/powerpc/atomicity.h
+++ b/sysdeps/powerpc/powerpc32/atomicity.h
diff --git a/sysdeps/powerpc/backtrace.c b/sysdeps/powerpc/powerpc32/backtrace.c
index 118f0d6175..118f0d6175 100644
--- a/sysdeps/powerpc/backtrace.c
+++ b/sysdeps/powerpc/powerpc32/backtrace.c
diff --git a/sysdeps/powerpc/bp-asm.h b/sysdeps/powerpc/powerpc32/bp-asm.h
index b3bbba7574..b3bbba7574 100644
--- a/sysdeps/powerpc/bp-asm.h
+++ b/sysdeps/powerpc/powerpc32/bp-asm.h
diff --git a/sysdeps/powerpc/bsd-_setjmp.S b/sysdeps/powerpc/powerpc32/bsd-_setjmp.S
index ddd78d3628..ddd78d3628 100644
--- a/sysdeps/powerpc/bsd-_setjmp.S
+++ b/sysdeps/powerpc/powerpc32/bsd-_setjmp.S
diff --git a/sysdeps/powerpc/bsd-setjmp.S b/sysdeps/powerpc/powerpc32/bsd-setjmp.S
index 3dba8babb0..3dba8babb0 100644
--- a/sysdeps/powerpc/bsd-setjmp.S
+++ b/sysdeps/powerpc/powerpc32/bsd-setjmp.S
diff --git a/sysdeps/powerpc/divdi3.c b/sysdeps/powerpc/powerpc32/divdi3.c
index 647d1ad179..647d1ad179 100644
--- a/sysdeps/powerpc/divdi3.c
+++ b/sysdeps/powerpc/powerpc32/divdi3.c
diff --git a/sysdeps/powerpc/dl-machine.c b/sysdeps/powerpc/powerpc32/dl-machine.c
index 28a31f6d91..28a31f6d91 100644
--- a/sysdeps/powerpc/dl-machine.c
+++ b/sysdeps/powerpc/powerpc32/dl-machine.c
diff --git a/sysdeps/powerpc/dl-machine.h b/sysdeps/powerpc/powerpc32/dl-machine.h
index 34858e5a4b..34858e5a4b 100644
--- a/sysdeps/powerpc/dl-machine.h
+++ b/sysdeps/powerpc/powerpc32/dl-machine.h
diff --git a/sysdeps/powerpc/dl-start.S b/sysdeps/powerpc/powerpc32/dl-start.S
index 527982bfdf..527982bfdf 100644
--- a/sysdeps/powerpc/dl-start.S
+++ b/sysdeps/powerpc/powerpc32/dl-start.S
diff --git a/sysdeps/powerpc/elf/bzero.S b/sysdeps/powerpc/powerpc32/elf/bzero.S
index 17c6f56119..17c6f56119 100644
--- a/sysdeps/powerpc/elf/bzero.S
+++ b/sysdeps/powerpc/powerpc32/elf/bzero.S
diff --git a/sysdeps/powerpc/elf/start.S b/sysdeps/powerpc/powerpc32/elf/start.S
index 063df75328..063df75328 100644
--- a/sysdeps/powerpc/elf/start.S
+++ b/sysdeps/powerpc/powerpc32/elf/start.S
diff --git a/sysdeps/powerpc/powerpc32/fpu/Makefile b/sysdeps/powerpc/powerpc32/fpu/Makefile
new file mode 100644
index 0000000000..e05073970d
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/fpu/Makefile
@@ -0,0 +1,3 @@
+ifeq ($(subdir),misc)
+sysdep_routines += fprsave fprrest
+endif
diff --git a/sysdeps/powerpc/fpu/__longjmp.S b/sysdeps/powerpc/powerpc32/fpu/__longjmp.S
index 7b2dc26cb8..7b2dc26cb8 100644
--- a/sysdeps/powerpc/fpu/__longjmp.S
+++ b/sysdeps/powerpc/powerpc32/fpu/__longjmp.S
diff --git a/sysdeps/powerpc/fpu/fprrest.S b/sysdeps/powerpc/powerpc32/fpu/fprrest.S
index 42317809eb..42317809eb 100644
--- a/sysdeps/powerpc/fpu/fprrest.S
+++ b/sysdeps/powerpc/powerpc32/fpu/fprrest.S
diff --git a/sysdeps/powerpc/fpu/fprsave.S b/sysdeps/powerpc/powerpc32/fpu/fprsave.S
index d7bc1ab7dc..d7bc1ab7dc 100644
--- a/sysdeps/powerpc/fpu/fprsave.S
+++ b/sysdeps/powerpc/powerpc32/fpu/fprsave.S
diff --git a/sysdeps/powerpc/fpu/s_copysign.S b/sysdeps/powerpc/powerpc32/fpu/s_copysign.S
index 933435da3d..933435da3d 100644
--- a/sysdeps/powerpc/fpu/s_copysign.S
+++ b/sysdeps/powerpc/powerpc32/fpu/s_copysign.S
diff --git a/sysdeps/powerpc/fpu/s_copysignf.S b/sysdeps/powerpc/powerpc32/fpu/s_copysignf.S
index e05438ae7d..e05438ae7d 100644
--- a/sysdeps/powerpc/fpu/s_copysignf.S
+++ b/sysdeps/powerpc/powerpc32/fpu/s_copysignf.S
diff --git a/sysdeps/powerpc/fpu/setjmp.S b/sysdeps/powerpc/powerpc32/fpu/setjmp.S
index b6c63663f4..b6c63663f4 100644
--- a/sysdeps/powerpc/fpu/setjmp.S
+++ b/sysdeps/powerpc/powerpc32/fpu/setjmp.S
diff --git a/sysdeps/powerpc/gprrest0.S b/sysdeps/powerpc/powerpc32/gprrest0.S
index cf493f0c47..cf493f0c47 100644
--- a/sysdeps/powerpc/gprrest0.S
+++ b/sysdeps/powerpc/powerpc32/gprrest0.S
diff --git a/sysdeps/powerpc/gprrest1.S b/sysdeps/powerpc/powerpc32/gprrest1.S
index 5ac18606f8..5ac18606f8 100644
--- a/sysdeps/powerpc/gprrest1.S
+++ b/sysdeps/powerpc/powerpc32/gprrest1.S
diff --git a/sysdeps/powerpc/gprsave0.S b/sysdeps/powerpc/powerpc32/gprsave0.S
index a09f1e569a..a09f1e569a 100644
--- a/sysdeps/powerpc/gprsave0.S
+++ b/sysdeps/powerpc/powerpc32/gprsave0.S
diff --git a/sysdeps/powerpc/gprsave1.S b/sysdeps/powerpc/powerpc32/gprsave1.S
index 06ee4a69d3..06ee4a69d3 100644
--- a/sysdeps/powerpc/gprsave1.S
+++ b/sysdeps/powerpc/powerpc32/gprsave1.S
diff --git a/sysdeps/powerpc/libgcc-compat.S b/sysdeps/powerpc/powerpc32/libgcc-compat.S
index 196293fd97..196293fd97 100644
--- a/sysdeps/powerpc/libgcc-compat.S
+++ b/sysdeps/powerpc/powerpc32/libgcc-compat.S
diff --git a/sysdeps/powerpc/lshift.S b/sysdeps/powerpc/powerpc32/lshift.S
index 9f5870d828..9f5870d828 100644
--- a/sysdeps/powerpc/lshift.S
+++ b/sysdeps/powerpc/powerpc32/lshift.S
diff --git a/sysdeps/powerpc/memset.S b/sysdeps/powerpc/powerpc32/memset.S
index bee87af0ce..bee87af0ce 100644
--- a/sysdeps/powerpc/memset.S
+++ b/sysdeps/powerpc/powerpc32/memset.S
diff --git a/sysdeps/powerpc/mul_1.S b/sysdeps/powerpc/powerpc32/mul_1.S
index f0e0086333..f0e0086333 100644
--- a/sysdeps/powerpc/mul_1.S
+++ b/sysdeps/powerpc/powerpc32/mul_1.S
diff --git a/sysdeps/powerpc/ppc-mcount.S b/sysdeps/powerpc/powerpc32/ppc-mcount.S
index a72d676bbe..a72d676bbe 100644
--- a/sysdeps/powerpc/ppc-mcount.S
+++ b/sysdeps/powerpc/powerpc32/ppc-mcount.S
diff --git a/sysdeps/powerpc/register-dump.h b/sysdeps/powerpc/powerpc32/register-dump.h
index d341eea8ff..d341eea8ff 100644
--- a/sysdeps/powerpc/register-dump.h
+++ b/sysdeps/powerpc/powerpc32/register-dump.h
diff --git a/sysdeps/powerpc/rshift.S b/sysdeps/powerpc/powerpc32/rshift.S
index 498b6c4a88..498b6c4a88 100644
--- a/sysdeps/powerpc/rshift.S
+++ b/sysdeps/powerpc/powerpc32/rshift.S
diff --git a/sysdeps/powerpc/setjmp.S b/sysdeps/powerpc/powerpc32/setjmp.S
index 47dc693e49..47dc693e49 100644
--- a/sysdeps/powerpc/setjmp.S
+++ b/sysdeps/powerpc/powerpc32/setjmp.S
diff --git a/sysdeps/powerpc/stpcpy.S b/sysdeps/powerpc/powerpc32/stpcpy.S
index 9640a5d831..9640a5d831 100644
--- a/sysdeps/powerpc/stpcpy.S
+++ b/sysdeps/powerpc/powerpc32/stpcpy.S
diff --git a/sysdeps/powerpc/strchr.S b/sysdeps/powerpc/powerpc32/strchr.S
index 1adee411b6..1adee411b6 100644
--- a/sysdeps/powerpc/strchr.S
+++ b/sysdeps/powerpc/powerpc32/strchr.S
diff --git a/sysdeps/powerpc/strcmp.S b/sysdeps/powerpc/powerpc32/strcmp.S
index 2c96b57016..2c96b57016 100644
--- a/sysdeps/powerpc/strcmp.S
+++ b/sysdeps/powerpc/powerpc32/strcmp.S
diff --git a/sysdeps/powerpc/strcpy.S b/sysdeps/powerpc/powerpc32/strcpy.S
index ed8eb7298e..ed8eb7298e 100644
--- a/sysdeps/powerpc/strcpy.S
+++ b/sysdeps/powerpc/powerpc32/strcpy.S
diff --git a/sysdeps/powerpc/strlen.S b/sysdeps/powerpc/powerpc32/strlen.S
index 5ff31506e2..5ff31506e2 100644
--- a/sysdeps/powerpc/strlen.S
+++ b/sysdeps/powerpc/powerpc32/strlen.S
diff --git a/sysdeps/powerpc/sub_n.S b/sysdeps/powerpc/powerpc32/sub_n.S
index 3ebd22e30e..3ebd22e30e 100644
--- a/sysdeps/powerpc/sub_n.S
+++ b/sysdeps/powerpc/powerpc32/sub_n.S
diff --git a/sysdeps/powerpc/submul_1.S b/sysdeps/powerpc/powerpc32/submul_1.S
index 6e45d19832..6e45d19832 100644
--- a/sysdeps/powerpc/submul_1.S
+++ b/sysdeps/powerpc/powerpc32/submul_1.S