summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenedikt Boehm <hollow@gentoo.org>2006-06-22 07:17:16 +0000
committerBenedikt Boehm <hollow@gentoo.org>2006-06-22 07:17:16 +0000
commit0b0bb7d0808b6750e322f3c71df0972971675e3a (patch)
treef5fcf864601297ddba338ee85ff5e38ab35096fb /dietlibc
parentSeems, I've waited too long with the other release; Bertl just updated to _rc24 (diff)
downloadmisc-0b0bb7d0808b6750e322f3c71df0972971675e3a.tar.gz
misc-0b0bb7d0808b6750e322f3c71df0972971675e3a.tar.bz2
misc-0b0bb7d0808b6750e322f3c71df0972971675e3a.zip
new cvs snapshot patches
svn path=/; revision=388
Diffstat (limited to 'dietlibc')
-rw-r--r--dietlibc/patches/0.30_pre20060621-r0/00_all_custom-cflags.patch23
-rw-r--r--dietlibc/patches/0.30_pre20060621-r0/01_all_nostrip.patch61
-rw-r--r--dietlibc/patches/0.30_pre20060621-r0/02_all_want-stackgap.patch13
-rw-r--r--dietlibc/patches/0.30_pre20060621-r0/03_all_ppc-rename.patch2817
-rw-r--r--dietlibc/patches/0.30_pre20060621-r0/04_all_prefix.patch10
-rw-r--r--dietlibc/patches/0.30_pre20060621-r0/20_all_dirent-prototype.patch15
-rw-r--r--dietlibc/patches/0.30_pre20060621-r0/21_all_nice.patch20
-rw-r--r--dietlibc/patches/0.30_pre20060621-r0/40_sparc64_Makefile.patch13
-rw-r--r--dietlibc/patches/0.30_pre20060621-r0/42_arm_waitpid.patch13
-rw-r--r--dietlibc/patches/0.30_pre20060621-r0/43_ia64_no-fno-omit-frame-pointer.patch16
-rw-r--r--dietlibc/patches/0.30_pre20060621-r0/44_ia64_proc-endp.patch58
-rw-r--r--dietlibc/patches/0.30_pre20060621-r0/45_parisc_iitlbp.patch13
12 files changed, 3072 insertions, 0 deletions
diff --git a/dietlibc/patches/0.30_pre20060621-r0/00_all_custom-cflags.patch b/dietlibc/patches/0.30_pre20060621-r0/00_all_custom-cflags.patch
new file mode 100644
index 0000000..f726790
--- /dev/null
+++ b/dietlibc/patches/0.30_pre20060621-r0/00_all_custom-cflags.patch
@@ -0,0 +1,23 @@
+Index: dietlibc-0.30_pre20060501/Makefile
+===================================================================
+--- dietlibc-0.30_pre20060501.orig/Makefile
++++ dietlibc-0.30_pre20060501/Makefile
+@@ -100,7 +100,6 @@ all: $(WHAT)
+
+ profiling: $(OBJDIR)/libgmon.a $(OBJDIR)/pstart.o
+
+-CFLAGS=-pipe -nostdinc
+ CROSS=
+
+ CC=gcc
+@@ -132,10 +131,6 @@ include $(ARCH)/Makefile.add
+
+ LIBMATHOBJ=$(patsubst %,$(OBJDIR)/%,$(LIBMATH))
+
+-ifeq ($(CFLAGS),-pipe -nostdinc)
+-CFLAGS+=-O -fomit-frame-pointer
+-endif
+-
+ ifneq ($(DEBUG),)
+ CFLAGS = -g
+ COMMENT = :
diff --git a/dietlibc/patches/0.30_pre20060621-r0/01_all_nostrip.patch b/dietlibc/patches/0.30_pre20060621-r0/01_all_nostrip.patch
new file mode 100644
index 0000000..f5ab554
--- /dev/null
+++ b/dietlibc/patches/0.30_pre20060621-r0/01_all_nostrip.patch
@@ -0,0 +1,61 @@
+--- dietlibc/Makefile.orig 2006-06-21 21:18:13.000000000 +0200
++++ dietlibc/Makefile 2006-06-21 21:35:15.252354000 +0200
+@@ -161,7 +161,6 @@
+
+ $(OBJDIR)/%.o: %.c
+ tcc -I. -Iinclude -c $< -o $@
+- $(COMMENT) -$(CROSS)strip -x -R .comment -R .note $@
+ else
+ $(OBJDIR)/pstart.o: start.S
+ $(CROSS)$(CC) $(INC) $(CFLAGS) -DPROFILING -c $< -o $@
+@@ -171,11 +170,9 @@
+
+ $(OBJDIR)/pthread_%.o: libpthread/pthread_%.c
+ $(CROSS)$(CC) $(INC) $(CFLAGS) -c $< -o $@
+- $(COMMENT) -$(CROSS)strip -x -R .comment -R .note $@
+
+ $(OBJDIR)/%.o: %.c
+ $(CROSS)$(CC) $(INC) $(CFLAGS) -c $< -o $@ -D__dietlibc__
+- $(COMMENT) -$(CROSS)strip -x -R .comment -R .note $@
+ endif
+
+ ifeq ($(shell $(CC) -v 2>&1 | grep "gcc version"),gcc version 4.0.0)
+@@ -246,18 +243,15 @@
+
+ $(PICODIR)/pthread_%.o: libpthread/pthread_%.c
+ $(CROSS)$(CC) $(INC) $(CFLAGS) -fPIC -D__DYN_LIB -c $< -o $@
+- $(COMMENT) $(CROSS)strip -x -R .comment -R .note $@
+
+ $(PICODIR)/%.o: %.c
+ $(CROSS)$(CC) $(INC) $(CFLAGS) -fPIC -D__DYN_LIB -c $< -o $@
+- $(COMMENT) $(CROSS)strip -x -R .comment -R .note $@
+
+ $(PICODIR)/dstart.o: start.S
+ $(CROSS)$(CC) $(INC) $(CFLAGS) -fPIC -D__DYN_LIB -c $< -o $@
+
+ $(PICODIR)/dyn_so_start.o: dyn_start.c
+ $(CROSS)$(CC) $(INC) $(CFLAGS) -fPIC -D__DYN_LIB -D__DYN_LIB_SHARED -c $< -o $@
+- $(COMMENT) $(CROSS)strip -x -R .comment -R .note $@
+
+ DYN_LIBC_PIC = $(LIBOBJ) $(LIBSTDIOOBJ) $(LIBUGLYOBJ) \
+ $(LIBCRUFTOBJ) $(LIBCRYPTOBJ) $(LIBSHELLOBJ) $(LIBREGEXOBJ)
+@@ -306,19 +300,15 @@
+
+ $(OBJDIR)/diet: $(OBJDIR)/start.o $(OBJDIR)/dyn_start.o diet.c $(OBJDIR)/dietlibc.a $(OBJDIR)/dyn_stop.o
+ $(CROSS)$(CC) -isystem include $(CFLAGS) -nostdlib -o $@ $^ -DDIETHOME=\"$(HOME)\" -DVERSION=\"$(VERSION)\" -lgcc
+- $(CROSS)strip -R .comment -R .note $@
+
+ $(OBJDIR)/diet-i: $(OBJDIR)/start.o $(OBJDIR)/dyn_start.o diet.c $(OBJDIR)/dietlibc.a $(OBJDIR)/dyn_stop.o
+ $(CROSS)$(CC) -isystem include $(CFLAGS) -nostdlib -o $@ $^ -DDIETHOME=\"$(prefix)\" -DVERSION=\"$(VERSION)\" -DINSTALLVERSION -lgcc
+- $(CROSS)strip -R .comment -R .note $@
+
+ $(PICODIR)/diet-dyn: $(PICODIR)/start.o $(PICODIR)/dyn_start.o diet.c
+ $(LD_UNSET) $(CROSS)$(CC) -isystem include $(CFLAGS) -fPIC -nostdlib -o $@ $^ -DDIETHOME=\"$(HOME)\" -D__DYN_LIB -DVERSION=\"$(VERSION)\" -L$(PICODIR) -lc -lgcc $(PICODIR)/dyn_stop.o -Wl,-dynamic-linker=$(HOME)/$(PICODIR)/libdl.so
+- $(CROSS)strip -R .command -R .note $@
+
+ $(PICODIR)/diet-dyn-i: $(PICODIR)/start.o $(PICODIR)/dyn_start.o diet.c
+ $(LD_UNSET) $(CROSS)$(CC) -isystem include $(CFLAGS) -fPIC -nostdlib -o $@ $^ -DDIETHOME=\"$(prefix)\" -D__DYN_LIB -DVERSION=\"$(VERSION)\" -L$(PICODIR) -lc -lgcc $(PICODIR)/dyn_stop.o -Wl,-dynamic-linker=$(ILIBDIR)/libdl.so -DINSTALLVERSION
+- $(CROSS)strip -R .command -R .note $@
+
+ $(OBJDIR)/djb: $(OBJDIR)/compile $(OBJDIR)/load
+
diff --git a/dietlibc/patches/0.30_pre20060621-r0/02_all_want-stackgap.patch b/dietlibc/patches/0.30_pre20060621-r0/02_all_want-stackgap.patch
new file mode 100644
index 0000000..4a94426
--- /dev/null
+++ b/dietlibc/patches/0.30_pre20060621-r0/02_all_want-stackgap.patch
@@ -0,0 +1,13 @@
+Index: dietlibc-0.30_pre20060501/dietfeatures.h
+===================================================================
+--- dietlibc-0.30_pre20060501.orig/dietfeatures.h
++++ dietlibc-0.30_pre20060501/dietfeatures.h
+@@ -99,7 +99,7 @@
+ /* WARNING: this appears to break with some binutils versions. Works
+ * for me with binutils 2.15. The symptom is an error message that
+ * `main' can not be found. */
+-/* #define WANT_STACKGAP */
++#define WANT_STACKGAP
+
+ /* Include support for ProPolice/SSP, calls guard_setup */
+ /* ProPolice is part of gcc 4.1 and up, there were patches for earlier
diff --git a/dietlibc/patches/0.30_pre20060621-r0/03_all_ppc-rename.patch b/dietlibc/patches/0.30_pre20060621-r0/03_all_ppc-rename.patch
new file mode 100644
index 0000000..27d818d
--- /dev/null
+++ b/dietlibc/patches/0.30_pre20060621-r0/03_all_ppc-rename.patch
@@ -0,0 +1,2817 @@
+diff -Nurp dietlibc.orig/diet.c dietlibc/diet.c
+--- dietlibc.orig/diet.c 2006-06-21 21:44:44.287916500 +0200
++++ dietlibc/diet.c 2006-06-21 21:39:49.665503750 +0200
+@@ -35,8 +35,8 @@ static const char* Os[] = {
+ "arm","-Os","-fomit-frame-pointer",0,
+ "mips","-Os","-fomit-frame-pointer","-mno-abicalls","-fno-pic","-G","0",0,
+ "mipsel","-Os","-fomit-frame-pointer","-mno-abicalls","-fno-pic","-G","0",0,
+- "ppc","-Os","-fomit-frame-pointer","-mpowerpc-gpopt","-mpowerpc-gfxopt",0,
+- "ppc64","-Os","-fomit-frame-pointer","-mpowerpc-gpopt","-mpowerpc-gfxopt",0,
++ "powerpc","-Os","-fomit-frame-pointer","-mpowerpc-gpopt","-mpowerpc-gfxopt",0,
++ "powerpc64","-Os","-fomit-frame-pointer","-mpowerpc-gpopt","-mpowerpc-gfxopt",0,
+ "s390","-Os","-fomit-frame-pointer",0,
+ "s390x","-Os","-fomit-frame-pointer",0,
+ "sh","-Os","-fomit-frame-pointer",0,
+@@ -151,10 +151,10 @@ int main(int argc,char *argv[]) {
+ #endif
+ #endif
+ #ifdef __powerpc__
+- shortplatform="ppc";
++ shortplatform="powerpc";
+ #endif
+ #ifdef __powerpc64__
+- shortplatform="ppc64";
++ shortplatform="powerpc64";
+ #endif
+ #ifdef __i386__
+ shortplatform="i386";
+diff -Nurp dietlibc.orig/Makefile dietlibc/Makefile
+--- dietlibc.orig/Makefile 2006-06-21 21:44:44.283916250 +0200
++++ dietlibc/Makefile 2006-06-21 21:42:07.314106250 +0200
+@@ -23,11 +23,11 @@ else
+ ifeq ($(MYARCH),alpha)
+ ARCH=alpha
+ else
+-ifeq ($(MYARCH),ppc)
+-ARCH=ppc
++ifeq ($(MYARCH),powerpc)
++ARCH=powerpc
+ else
+-ifeq ($(MYARCH),ppc64)
+-ARCH=ppc64
++ifeq ($(MYARCH),powerpc64)
++ARCH=powerpc64
+ else
+ ifeq ($(MYARCH),arm)
+ ARCH=arm
+@@ -296,10 +296,10 @@ $(PICODIR)/libm.so: $(DYN_LIBMATH_OBJS)
+ $(SYSCALLOBJ): syscalls.h
+
+ $(OBJDIR)/elftrunc: $(OBJDIR)/diet contrib/elftrunc.c
+- bin-$(MYARCH)/diet $(CROSS)$(CC) $(CFLAGS) -o $@ contrib/elftrunc.c
++ bin-$(ARCH)/diet $(CROSS)$(CC) $(CFLAGS) -o $@ contrib/elftrunc.c
+
+ $(OBJDIR)/dnsd: $(OBJDIR)/diet contrib/dnsd.c
+- bin-$(MYARCH)/diet $(CROSS)$(CC) $(CFLAGS) -o $@ contrib/dnsd.c
++ bin-$(ARCH)/diet $(CROSS)$(CC) $(CFLAGS) -o $@ contrib/dnsd.c
+
+ VERSION=dietlibc-$(shell head -n 1 CHANGES|sed 's/://')
+ CURNAME=$(notdir $(shell pwd))
+@@ -385,10 +385,10 @@ uninstall:
+ for i in `find include -name \*.h`; do rm -f $(DESTDIR)$(prefix)/$$i; done
+ -rmdir $(DESTDIR)$(ILIBDIR) $(DESTDIR)$(MAN1DIR) $(DESTDIR)$(BINDIR)
+
+-.PHONY: sparc ppc mips arm alpha i386 parisc mipsel powerpc s390 sparc64
+-.PHONY: x86_64 ia64 ppc64 s390x
++.PHONY: sparc powerpc mips arm alpha i386 parisc mipsel powerpc s390 sparc64
++.PHONY: x86_64 ia64 powerpc64 s390x
+
+-arm sparc alpha mips parisc s390 sparc64 x86_64 ia64 ppc64 s390x:
++arm sparc alpha mips parisc s390 sparc64 x86_64 ia64 powerpc64 s390x:
+ $(MAKE) ARCH=$@ CROSS=$@-linux- all
+
+ i386:
+@@ -398,8 +398,8 @@ else
+ $(MAKE) ARCH=$@ CROSS=$@-linux- all
+ endif
+
+-ppc:
+-ifeq ($(MYARCH),ppc64)
++powerpc:
++ifeq ($(MYARCH),powerpc64)
+ $(MAKE) ARCH=$@ CC="$(CC) -m32" all
+ else
+ $(MAKE) ARCH=$@ CROSS=$@-linux- all
+@@ -412,15 +412,11 @@ mipsel:
+ mips-gnu:
+ $(MAKE) ARCH=$@ CROSS=$@-linux-gnu- all
+
+-# Some people named their cross compiler toolchain powerpc-linux-gcc
+-powerpc:
+- $(MAKE) ARCH=ppc CROSS=powerpc-linux- all
+-
+ hppa:
+ ln -sf bin-parisc bin-hppa
+ $(MAKE) ARCH=parisc CROSS=hppa-linux- all
+
+-CROSS_ARCH=arm sparc ppc alpha i386 mips sparc64 x86_64 s390 parisc
++CROSS_ARCH=arm sparc powerpc alpha i386 mips sparc64 x86_64 s390 parisc
+ cross:
+ $(MAKE) $(subst $(ARCH),,$(CROSS_ARCH))
+
+diff -Nurp dietlibc.orig/powerpc/clone.S dietlibc/powerpc/clone.S
+--- dietlibc.orig/powerpc/clone.S 1970-01-01 01:00:00.000000000 +0100
++++ dietlibc/powerpc/clone.S 2001-12-13 17:05:03.000000000 +0100
+@@ -0,0 +1,48 @@
++#include <dietfeatures.h>
++#include "syscalls.h"
++#include <errno.h>
++
++.text
++.weak clone
++clone:
++.global __clone
++__clone:
++ cmpwi 4,0 /* check have non null child_stack pointer */
++ cmpwi cr1, 3,0 /* check have non null thread_funcion */
++ cror eq,4*cr1+eq,eq /* now if eq is set one is or both are zero */
++ beq .Lclone_error
++
++ stwu 1,-32(1) /* alloc some space on the stack */
++ stmw 29, 16(1) /* save r29,r30,r31 on stack */
++
++ rlwinm 4,4,0,0,27 /* mask out lower 4 bits */
++
++ /* move parameter to positions clone wants them */
++ mr 29,3 /* r29 = r3 fn */
++ mr 30,4 /* r30 = r4 stack */
++ mr 31,6 /* r31 = r6 arg */
++ mr 3, 5 /* r3 = r5 flags */
++
++ li 0, __NR_clone /* load syscall nr. */
++ sc
++
++ cmpwi cr1,3,0 /* compare return of syscall with 0 */
++ crandc 4*cr1+eq,4*cr1+eq,so
++ bne .Lclone_parent /* return was non zero -> .Lclone_parent */
++
++ /* we are the cloned process */
++ mr 1, 30 /* set stack pointer */
++ mtctr 29 /* set count register to fn ? */
++ mr 3, 31 /* set argument */
++ bctrl /* branch trough count register and link */
++ b _exit /* exit thread */
++
++.Lclone_parent:
++ lmw 29,16(1) /* restore saved registers */
++ addi 1, 1,32 /* free stack */
++ bnslr+ /* had cloned a thread so return to parent */
++ b error_unified_syscall
++
++.Lclone_error:
++ li 3, EINVAL
++ b error_unified_syscall
+diff -Nurp dietlibc.orig/powerpc/__longjmp.S dietlibc/powerpc/__longjmp.S
+--- dietlibc.orig/powerpc/__longjmp.S 1970-01-01 01:00:00.000000000 +0100
++++ dietlibc/powerpc/__longjmp.S 2001-01-25 18:23:36.000000000 +0100
+@@ -0,0 +1,59 @@
++#include <setjmp.h>
++
++
++#ifdef PIC
++#define JUMPTARGET(name) name##@plt
++#else
++#define JUMPTARGET(name) name
++#endif
++
++.global __longjmp
++.type __longjmp,@function
++.align 2
++__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 0,(JB_CR*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)
++ mtcrf 0xFF,0
++ 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)
++ mr 3,4
++ blr
++.size __longjmp,.-__longjmp
++
+diff -Nurp dietlibc.orig/powerpc/Makefile.add dietlibc/powerpc/Makefile.add
+--- dietlibc.orig/powerpc/Makefile.add 1970-01-01 01:00:00.000000000 +0100
++++ dietlibc/powerpc/Makefile.add 2001-01-30 16:01:20.000000000 +0100
+@@ -0,0 +1,3 @@
++
++CFLAGS+=-mpowerpc-gpopt -mpowerpc-gfxopt -Os
++VPATH:=ppc:syscalls.s:$(VPATH)
+diff -Nurp dietlibc.orig/powerpc/mmap.c dietlibc/powerpc/mmap.c
+--- dietlibc.orig/powerpc/mmap.c 1970-01-01 01:00:00.000000000 +0100
++++ dietlibc/powerpc/mmap.c 2001-06-18 23:08:07.000000000 +0200
+@@ -0,0 +1,40 @@
++#include "dietfeatures.h"
++#include <sys/types.h>
++#include <errno.h>
++#include "syscalls.h"
++
++int mmap(void*start,size_t length,int prot,int flags,int fd,off_t offset) {
++ unsigned long __sc_ret, __sc_err;
++ {
++ register unsigned long __sc_0 __asm__ ("r0");
++ register unsigned long __sc_3 __asm__ ("r3");
++ register unsigned long __sc_4 __asm__ ("r4");
++ register unsigned long __sc_5 __asm__ ("r5");
++ register unsigned long __sc_6 __asm__ ("r6");
++ register unsigned long __sc_7 __asm__ ("r7");
++ register unsigned long __sc_8 __asm__ ("r8");
++
++ __sc_3 = (unsigned long) (start);
++ __sc_4 = (unsigned long) (length);
++ __sc_5 = (unsigned long) (prot);
++ __sc_6 = (unsigned long) (flags);
++ __sc_7 = (unsigned long) (fd);
++ __sc_8 = (unsigned long) (offset);
++ __sc_0 = __NR_mmap;
++ __asm__ __volatile__
++ ("sc \n\t"
++ "mfcr %1 "
++ : "=&r" (__sc_3), "=&r" (__sc_0)
++ : "0" (__sc_3), "1" (__sc_0),
++ "r" (__sc_4),
++ "r" (__sc_5),
++ "r" (__sc_6),
++ "r" (__sc_7),
++ "r" (__sc_8)
++ : "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12");
++ __sc_ret = __sc_3;
++ __sc_err = __sc_0;
++ }
++ return (__sc_err & 0x10000000 ? errno = __sc_ret, __sc_ret = -1 : 0),
++ (int) __sc_ret;
++}
+diff -Nurp dietlibc.orig/powerpc/setjmp.S dietlibc/powerpc/setjmp.S
+--- dietlibc.orig/powerpc/setjmp.S 1970-01-01 01:00:00.000000000 +0100
++++ dietlibc/powerpc/setjmp.S 2001-01-09 18:57:44.000000000 +0100
+@@ -0,0 +1,56 @@
++#include <setjmp.h>
++
++#ifdef PIC
++#define JUMPTARGET(name) name##@plt
++#else
++#define JUMPTARGET(name) name
++#endif
++
++.global __sigsetjmp
++.type __sigsetjmp,@function
++.align 2
++__sigsetjmp:
++ stw 1,(JB_GPR1*4)(3)
++ mflr 0
++ stw 2,(JB_GPR2*4)(3)
++ stw 14,((JB_GPRS+0)*4)(3)
++ stfd 14,((JB_FPRS+0*2)*4)(3)
++ stw 0,(JB_LR*4)(3)
++ stw 15,((JB_GPRS+1)*4)(3)
++ stfd 15,((JB_FPRS+1*2)*4)(3)
++ mfcr 0
++ stw 16,((JB_GPRS+2)*4)(3)
++ stfd 16,((JB_FPRS+2*2)*4)(3)
++ stw 0,(JB_CR*4)(3)
++ stw 17,((JB_GPRS+3)*4)(3)
++ stfd 17,((JB_FPRS+3*2)*4)(3)
++ stw 18,((JB_GPRS+4)*4)(3)
++ stfd 18,((JB_FPRS+4*2)*4)(3)
++ stw 19,((JB_GPRS+5)*4)(3)
++ stfd 19,((JB_FPRS+5*2)*4)(3)
++ stw 20,((JB_GPRS+6)*4)(3)
++ stfd 20,((JB_FPRS+6*2)*4)(3)
++ stw 21,((JB_GPRS+7)*4)(3)
++ stfd 21,((JB_FPRS+7*2)*4)(3)
++ stw 22,((JB_GPRS+8)*4)(3)
++ stfd 22,((JB_FPRS+8*2)*4)(3)
++ stw 23,((JB_GPRS+9)*4)(3)
++ stfd 23,((JB_FPRS+9*2)*4)(3)
++ stw 24,((JB_GPRS+10)*4)(3)
++ stfd 24,((JB_FPRS+10*2)*4)(3)
++ stw 25,((JB_GPRS+11)*4)(3)
++ stfd 25,((JB_FPRS+11*2)*4)(3)
++ stw 26,((JB_GPRS+12)*4)(3)
++ stfd 26,((JB_FPRS+12*2)*4)(3)
++ stw 27,((JB_GPRS+13)*4)(3)
++ stfd 27,((JB_FPRS+13*2)*4)(3)
++ stw 28,((JB_GPRS+14)*4)(3)
++ stfd 28,((JB_FPRS+14*2)*4)(3)
++ stw 29,((JB_GPRS+15)*4)(3)
++ stfd 29,((JB_FPRS+15*2)*4)(3)
++ stw 30,((JB_GPRS+16)*4)(3)
++ stfd 30,((JB_FPRS+16*2)*4)(3)
++ stw 31,((JB_GPRS+17)*4)(3)
++ stfd 31,((JB_FPRS+17*2)*4)(3)
++ b JUMPTARGET (__sigjmp_save)
++.size __sigsetjmp,.-__sigsetjmp
+diff -Nurp dietlibc.orig/powerpc/start.S dietlibc/powerpc/start.S
+--- dietlibc.orig/powerpc/start.S 1970-01-01 01:00:00.000000000 +0100
++++ dietlibc/powerpc/start.S 2006-04-04 07:35:14.000000000 +0200
+@@ -0,0 +1,52 @@
++#include "dietfeatures.h"
++
++.text
++.global _start
++.type _start,@function
++_start:
++ /* Save the stack pointer, in case we're statically linked under Linux. */
++ mr 9,1
++ /* Set up an initial stack frame, and clear the LR. */
++ clrrwi 1,1,4
++ li 0,0
++ stwu 1,-16(1)
++ mtlr 0
++ stw 0,0(1)
++
++ /* r9 contains the initial stack pointer
++ argc = (r9)
++ argv = (r9+4)
++ envp = argv+(argc+1)*4 */
++
++ lis 14,__libc_stack_end@ha
++ stw 9,__libc_stack_end@l(14)
++
++ lwzu 3,0(9) /* argc */
++ addi 4,9,4 /* argv */
++ add 5,0,3 /* argc... */
++ addi 5,5,1 /* argc+1...*/
++ slwi 5,5,2 /* (argc+1)*4 */
++ add 5,5,4 /* argv+(argc+1)*4 */
++
++ lis 14,environ@ha
++ stw 5,environ@l(14)
++
++#ifdef WANT_DYNAMIC
++ mr 6,7
++ bl _dyn_start
++#else
++ bl CALL_IN_STARTCODE
++#endif
++ b exit
++.size _start,.-_start
++
++
++/* Define a symbol for the first piece of initialized data. */
++ .section ".data"
++__data_start:
++
++/* this is needed for libgcc_eh.a - see gcc-3.4/gcc/config/rs6000/linux-unwind.h */
++ .weak __libc_stack_end
++ .lcomm __libc_stack_end,4,4
++ .type __libc_stack_end,@object
++
+diff -Nurp dietlibc.orig/powerpc/syscalls.h dietlibc/powerpc/syscalls.h
+--- dietlibc.orig/powerpc/syscalls.h 1970-01-01 01:00:00.000000000 +0100
++++ dietlibc/powerpc/syscalls.h 2005-09-21 09:33:08.000000000 +0200
+@@ -0,0 +1,299 @@
++
++#define __NR_exit 1
++#define __NR_fork 2
++#define __NR_read 3
++#define __NR_write 4
++#define __NR_open 5
++#define __NR_close 6
++#define __NR_waitpid 7
++#define __NR_creat 8
++#define __NR_link 9
++#define __NR_unlink 10
++#define __NR_execve 11
++#define __NR_chdir 12
++#define __NR_time 13
++#define __NR_mknod 14
++#define __NR_chmod 15
++#define __NR_lchown 16
++#define __NR_break 17
++#define __NR_oldstat 18
++#define __NR_lseek 19
++#define __NR_getpid 20
++#define __NR_mount 21
++#define __NR_umount 22
++#define __NR_setuid 23
++#define __NR_getuid 24
++#define __NR_stime 25
++#define __NR_ptrace 26
++#define __NR_alarm 27
++#define __NR_oldfstat 28
++#define __NR_pause 29
++#define __NR_utime 30
++#define __NR_stty 31
++#define __NR_gtty 32
++#define __NR_access 33
++#define __NR_nice 34
++#define __NR_ftime 35
++#define __NR_sync 36
++#define __NR_kill 37
++#define __NR_rename 38
++#define __NR_mkdir 39
++#define __NR_rmdir 40
++#define __NR_dup 41
++#define __NR_pipe 42
++#define __NR_times 43
++#define __NR_prof 44
++#define __NR_brk 45
++#define __NR_setgid 46
++#define __NR_getgid 47
++#define __NR_signal 48
++#define __NR_geteuid 49
++#define __NR_getegid 50
++#define __NR_acct 51
++#define __NR_umount2 52
++#define __NR_lock 53
++#define __NR_ioctl 54
++#define __NR_fcntl 55
++#define __NR_mpx 56
++#define __NR_setpgid 57
++#define __NR_ulimit 58
++#define __NR_oldolduname 59
++#define __NR_umask 60
++#define __NR_chroot 61
++#define __NR_ustat 62
++#define __NR_dup2 63
++#define __NR_getppid 64
++#define __NR_getpgrp 65
++#define __NR_setsid 66
++#define __NR_sigaction 67
++#define __NR_sgetmask 68
++#define __NR_ssetmask 69
++#define __NR_setreuid 70
++#define __NR_setregid 71
++#define __NR_sigsuspend 72
++#define __NR_sigpending 73
++#define __NR_sethostname 74
++#define __NR_setrlimit 75
++#define __NR_getrlimit 76
++#define __NR_getrusage 77
++#define __NR_gettimeofday 78
++#define __NR_settimeofday 79
++#define __NR_getgroups 80
++#define __NR_setgroups 81
++#define __NR_select 82
++#define __NR_symlink 83
++#define __NR_oldlstat 84
++#define __NR_readlink 85
++#define __NR_uselib 86
++#define __NR_swapon 87
++#define __NR_reboot 88
++#define __NR_readdir 89
++#define __NR_mmap 90
++#define __NR_munmap 91
++#define __NR_truncate 92
++#define __NR_ftruncate 93
++#define __NR_fchmod 94
++#define __NR_fchown 95
++#define __NR_getpriority 96
++#define __NR_setpriority 97
++#define __NR_profil 98
++#define __NR_statfs 99
++#define __NR_fstatfs 100
++#define __NR_ioperm 101
++#define __NR_socketcall 102
++#define __NR_syslog 103
++#define __NR_setitimer 104
++#define __NR_getitimer 105
++#define __NR_stat 106
++#define __NR_lstat 107
++#define __NR_fstat 108
++#define __NR_olduname 109
++#define __NR_iopl 110
++#define __NR_vhangup 111
++#define __NR_idle 112
++#define __NR_vm86 113
++#define __NR_wait4 114
++#define __NR_swapoff 115
++#define __NR_sysinfo 116
++#define __NR_ipc 117
++#define __NR_fsync 118
++#define __NR_sigreturn 119
++#define __NR_clone 120
++#define __NR_setdomainname 121
++#define __NR_uname 122
++#define __NR_modify_ldt 123
++#define __NR_adjtimex 124
++#define __NR_mprotect 125
++#define __NR_sigprocmask 126
++#define __NR_create_module 127
++#define __NR_init_module 128
++#define __NR_delete_module 129
++#define __NR_get_kernel_syms 130
++#define __NR_quotactl 131
++#define __NR_getpgid 132
++#define __NR_fchdir 133
++#define __NR_bdflush 134
++#define __NR_sysfs 135
++#define __NR_personality 136
++#define __NR_afs_syscall 137 /* Syscall for Andrew File System */
++#define __NR_setfsuid 138
++#define __NR_setfsgid 139
++#define __NR__llseek 140
++#define __NR_getdents 141
++#define __NR__newselect 142
++#define __NR_flock 143
++#define __NR_msync 144
++#define __NR_readv 145
++#define __NR_writev 146
++#define __NR_getsid 147
++#define __NR_fdatasync 148
++#define __NR__sysctl 149
++#define __NR_mlock 150
++#define __NR_munlock 151
++#define __NR_mlockall 152
++#define __NR_munlockall 153
++#define __NR_sched_setparam 154
++#define __NR_sched_getparam 155
++#define __NR_sched_setscheduler 156
++#define __NR_sched_getscheduler 157
++#define __NR_sched_yield 158
++#define __NR_sched_get_priority_max 159
++#define __NR_sched_get_priority_min 160
++#define __NR_sched_rr_get_interval 161
++#define __NR_nanosleep 162
++#define __NR_mremap 163
++#define __NR_setresuid 164
++#define __NR_getresuid 165
++#define __NR_query_module 166
++#define __NR_poll 167
++#define __NR_nfsservctl 168
++#define __NR_setresgid 169
++#define __NR_getresgid 170
++#define __NR_prctl 171
++#define __NR_rt_sigreturn 172
++#define __NR_rt_sigaction 173
++#define __NR_rt_sigprocmask 174
++#define __NR_rt_sigpending 175
++#define __NR_rt_sigtimedwait 176
++#define __NR_rt_sigqueueinfo 177
++#define __NR_rt_sigsuspend 178
++#define __NR_pread 179
++#define __NR_pwrite 180
++#define __NR_chown 181
++#define __NR_getcwd 182
++#define __NR_capget 183
++#define __NR_capset 184
++#define __NR_sigaltstack 185
++#define __NR_sendfile 186
++#define __NR_getpmsg 187 /* some people actually want streams */
++#define __NR_putpmsg 188 /* some people actually want streams */
++#define __NR_vfork 189
++#define __NR_ugetrlimit 190 /* SuS compliant getrlimit */
++#define __NR_readahead 191
++#define __NR_mmap2 192
++#define __NR_truncate64 193
++#define __NR_ftruncate64 194
++#define __NR_stat64 195
++#define __NR_lstat64 196
++#define __NR_fstat64 197
++#define __NR_pciconfig_read 198
++#define __NR_pciconfig_write 199
++#define __NR_pciconfig_iobase 200
++#define __NR_multiplexer 201
++#define __NR_getdents64 202
++#define __NR_pivot_root 203
++#define __NR_fcntl64 204
++#define __NR_madvise 205
++#define __NR_mincore 206
++#define __NR_gettid 207
++#define __NR_tkill 208
++#define __NR_setxattr 209
++#define __NR_lsetxattr 210
++#define __NR_fsetxattr 211
++#define __NR_getxattr 212
++#define __NR_lgetxattr 213
++#define __NR_fgetxattr 214
++#define __NR_listxattr 215
++#define __NR_llistxattr 216
++#define __NR_flistxattr 217
++#define __NR_removexattr 218
++#define __NR_lremovexattr 219
++#define __NR_fremovexattr 220
++#define __NR_futex 221
++#define __NR_sched_setaffinity 222
++#define __NR_sched_getaffinity 223
++/* 224 currently unused */
++#define __NR_tuxcall 225
++#define __NR_sendfile64 226
++#define __NR_io_setup 227
++#define __NR_io_destroy 228
++#define __NR_io_getevents 229
++#define __NR_io_submit 230
++#define __NR_io_cancel 231
++#define __NR_set_tid_address 232
++#define __NR_fadvise64 233
++#define __NR_exit_group 234
++#define __NR_lookup_dcookie 235
++#define __NR_epoll_create 236
++#define __NR_epoll_ctl 237
++#define __NR_epoll_wait 238
++#define __NR_remap_file_pages 239
++#define __NR_timer_create 240
++#define __NR_timer_settime 241
++#define __NR_timer_gettime 242
++#define __NR_timer_getoverrun 243
++#define __NR_timer_delete 244
++#define __NR_clock_settime 245
++#define __NR_clock_gettime 246
++#define __NR_clock_getres 247
++#define __NR_clock_nanosleep 248
++#define __NR_swapcontext 249
++#define __NR_tgkill 250
++#define __NR_utimes 251
++#define __NR_statfs64 252
++#define __NR_fstatfs64 253
++#define __NR_fadvise64_64 254
++#define __NR_rtas 255
++#define __NR_sys_debug_setcontext 256
++/* Number 257 is reserved for vserver */
++/* Number 258 is reserved for new sys_remap_file_pages */
++/* Number 259 is reserved for new sys_mbind */
++/* Number 260 is reserved for new sys_get_mempolicy */
++/* Number 261 is reserved for new sys_set_mempolicy */
++#define __NR_mq_open 262
++#define __NR_mq_unlink 263
++#define __NR_mq_timedsend 264
++#define __NR_mq_timedreceive 265
++#define __NR_mq_notify 266
++#define __NR_mq_getsetattr 267
++#define __NR_kexec_load 268
++#define __NR_add_key 269
++#define __NR_request_key 270
++#define __NR_keyctl 271
++#define __NR_waitid 272
++#define __NR_ioprio_set 273
++#define __NR_ioprio_get 274
++#define __NR_inotify_init 275
++#define __NR_inotify_add_watch 276
++#define __NR_inotify_rm_watch 277
++
++
++#define syscall_weak(name,wsym,sym) \
++.text; \
++.type wsym,@function; \
++.weak wsym; \
++wsym: ; \
++.type sym,@function; \
++.global sym; \
++sym: \
++ li 0,__NR_##name; \
++ b __unified_syscall
++
++#define syscall(name,sym) \
++.text; \
++.type sym,@function; \
++.global sym; \
++sym: \
++ li 0,__NR_##name; \
++ b __unified_syscall
++
+diff -Nurp dietlibc.orig/powerpc/__testandset.S dietlibc/powerpc/__testandset.S
+--- dietlibc.orig/powerpc/__testandset.S 1970-01-01 01:00:00.000000000 +0100
++++ dietlibc/powerpc/__testandset.S 2002-09-16 13:17:01.000000000 +0200
+@@ -0,0 +1,12 @@
++.global __testandset
++.type __testandset,@function
++.align 2
++__testandset:
++1: lwarx 5,0,3
++ li 0,1
++ stwcx. 0,0,3
++ bne- 1b
++ mr 3,5
++ blr
++.size __testandset,.-__testandset
++
+diff -Nurp dietlibc.orig/powerpc/unified.S dietlibc/powerpc/unified.S
+--- dietlibc.orig/powerpc/unified.S 1970-01-01 01:00:00.000000000 +0100
++++ dietlibc/powerpc/unified.S 2002-01-21 16:55:19.000000000 +0100
+@@ -0,0 +1,40 @@
++#include <dietfeatures.h>
++#include "syscalls.h"
++
++.text
++.type exit,@function
++.weak exit
++exit:
++.type _exit,@function
++.global _exit
++_exit:
++ li 0,__NR_exit
++.global __unified_syscall
++__unified_syscall:
++ sc
++ bnslr+
++
++.global error_unified_syscall
++error_unified_syscall:
++#ifdef WANT_THREAD_SAFE
++ stwu 1,-16(1)
++ mflr 0
++ stw 0,20(1)
++ stw 3,12(1)
++ bl __errno_location
++ lwz 0,12(1)
++ stw 0,0(3)
++ lwz 0,20(1)
++ mtlr 0
++ addi 1,1,16
++#else
++ lis 9,errno@ha
++ stw 3,errno@l(9)
++#endif
++ li 3,-1
++
++/* here we go and "reuse" the return for weak-void functions */
++#include "dietuglyweaks.h"
++
++ blr
++
+diff -Nurp dietlibc.orig/powerpc64/clone.S dietlibc/powerpc64/clone.S
+--- dietlibc.orig/powerpc64/clone.S 1970-01-01 01:00:00.000000000 +0100
++++ dietlibc/powerpc64/clone.S 2005-05-13 20:39:32.000000000 +0200
+@@ -0,0 +1,52 @@
++#include <dietfeatures.h>
++#include "syscalls.h"
++#include <errno.h>
++
++.text
++.weak clone
++clone:
++.global __clone
++__clone:
++ cmpwi 4,0 /* check have non null child_stack pointer */
++ cmpwi cr1, 3,0 /* check have non null thread_funcion */
++ cror eq,4*cr1+eq,eq /* now if eq is set one is or both are zero */
++ beq .Lclone_error
++
++ stdu 1,-64(1) /* alloc some space on the stack */
++ std 29, 16(1) /* save r29,r30,r31 on stack */
++ std 30, 24(1)
++ std 31, 32(1)
++
++ rlwinm 4,4,0,0,27 /* mask out lower 4 bits */
++
++ /* move parameter to positions clone wants them */
++ mr 29,3 /* r29 = r3 fn */
++ mr 30,4 /* r30 = r4 stack */
++ mr 31,6 /* r31 = r6 arg */
++ mr 3, 5 /* r3 = r5 flags */
++
++ li 0, __NR_clone /* load syscall nr. */
++ sc
++
++ cmpwi cr1,3,0 /* compare return of syscall with 0 */
++ crandc 4*cr1+eq,4*cr1+eq,so
++ bne .Lclone_parent /* return was non zero -> .Lclone_parent */
++
++ /* we are the cloned process */
++ mr 1, 30 /* set stack pointer */
++ mtctr 29 /* set count register to fn ? */
++ mr 3, 31 /* set argument */
++ bctrl /* branch trough count register and link */
++ b _exit /* exit thread */
++
++.Lclone_parent:
++ ld 29,16(1) /* restore saved registers */
++ ld 30,24(1)
++ ld 31,32(1)
++ addi 1, 1,64 /* free stack */
++ bnslr+ /* had cloned a thread so return to parent */
++ b error_unified_syscall
++
++.Lclone_error:
++ li 3, EINVAL
++ b error_unified_syscall
+diff -Nurp dietlibc.orig/powerpc64/__longjmp.S dietlibc/powerpc64/__longjmp.S
+--- dietlibc.orig/powerpc64/__longjmp.S 1970-01-01 01:00:00.000000000 +0100
++++ dietlibc/powerpc64/__longjmp.S 2005-09-21 09:33:08.000000000 +0200
+@@ -0,0 +1,54 @@
++#include <setjmp.h>
++
++ .quad .__longjmp,.TOC.@tocbase,0
++ .text
++ .size __longjmp,24
++ .type .__longjmp,@function
++ .globl .__longjmp
++.align 2
++.__longjmp:
++ ld 1,(JB_GPR1*8)(3)
++ ld 2,(JB_GPR2*8)(3)
++ ld 0,(JB_LR*8)(3)
++ ld 14,((JB_GPRS+0)*8)(3)
++ lfd 14,((JB_FPRS+0)*8)(3)
++ ld 15,((JB_GPRS+1)*8)(3)
++ lfd 15,((JB_FPRS+1)*8)(3)
++ ld 16,((JB_GPRS+2)*8)(3)
++ lfd 16,((JB_FPRS+2)*8)(3)
++ ld 17,((JB_GPRS+3)*8)(3)
++ lfd 17,((JB_FPRS+3)*8)(3)
++ ld 18,((JB_GPRS+4)*8)(3)
++ lfd 18,((JB_FPRS+4)*8)(3)
++ ld 19,((JB_GPRS+5)*8)(3)
++ lfd 19,((JB_FPRS+5)*8)(3)
++ ld 20,((JB_GPRS+6)*8)(3)
++ lfd 20,((JB_FPRS+6)*8)(3)
++ mtlr 0
++ ld 21,((JB_GPRS+7)*8)(3)
++ lfd 21,((JB_FPRS+7)*8)(3)
++ ld 22,((JB_GPRS+8)*8)(3)
++ lfd 22,((JB_FPRS+8)*8)(3)
++ ld 0,(JB_CR*8)(3)
++ ld 23,((JB_GPRS+9)*8)(3)
++ lfd 23,((JB_FPRS+9)*8)(3)
++ ld 24,((JB_GPRS+10)*8)(3)
++ lfd 24,((JB_FPRS+10)*8)(3)
++ ld 25,((JB_GPRS+11)*8)(3)
++ lfd 25,((JB_FPRS+11)*8)(3)
++ mtcrf 0xFF,0
++ ld 26,((JB_GPRS+12)*8)(3)
++ lfd 26,((JB_FPRS+12)*8)(3)
++ ld 27,((JB_GPRS+13)*8)(3)
++ lfd 27,((JB_FPRS+13)*8)(3)
++ ld 28,((JB_GPRS+14)*8)(3)
++ lfd 28,((JB_FPRS+14)*8)(3)
++ ld 29,((JB_GPRS+15)*8)(3)
++ lfd 29,((JB_FPRS+15)*8)(3)
++ ld 30,((JB_GPRS+16)*8)(3)
++ lfd 30,((JB_FPRS+16)*8)(3)
++ ld 31,((JB_GPRS+17)*8)(3)
++ lfd 31,((JB_FPRS+17)*8)(3)
++ mr 3,4
++ blr
++.size .__longjmp,.-.__longjmp
+diff -Nurp dietlibc.orig/powerpc64/Makefile.add dietlibc/powerpc64/Makefile.add
+--- dietlibc.orig/powerpc64/Makefile.add 1970-01-01 01:00:00.000000000 +0100
++++ dietlibc/powerpc64/Makefile.add 2006-06-21 21:18:13.787790750 +0200
+@@ -0,0 +1,5 @@
++
++CFLAGS+=-Os -mpowerpc64
++VPATH:=ppc64:syscalls.s:$(VPATH)
++
++CC+=-m64
+diff -Nurp dietlibc.orig/powerpc64/setjmp.S dietlibc/powerpc64/setjmp.S
+--- dietlibc.orig/powerpc64/setjmp.S 1970-01-01 01:00:00.000000000 +0100
++++ dietlibc/powerpc64/setjmp.S 2005-09-21 09:33:08.000000000 +0200
+@@ -0,0 +1,59 @@
++#include <setjmp.h>
++
++#ifdef PIC
++#define JUMPTARGET(name) name##@plt
++#else
++#define JUMPTARGET(name) .name
++#endif
++
++ .quad .__sigsetjmp,.TOC.@tocbase,0
++ .text
++ .size __sigsetjmp,24
++ .type .__sigsetjmp,@function
++ .globl .__sigsetjmp
++.align 2
++.__sigsetjmp:
++ std 1,(JB_GPR1*8)(3)
++ mflr 0
++ std 2,(JB_GPR2*8)(3)
++ std 14,((JB_GPRS+0)*8)(3)
++ stfd 14,((JB_FPRS+0)*8)(3)
++ std 0,(JB_LR*8)(3)
++ std 15,((JB_GPRS+1)*8)(3)
++ stfd 15,((JB_FPRS+1)*8)(3)
++ mfcr 0
++ std 16,((JB_GPRS+2)*8)(3)
++ stfd 16,((JB_FPRS+2)*8)(3)
++ std 0,(JB_CR*8)(3)
++ std 17,((JB_GPRS+3)*8)(3)
++ stfd 17,((JB_FPRS+3)*8)(3)
++ std 18,((JB_GPRS+4)*8)(3)
++ stfd 18,((JB_FPRS+4)*8)(3)
++ std 19,((JB_GPRS+5)*8)(3)
++ stfd 19,((JB_FPRS+5)*8)(3)
++ std 20,((JB_GPRS+6)*8)(3)
++ stfd 20,((JB_FPRS+6)*8)(3)
++ std 21,((JB_GPRS+7)*8)(3)
++ stfd 21,((JB_FPRS+7)*8)(3)
++ std 22,((JB_GPRS+8)*8)(3)
++ stfd 22,((JB_FPRS+8)*8)(3)
++ std 23,((JB_GPRS+9)*8)(3)
++ stfd 23,((JB_FPRS+9)*8)(3)
++ std 24,((JB_GPRS+10)*8)(3)
++ stfd 24,((JB_FPRS+10)*8)(3)
++ std 25,((JB_GPRS+11)*8)(3)
++ stfd 25,((JB_FPRS+11)*8)(3)
++ std 26,((JB_GPRS+12)*8)(3)
++ stfd 26,((JB_FPRS+12)*8)(3)
++ std 27,((JB_GPRS+13)*8)(3)
++ stfd 27,((JB_FPRS+13)*8)(3)
++ std 28,((JB_GPRS+14)*8)(3)
++ stfd 28,((JB_FPRS+14)*8)(3)
++ std 29,((JB_GPRS+15)*8)(3)
++ stfd 29,((JB_FPRS+15)*8)(3)
++ std 30,((JB_GPRS+16)*8)(3)
++ stfd 30,((JB_FPRS+16)*8)(3)
++ std 31,((JB_GPRS+17)*8)(3)
++ stfd 31,((JB_FPRS+17)*8)(3)
++ b JUMPTARGET (__sigjmp_save)
++.size .__sigsetjmp,.-.__sigsetjmp
+diff -Nurp dietlibc.orig/powerpc64/start.S dietlibc/powerpc64/start.S
+--- dietlibc.orig/powerpc64/start.S 1970-01-01 01:00:00.000000000 +0100
++++ dietlibc/powerpc64/start.S 2006-04-04 07:35:14.000000000 +0200
+@@ -0,0 +1,91 @@
++#include "dietfeatures.h"
++
++ .section ".text"
++ .align 2
++ .globl ._start
++ .type ._start,@function
++ .globl _start
++ .section ".opd","aw"
++_start:
++ .quad ._start
++ .quad .TOC.@tocbase, 0
++ .previous
++._start:
++
++/*
++ .section ".text"
++ .align 2
++ .globl ._start
++ .type ._start,@function
++ .globl _start
++ .section ".opd","aw"
++_start:
++ .quad ._start
++ .quad .TOC.@tocbase, 0
++ .previous
++._start:
++*/
++ /* Save the stack pointer, in case we're statically linked under Linux. */
++ mr 9,1
++ /* Set up an initial stack frame, and clear the LR. */
++ clrrdi 1,1,4
++ li 0,0
++ stdu 1,-128(1)
++ mtlr 0
++ std 0,0(1)
++
++ /* r9 contains the initial stack pointer
++ argc = (r9)
++ argv = (r9+4)
++ envp = argv+(argc+1)*4 */
++
++ lis 14,__libc_stack_end@highesta
++ ori 14,14,__libc_stack_end@highera
++ sldi 14,14,32
++ oris 14,14,__libc_stack_end@ha
++ std 9,__libc_stack_end@l(14)
++
++ ldu 3,0(9) /* argc */
++ addi 4,9,8 /* argv */
++ add 5,0,3 /* argc... */
++ addi 5,5,1 /* argc+1...*/
++ slwi 5,5,3 /* (argc+1)*8 */
++ add 5,5,4 /* argv+(argc+1)*8 */
++
++ lis 14,environ@highesta
++ ori 14,14,environ@highera
++ sldi 14,14,32
++ oris 14,14,environ@ha
++ std 5,environ@l(14)
++
++#ifdef WANT_DYNAMIC
++/* #warning dynamic */
++ mr 6,7
++ bl ._dyn_start
++#else
++/* #warning static */
++#define DOTIFY(name) .##name
++ bl DOTIFY(CALL_IN_STARTCODE)
++#endif
++ b .exit
++
++.LT_start:
++ .long 0
++ .quad 0x000c000000000000 | 0x0000200000000000 | 0x0000004000000000
++ .long .LT_start-._start
++ .short .LT_start_name_end-.LT_start_name_start
++.LT_start_name_start:
++ .ascii "_start"
++.LT_start_name_end:
++ .align 2
++ .size _start,.-_start
++
++/* Define a symbol for the first piece of initialized data. */
++ .section ".data"
++__data_start:
++
++/* this is needed for libgcc_eh.a - see gcc-3.4/gcc/config/rs6000/linux-unwind.h */
++ .weak __libc_stack_end
++ .lcomm __libc_stack_end,8,8
++ .type __libc_stack_end,@object
++
+diff -Nurp dietlibc.orig/powerpc64/syscalls.h dietlibc/powerpc64/syscalls.h
+--- dietlibc.orig/powerpc64/syscalls.h 1970-01-01 01:00:00.000000000 +0100
++++ dietlibc/powerpc64/syscalls.h 2005-09-21 09:33:08.000000000 +0200
+@@ -0,0 +1,317 @@
++
++#define __NR_exit 1
++#define __NR_fork 2
++#define __NR_read 3
++#define __NR_write 4
++#define __NR_open 5
++#define __NR_close 6
++#define __NR_waitpid 7
++#define __NR_creat 8
++#define __NR_link 9
++#define __NR_unlink 10
++#define __NR_execve 11
++#define __NR_chdir 12
++#define __NR_time 13
++#define __NR_mknod 14
++#define __NR_chmod 15
++#define __NR_lchown 16
++#define __NR_break 17
++#define __NR_oldstat 18
++#define __NR_lseek 19
++#define __NR_getpid 20
++#define __NR_mount 21
++#define __NR_umount 22
++#define __NR_setuid 23
++#define __NR_getuid 24
++#define __NR_stime 25
++#define __NR_ptrace 26
++#define __NR_alarm 27
++#define __NR_oldfstat 28
++#define __NR_pause 29
++#define __NR_utime 30
++#define __NR_stty 31
++#define __NR_gtty 32
++#define __NR_access 33
++#define __NR_nice 34
++#define __NR_ftime 35
++#define __NR_sync 36
++#define __NR_kill 37
++#define __NR_rename 38
++#define __NR_mkdir 39
++#define __NR_rmdir 40
++#define __NR_dup 41
++#define __NR_pipe 42
++#define __NR_times 43
++#define __NR_prof 44
++#define __NR_brk 45
++#define __NR_setgid 46
++#define __NR_getgid 47
++#define __NR_signal 48
++#define __NR_geteuid 49
++#define __NR_getegid 50
++#define __NR_acct 51
++#define __NR_umount2 52
++#define __NR_lock 53
++#define __NR_ioctl 54
++#define __NR_fcntl 55
++#define __NR_mpx 56
++#define __NR_setpgid 57
++#define __NR_ulimit 58
++#define __NR_oldolduname 59
++#define __NR_umask 60
++#define __NR_chroot 61
++#define __NR_ustat 62
++#define __NR_dup2 63
++#define __NR_getppid 64
++#define __NR_getpgrp 65
++#define __NR_setsid 66
++#define __NR_sigaction 67
++#define __NR_sgetmask 68
++#define __NR_ssetmask 69
++#define __NR_setreuid 70
++#define __NR_setregid 71
++#define __NR_sigsuspend 72
++#define __NR_sigpending 73
++#define __NR_sethostname 74
++#define __NR_setrlimit 75
++#define __NR_getrlimit 76
++#define __NR_getrusage 77
++#define __NR_gettimeofday 78
++#define __NR_settimeofday 79
++#define __NR_getgroups 80
++#define __NR_setgroups 81
++#define __NR_select 82
++#define __NR_symlink 83
++#define __NR_oldlstat 84
++#define __NR_readlink 85
++#define __NR_uselib 86
++#define __NR_swapon 87
++#define __NR_reboot 88
++#define __NR_readdir 89
++#define __NR_mmap 90
++#define __NR_munmap 91
++#define __NR_truncate 92
++#define __NR_ftruncate 93
++#define __NR_fchmod 94
++#define __NR_fchown 95
++#define __NR_getpriority 96
++#define __NR_setpriority 97
++#define __NR_profil 98
++#define __NR_statfs 99
++#define __NR_fstatfs 100
++#define __NR_ioperm 101
++#define __NR_socketcall 102
++#define __NR_syslog 103
++#define __NR_setitimer 104
++#define __NR_getitimer 105
++#define __NR_stat 106
++#define __NR_lstat 107
++#define __NR_fstat 108
++#define __NR_olduname 109
++#define __NR_iopl 110
++#define __NR_vhangup 111
++#define __NR_idle 112
++#define __NR_vm86 113
++#define __NR_wait4 114
++#define __NR_swapoff 115
++#define __NR_sysinfo 116
++#define __NR_ipc 117
++#define __NR_fsync 118
++#define __NR_sigreturn 119
++#define __NR_clone 120
++#define __NR_setdomainname 121
++#define __NR_uname 122
++#define __NR_modify_ldt 123
++#define __NR_adjtimex 124
++#define __NR_mprotect 125
++#define __NR_sigprocmask 126
++#define __NR_create_module 127
++#define __NR_init_module 128
++#define __NR_delete_module 129
++#define __NR_get_kernel_syms 130
++#define __NR_quotactl 131
++#define __NR_getpgid 132
++#define __NR_fchdir 133
++#define __NR_bdflush 134
++#define __NR_sysfs 135
++#define __NR_personality 136
++#define __NR_afs_syscall 137 /* Syscall for Andrew File System */
++#define __NR_setfsuid 138
++#define __NR_setfsgid 139
++#define __NR__llseek 140
++#define __NR_getdents 141
++#define __NR__newselect 142
++#define __NR_flock 143
++#define __NR_msync 144
++#define __NR_readv 145
++#define __NR_writev 146
++#define __NR_getsid 147
++#define __NR_fdatasync 148
++#define __NR__sysctl 149
++#define __NR_mlock 150
++#define __NR_munlock 151
++#define __NR_mlockall 152
++#define __NR_munlockall 153
++#define __NR_sched_setparam 154
++#define __NR_sched_getparam 155
++#define __NR_sched_setscheduler 156
++#define __NR_sched_getscheduler 157
++#define __NR_sched_yield 158
++#define __NR_sched_get_priority_max 159
++#define __NR_sched_get_priority_min 160
++#define __NR_sched_rr_get_interval 161
++#define __NR_nanosleep 162
++#define __NR_mremap 163
++#define __NR_setresuid 164
++#define __NR_getresuid 165
++#define __NR_query_module 166
++#define __NR_poll 167
++#define __NR_nfsservctl 168
++#define __NR_setresgid 169
++#define __NR_getresgid 170
++#define __NR_prctl 171
++#define __NR_rt_sigreturn 172
++#define __NR_rt_sigaction 173
++#define __NR_rt_sigprocmask 174
++#define __NR_rt_sigpending 175
++#define __NR_rt_sigtimedwait 176
++#define __NR_rt_sigqueueinfo 177
++#define __NR_rt_sigsuspend 178
++#define __NR_pread 179
++#define __NR_pwrite 180
++#define __NR_chown 181
++#define __NR_getcwd 182
++#define __NR_capget 183
++#define __NR_capset 184
++#define __NR_sigaltstack 185
++#define __NR_sendfile 186
++#define __NR_getpmsg 187 /* some people actually want streams */
++#define __NR_putpmsg 188 /* some people actually want streams */
++#define __NR_vfork 189
++#define __NR_ugetrlimit 190 /* SuS compliant getrlimit */
++#define __NR_readahead 191
++/* #define __NR_mmap2 192 32bit only */
++/* #define __NR_truncate64 193 32bit only */
++/* #define __NR_ftruncate64 194 32bit only */
++/* #define __NR_stat64 195 32bit only */
++/* #define __NR_lstat64 196 32bit only */
++/* #define __NR_fstat64 197 32bit only */
++#define __NR_pciconfig_read 198
++#define __NR_pciconfig_write 199
++#define __NR_pciconfig_iobase 200
++#define __NR_multiplexer 201
++#define __NR_getdents64 202
++#define __NR_pivot_root 203
++/* #define __NR_fcntl64 204 32bit only */
++#define __NR_madvise 205
++#define __NR_mincore 206
++#define __NR_gettid 207
++#define __NR_tkill 208
++#define __NR_setxattr 209
++#define __NR_lsetxattr 210
++#define __NR_fsetxattr 211
++#define __NR_getxattr 212
++#define __NR_lgetxattr 213
++#define __NR_fgetxattr 214
++#define __NR_listxattr 215
++#define __NR_llistxattr 216
++#define __NR_flistxattr 217
++#define __NR_removexattr 218
++#define __NR_lremovexattr 219
++#define __NR_fremovexattr 220
++#define __NR_futex 221
++#define __NR_sched_setaffinity 222
++#define __NR_sched_getaffinity 223
++/* 224 currently unused */
++#define __NR_tuxcall 225
++/* #define __NR_sendfile64 226 32bit only */
++#define __NR_io_setup 227
++#define __NR_io_destroy 228
++#define __NR_io_getevents 229
++#define __NR_io_submit 230
++#define __NR_io_cancel 231
++#define __NR_set_tid_address 232
++#define __NR_fadvise64 233
++#define __NR_exit_group 234
++#define __NR_lookup_dcookie 235
++#define __NR_epoll_create 236
++#define __NR_epoll_ctl 237
++#define __NR_epoll_wait 238
++#define __NR_remap_file_pages 239
++#define __NR_timer_create 240
++#define __NR_timer_settime 241
++#define __NR_timer_gettime 242
++#define __NR_timer_getoverrun 243
++#define __NR_timer_delete 244
++#define __NR_clock_settime 245
++#define __NR_clock_gettime 246
++#define __NR_clock_getres 247
++#define __NR_clock_nanosleep 248
++#define __NR_swapcontext 249
++#define __NR_tgkill 250
++#define __NR_utimes 251
++#define __NR_statfs64 252
++#define __NR_fstatfs64 253
++/* #define __NR_fadvise64_64 254 32bit only */
++#define __NR_rtas 255
++/* Number 256 is reserved for sys_debug_setcontext */
++/* Number 257 is reserved for vserver */
++/* Number 258 is reserved for new sys_remap_file_pages */
++#define __NR_mbind 259
++#define __NR_get_mempolicy 260
++#define __NR_set_mempolicy 261
++#define __NR_mq_open 262
++#define __NR_mq_unlink 263
++#define __NR_mq_timedsend 264
++#define __NR_mq_timedreceive 265
++#define __NR_mq_notify 266
++#define __NR_mq_getsetattr 267
++#define __NR_kexec_load 268
++#define __NR_add_key 269
++#define __NR_request_key 270
++#define __NR_keyctl 271
++#define __NR_waitid 272
++#define __NR_ioprio_set 273
++#define __NR_ioprio_get 274
++#define __NR_inotify_init 275
++#define __NR_inotify_add_watch 276
++#define __NR_inotify_rm_watch 277
++
++
++
++#define __diet_proto_common(sym) \
++ .section ".opd","aw"; \
++ .align 3; \
++sym: \
++ .quad .sym,.TOC.@tocbase,0; \
++ .previous; \
++ .size sym,24; \
++ .type .sym,@function
++
++#define diet_proto_weak(sym) \
++ .weak sym; \
++ .weak .sym; \
++ __diet_proto_common(sym)
++
++#define diet_proto(sym) \
++ .globl sym; \
++ .globl .sym; \
++ __diet_proto_common(sym)
++
++
++#define syscall_weak(name,wsym,sym) \
++.text; \
++diet_proto_weak(wsym); \
++diet_proto(sym); \
++.wsym: \
++.sym: \
++ li 0,__NR_##name; \
++ b __unified_syscall
++
++#define syscall(name,sym) \
++.text; \
++diet_proto(sym); \
++.sym: \
++ li 0,__NR_##name; \
++ b __unified_syscall
++
+diff -Nurp dietlibc.orig/powerpc64/__testandset.S dietlibc/powerpc64/__testandset.S
+--- dietlibc.orig/powerpc64/__testandset.S 1970-01-01 01:00:00.000000000 +0100
++++ dietlibc/powerpc64/__testandset.S 2003-10-10 15:37:34.000000000 +0200
+@@ -0,0 +1,12 @@
++.global __testandset
++.type __testandset,@function
++.align 2
++__testandset:
++1: lwarx 5,0,3
++ li 0,1
++ stwcx. 0,0,3
++ bne- 1b
++ mr 3,5
++ blr
++.size __testandset,.-__testandset
++
+diff -Nurp dietlibc.orig/powerpc64/umount.S dietlibc/powerpc64/umount.S
+--- dietlibc.orig/powerpc64/umount.S 1970-01-01 01:00:00.000000000 +0100
++++ dietlibc/powerpc64/umount.S 2004-12-17 19:47:59.000000000 +0100
+@@ -0,0 +1,8 @@
++#include "syscalls.h"
++
++ .text
++diet_proto(umount)
++.umount:
++ li 0, __NR_umount2
++ li 4, 0
++ b __unified_syscall
+diff -Nurp dietlibc.orig/powerpc64/unified.S dietlibc/powerpc64/unified.S
+--- dietlibc.orig/powerpc64/unified.S 1970-01-01 01:00:00.000000000 +0100
++++ dietlibc/powerpc64/unified.S 2005-05-13 20:39:32.000000000 +0200
+@@ -0,0 +1,71 @@
++#include <dietfeatures.h>
++#include "syscalls.h"
++
++ .text
++.exit:
++ .weak .exit
++._exit:
++ li 0,__NR_exit
++ .global __unified_syscall
++__unified_syscall:
++ sc
++ bnslr+
++
++ .global error_unified_syscall
++error_unified_syscall:
++
++#ifdef WANT_THREAD_SAFE
++ stdu 1,-128(1)
++ mflr 0
++ std 0,20(1)
++ std 3,12(1)
++ bl .__errno_location
++ ld 0,12(1)
++ stw 0,0(3)
++ ld 0,20(1)
++ mtlr 0
++ addi 1,1,128
++#else
++ lis 9,errno@highesta
++ ori 9,9,errno@highera
++ sldi 9,9,32
++ oris 9,9,errno@ha
++ stw 3,errno@l(9)
++#endif
++ li 3,-1
++
++/* here we go and "reuse" the return for weak-void functions */
++//#include "dietuglyweaks.h"
++.__thread_doexit:
++ .weak .__thread_doexit
++.__fflush_stdin:
++ .weak .__fflush_stdin
++.__fflush_stdout:
++ .weak .__fflush_stdout
++.__fflush_stderr:
++ .weak .__fflush_stderr
++.flockfile:
++ .weak .flockfile
++.funlockfile:
++ .weak .funlockfile
++.__nop:
++ .weak .__nop
++.__you_tried_to_link_a_dietlibc_object_against_glibc:
++ .weak .__you_tried_to_link_a_dietlibc_object_against_glibc
++
++ blr
++ .long 0
++ .byte 0,0,0,1,128,0,0,0
++ .size ._exit,.-._exit
++ .size .exit,.-.exit
++
++diet_proto_weak(__thread_doexit)
++diet_proto_weak(__fflush_stdin)
++diet_proto_weak(__fflush_stdout)
++diet_proto_weak(__fflush_stderr)
++diet_proto_weak(flockfile)
++diet_proto_weak(funlockfile)
++diet_proto_weak(__nop)
++diet_proto_weak(__you_tried_to_link_a_dietlibc_object_against_glibc)
++diet_proto_weak(exit)
++diet_proto(_exit)
+diff -Nurp dietlibc.orig/ppc/clone.S dietlibc/ppc/clone.S
+--- dietlibc.orig/ppc/clone.S 2001-12-13 17:05:03.000000000 +0100
++++ dietlibc/ppc/clone.S 1970-01-01 01:00:00.000000000 +0100
+@@ -1,48 +0,0 @@
+-#include <dietfeatures.h>
+-#include "syscalls.h"
+-#include <errno.h>
+-
+-.text
+-.weak clone
+-clone:
+-.global __clone
+-__clone:
+- cmpwi 4,0 /* check have non null child_stack pointer */
+- cmpwi cr1, 3,0 /* check have non null thread_funcion */
+- cror eq,4*cr1+eq,eq /* now if eq is set one is or both are zero */
+- beq .Lclone_error
+-
+- stwu 1,-32(1) /* alloc some space on the stack */
+- stmw 29, 16(1) /* save r29,r30,r31 on stack */
+-
+- rlwinm 4,4,0,0,27 /* mask out lower 4 bits */
+-
+- /* move parameter to positions clone wants them */
+- mr 29,3 /* r29 = r3 fn */
+- mr 30,4 /* r30 = r4 stack */
+- mr 31,6 /* r31 = r6 arg */
+- mr 3, 5 /* r3 = r5 flags */
+-
+- li 0, __NR_clone /* load syscall nr. */
+- sc
+-
+- cmpwi cr1,3,0 /* compare return of syscall with 0 */
+- crandc 4*cr1+eq,4*cr1+eq,so
+- bne .Lclone_parent /* return was non zero -> .Lclone_parent */
+-
+- /* we are the cloned process */
+- mr 1, 30 /* set stack pointer */
+- mtctr 29 /* set count register to fn ? */
+- mr 3, 31 /* set argument */
+- bctrl /* branch trough count register and link */
+- b _exit /* exit thread */
+-
+-.Lclone_parent:
+- lmw 29,16(1) /* restore saved registers */
+- addi 1, 1,32 /* free stack */
+- bnslr+ /* had cloned a thread so return to parent */
+- b error_unified_syscall
+-
+-.Lclone_error:
+- li 3, EINVAL
+- b error_unified_syscall
+diff -Nurp dietlibc.orig/ppc/__longjmp.S dietlibc/ppc/__longjmp.S
+--- dietlibc.orig/ppc/__longjmp.S 2001-01-25 18:23:36.000000000 +0100
++++ dietlibc/ppc/__longjmp.S 1970-01-01 01:00:00.000000000 +0100
+@@ -1,59 +0,0 @@
+-#include <setjmp.h>
+-
+-
+-#ifdef PIC
+-#define JUMPTARGET(name) name##@plt
+-#else
+-#define JUMPTARGET(name) name
+-#endif
+-
+-.global __longjmp
+-.type __longjmp,@function
+-.align 2
+-__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 0,(JB_CR*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)
+- mtcrf 0xFF,0
+- 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)
+- mr 3,4
+- blr
+-.size __longjmp,.-__longjmp
+-
+diff -Nurp dietlibc.orig/ppc/Makefile.add dietlibc/ppc/Makefile.add
+--- dietlibc.orig/ppc/Makefile.add 2001-01-30 16:01:20.000000000 +0100
++++ dietlibc/ppc/Makefile.add 1970-01-01 01:00:00.000000000 +0100
+@@ -1,3 +0,0 @@
+-
+-CFLAGS+=-mpowerpc-gpopt -mpowerpc-gfxopt -Os
+-VPATH:=ppc:syscalls.s:$(VPATH)
+diff -Nurp dietlibc.orig/ppc/mmap.c dietlibc/ppc/mmap.c
+--- dietlibc.orig/ppc/mmap.c 2001-06-18 23:08:07.000000000 +0200
++++ dietlibc/ppc/mmap.c 1970-01-01 01:00:00.000000000 +0100
+@@ -1,40 +0,0 @@
+-#include "dietfeatures.h"
+-#include <sys/types.h>
+-#include <errno.h>
+-#include "syscalls.h"
+-
+-int mmap(void*start,size_t length,int prot,int flags,int fd,off_t offset) {
+- unsigned long __sc_ret, __sc_err;
+- {
+- register unsigned long __sc_0 __asm__ ("r0");
+- register unsigned long __sc_3 __asm__ ("r3");
+- register unsigned long __sc_4 __asm__ ("r4");
+- register unsigned long __sc_5 __asm__ ("r5");
+- register unsigned long __sc_6 __asm__ ("r6");
+- register unsigned long __sc_7 __asm__ ("r7");
+- register unsigned long __sc_8 __asm__ ("r8");
+-
+- __sc_3 = (unsigned long) (start);
+- __sc_4 = (unsigned long) (length);
+- __sc_5 = (unsigned long) (prot);
+- __sc_6 = (unsigned long) (flags);
+- __sc_7 = (unsigned long) (fd);
+- __sc_8 = (unsigned long) (offset);
+- __sc_0 = __NR_mmap;
+- __asm__ __volatile__
+- ("sc \n\t"
+- "mfcr %1 "
+- : "=&r" (__sc_3), "=&r" (__sc_0)
+- : "0" (__sc_3), "1" (__sc_0),
+- "r" (__sc_4),
+- "r" (__sc_5),
+- "r" (__sc_6),
+- "r" (__sc_7),
+- "r" (__sc_8)
+- : "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12");
+- __sc_ret = __sc_3;
+- __sc_err = __sc_0;
+- }
+- return (__sc_err & 0x10000000 ? errno = __sc_ret, __sc_ret = -1 : 0),
+- (int) __sc_ret;
+-}
+diff -Nurp dietlibc.orig/ppc/setjmp.S dietlibc/ppc/setjmp.S
+--- dietlibc.orig/ppc/setjmp.S 2001-01-09 18:57:44.000000000 +0100
++++ dietlibc/ppc/setjmp.S 1970-01-01 01:00:00.000000000 +0100
+@@ -1,56 +0,0 @@
+-#include <setjmp.h>
+-
+-#ifdef PIC
+-#define JUMPTARGET(name) name##@plt
+-#else
+-#define JUMPTARGET(name) name
+-#endif
+-
+-.global __sigsetjmp
+-.type __sigsetjmp,@function
+-.align 2
+-__sigsetjmp:
+- stw 1,(JB_GPR1*4)(3)
+- mflr 0
+- stw 2,(JB_GPR2*4)(3)
+- stw 14,((JB_GPRS+0)*4)(3)
+- stfd 14,((JB_FPRS+0*2)*4)(3)
+- stw 0,(JB_LR*4)(3)
+- stw 15,((JB_GPRS+1)*4)(3)
+- stfd 15,((JB_FPRS+1*2)*4)(3)
+- mfcr 0
+- stw 16,((JB_GPRS+2)*4)(3)
+- stfd 16,((JB_FPRS+2*2)*4)(3)
+- stw 0,(JB_CR*4)(3)
+- stw 17,((JB_GPRS+3)*4)(3)
+- stfd 17,((JB_FPRS+3*2)*4)(3)
+- stw 18,((JB_GPRS+4)*4)(3)
+- stfd 18,((JB_FPRS+4*2)*4)(3)
+- stw 19,((JB_GPRS+5)*4)(3)
+- stfd 19,((JB_FPRS+5*2)*4)(3)
+- stw 20,((JB_GPRS+6)*4)(3)
+- stfd 20,((JB_FPRS+6*2)*4)(3)
+- stw 21,((JB_GPRS+7)*4)(3)
+- stfd 21,((JB_FPRS+7*2)*4)(3)
+- stw 22,((JB_GPRS+8)*4)(3)
+- stfd 22,((JB_FPRS+8*2)*4)(3)
+- stw 23,((JB_GPRS+9)*4)(3)
+- stfd 23,((JB_FPRS+9*2)*4)(3)
+- stw 24,((JB_GPRS+10)*4)(3)
+- stfd 24,((JB_FPRS+10*2)*4)(3)
+- stw 25,((JB_GPRS+11)*4)(3)
+- stfd 25,((JB_FPRS+11*2)*4)(3)
+- stw 26,((JB_GPRS+12)*4)(3)
+- stfd 26,((JB_FPRS+12*2)*4)(3)
+- stw 27,((JB_GPRS+13)*4)(3)
+- stfd 27,((JB_FPRS+13*2)*4)(3)
+- stw 28,((JB_GPRS+14)*4)(3)
+- stfd 28,((JB_FPRS+14*2)*4)(3)
+- stw 29,((JB_GPRS+15)*4)(3)
+- stfd 29,((JB_FPRS+15*2)*4)(3)
+- stw 30,((JB_GPRS+16)*4)(3)
+- stfd 30,((JB_FPRS+16*2)*4)(3)
+- stw 31,((JB_GPRS+17)*4)(3)
+- stfd 31,((JB_FPRS+17*2)*4)(3)
+- b JUMPTARGET (__sigjmp_save)
+-.size __sigsetjmp,.-__sigsetjmp
+diff -Nurp dietlibc.orig/ppc/start.S dietlibc/ppc/start.S
+--- dietlibc.orig/ppc/start.S 2006-04-04 07:35:14.000000000 +0200
++++ dietlibc/ppc/start.S 1970-01-01 01:00:00.000000000 +0100
+@@ -1,52 +0,0 @@
+-#include "dietfeatures.h"
+-
+-.text
+-.global _start
+-.type _start,@function
+-_start:
+- /* Save the stack pointer, in case we're statically linked under Linux. */
+- mr 9,1
+- /* Set up an initial stack frame, and clear the LR. */
+- clrrwi 1,1,4
+- li 0,0
+- stwu 1,-16(1)
+- mtlr 0
+- stw 0,0(1)
+-
+- /* r9 contains the initial stack pointer
+- argc = (r9)
+- argv = (r9+4)
+- envp = argv+(argc+1)*4 */
+-
+- lis 14,__libc_stack_end@ha
+- stw 9,__libc_stack_end@l(14)
+-
+- lwzu 3,0(9) /* argc */
+- addi 4,9,4 /* argv */
+- add 5,0,3 /* argc... */
+- addi 5,5,1 /* argc+1...*/
+- slwi 5,5,2 /* (argc+1)*4 */
+- add 5,5,4 /* argv+(argc+1)*4 */
+-
+- lis 14,environ@ha
+- stw 5,environ@l(14)
+-
+-#ifdef WANT_DYNAMIC
+- mr 6,7
+- bl _dyn_start
+-#else
+- bl CALL_IN_STARTCODE
+-#endif
+- b exit
+-.size _start,.-_start
+-
+-
+-/* Define a symbol for the first piece of initialized data. */
+- .section ".data"
+-__data_start:
+-
+-/* this is needed for libgcc_eh.a - see gcc-3.4/gcc/config/rs6000/linux-unwind.h */
+- .weak __libc_stack_end
+- .lcomm __libc_stack_end,4,4
+- .type __libc_stack_end,@object
+-
+diff -Nurp dietlibc.orig/ppc/syscalls.h dietlibc/ppc/syscalls.h
+--- dietlibc.orig/ppc/syscalls.h 2005-09-21 09:33:08.000000000 +0200
++++ dietlibc/ppc/syscalls.h 1970-01-01 01:00:00.000000000 +0100
+@@ -1,299 +0,0 @@
+-
+-#define __NR_exit 1
+-#define __NR_fork 2
+-#define __NR_read 3
+-#define __NR_write 4
+-#define __NR_open 5
+-#define __NR_close 6
+-#define __NR_waitpid 7
+-#define __NR_creat 8
+-#define __NR_link 9
+-#define __NR_unlink 10
+-#define __NR_execve 11
+-#define __NR_chdir 12
+-#define __NR_time 13
+-#define __NR_mknod 14
+-#define __NR_chmod 15
+-#define __NR_lchown 16
+-#define __NR_break 17
+-#define __NR_oldstat 18
+-#define __NR_lseek 19
+-#define __NR_getpid 20
+-#define __NR_mount 21
+-#define __NR_umount 22
+-#define __NR_setuid 23
+-#define __NR_getuid 24
+-#define __NR_stime 25
+-#define __NR_ptrace 26
+-#define __NR_alarm 27
+-#define __NR_oldfstat 28
+-#define __NR_pause 29
+-#define __NR_utime 30
+-#define __NR_stty 31
+-#define __NR_gtty 32
+-#define __NR_access 33
+-#define __NR_nice 34
+-#define __NR_ftime 35
+-#define __NR_sync 36
+-#define __NR_kill 37
+-#define __NR_rename 38
+-#define __NR_mkdir 39
+-#define __NR_rmdir 40
+-#define __NR_dup 41
+-#define __NR_pipe 42
+-#define __NR_times 43
+-#define __NR_prof 44
+-#define __NR_brk 45
+-#define __NR_setgid 46
+-#define __NR_getgid 47
+-#define __NR_signal 48
+-#define __NR_geteuid 49
+-#define __NR_getegid 50
+-#define __NR_acct 51
+-#define __NR_umount2 52
+-#define __NR_lock 53
+-#define __NR_ioctl 54
+-#define __NR_fcntl 55
+-#define __NR_mpx 56
+-#define __NR_setpgid 57
+-#define __NR_ulimit 58
+-#define __NR_oldolduname 59
+-#define __NR_umask 60
+-#define __NR_chroot 61
+-#define __NR_ustat 62
+-#define __NR_dup2 63
+-#define __NR_getppid 64
+-#define __NR_getpgrp 65
+-#define __NR_setsid 66
+-#define __NR_sigaction 67
+-#define __NR_sgetmask 68
+-#define __NR_ssetmask 69
+-#define __NR_setreuid 70
+-#define __NR_setregid 71
+-#define __NR_sigsuspend 72
+-#define __NR_sigpending 73
+-#define __NR_sethostname 74
+-#define __NR_setrlimit 75
+-#define __NR_getrlimit 76
+-#define __NR_getrusage 77
+-#define __NR_gettimeofday 78
+-#define __NR_settimeofday 79
+-#define __NR_getgroups 80
+-#define __NR_setgroups 81
+-#define __NR_select 82
+-#define __NR_symlink 83
+-#define __NR_oldlstat 84
+-#define __NR_readlink 85
+-#define __NR_uselib 86
+-#define __NR_swapon 87
+-#define __NR_reboot 88
+-#define __NR_readdir 89
+-#define __NR_mmap 90
+-#define __NR_munmap 91
+-#define __NR_truncate 92
+-#define __NR_ftruncate 93
+-#define __NR_fchmod 94
+-#define __NR_fchown 95
+-#define __NR_getpriority 96
+-#define __NR_setpriority 97
+-#define __NR_profil 98
+-#define __NR_statfs 99
+-#define __NR_fstatfs 100
+-#define __NR_ioperm 101
+-#define __NR_socketcall 102
+-#define __NR_syslog 103
+-#define __NR_setitimer 104
+-#define __NR_getitimer 105
+-#define __NR_stat 106
+-#define __NR_lstat 107
+-#define __NR_fstat 108
+-#define __NR_olduname 109
+-#define __NR_iopl 110
+-#define __NR_vhangup 111
+-#define __NR_idle 112
+-#define __NR_vm86 113
+-#define __NR_wait4 114
+-#define __NR_swapoff 115
+-#define __NR_sysinfo 116
+-#define __NR_ipc 117
+-#define __NR_fsync 118
+-#define __NR_sigreturn 119
+-#define __NR_clone 120
+-#define __NR_setdomainname 121
+-#define __NR_uname 122
+-#define __NR_modify_ldt 123
+-#define __NR_adjtimex 124
+-#define __NR_mprotect 125
+-#define __NR_sigprocmask 126
+-#define __NR_create_module 127
+-#define __NR_init_module 128
+-#define __NR_delete_module 129
+-#define __NR_get_kernel_syms 130
+-#define __NR_quotactl 131
+-#define __NR_getpgid 132
+-#define __NR_fchdir 133
+-#define __NR_bdflush 134
+-#define __NR_sysfs 135
+-#define __NR_personality 136
+-#define __NR_afs_syscall 137 /* Syscall for Andrew File System */
+-#define __NR_setfsuid 138
+-#define __NR_setfsgid 139
+-#define __NR__llseek 140
+-#define __NR_getdents 141
+-#define __NR__newselect 142
+-#define __NR_flock 143
+-#define __NR_msync 144
+-#define __NR_readv 145
+-#define __NR_writev 146
+-#define __NR_getsid 147
+-#define __NR_fdatasync 148
+-#define __NR__sysctl 149
+-#define __NR_mlock 150
+-#define __NR_munlock 151
+-#define __NR_mlockall 152
+-#define __NR_munlockall 153
+-#define __NR_sched_setparam 154
+-#define __NR_sched_getparam 155
+-#define __NR_sched_setscheduler 156
+-#define __NR_sched_getscheduler 157
+-#define __NR_sched_yield 158
+-#define __NR_sched_get_priority_max 159
+-#define __NR_sched_get_priority_min 160
+-#define __NR_sched_rr_get_interval 161
+-#define __NR_nanosleep 162
+-#define __NR_mremap 163
+-#define __NR_setresuid 164
+-#define __NR_getresuid 165
+-#define __NR_query_module 166
+-#define __NR_poll 167
+-#define __NR_nfsservctl 168
+-#define __NR_setresgid 169
+-#define __NR_getresgid 170
+-#define __NR_prctl 171
+-#define __NR_rt_sigreturn 172
+-#define __NR_rt_sigaction 173
+-#define __NR_rt_sigprocmask 174
+-#define __NR_rt_sigpending 175
+-#define __NR_rt_sigtimedwait 176
+-#define __NR_rt_sigqueueinfo 177
+-#define __NR_rt_sigsuspend 178
+-#define __NR_pread 179
+-#define __NR_pwrite 180
+-#define __NR_chown 181
+-#define __NR_getcwd 182
+-#define __NR_capget 183
+-#define __NR_capset 184
+-#define __NR_sigaltstack 185
+-#define __NR_sendfile 186
+-#define __NR_getpmsg 187 /* some people actually want streams */
+-#define __NR_putpmsg 188 /* some people actually want streams */
+-#define __NR_vfork 189
+-#define __NR_ugetrlimit 190 /* SuS compliant getrlimit */
+-#define __NR_readahead 191
+-#define __NR_mmap2 192
+-#define __NR_truncate64 193
+-#define __NR_ftruncate64 194
+-#define __NR_stat64 195
+-#define __NR_lstat64 196
+-#define __NR_fstat64 197
+-#define __NR_pciconfig_read 198
+-#define __NR_pciconfig_write 199
+-#define __NR_pciconfig_iobase 200
+-#define __NR_multiplexer 201
+-#define __NR_getdents64 202
+-#define __NR_pivot_root 203
+-#define __NR_fcntl64 204
+-#define __NR_madvise 205
+-#define __NR_mincore 206
+-#define __NR_gettid 207
+-#define __NR_tkill 208
+-#define __NR_setxattr 209
+-#define __NR_lsetxattr 210
+-#define __NR_fsetxattr 211
+-#define __NR_getxattr 212
+-#define __NR_lgetxattr 213
+-#define __NR_fgetxattr 214
+-#define __NR_listxattr 215
+-#define __NR_llistxattr 216
+-#define __NR_flistxattr 217
+-#define __NR_removexattr 218
+-#define __NR_lremovexattr 219
+-#define __NR_fremovexattr 220
+-#define __NR_futex 221
+-#define __NR_sched_setaffinity 222
+-#define __NR_sched_getaffinity 223
+-/* 224 currently unused */
+-#define __NR_tuxcall 225
+-#define __NR_sendfile64 226
+-#define __NR_io_setup 227
+-#define __NR_io_destroy 228
+-#define __NR_io_getevents 229
+-#define __NR_io_submit 230
+-#define __NR_io_cancel 231
+-#define __NR_set_tid_address 232
+-#define __NR_fadvise64 233
+-#define __NR_exit_group 234
+-#define __NR_lookup_dcookie 235
+-#define __NR_epoll_create 236
+-#define __NR_epoll_ctl 237
+-#define __NR_epoll_wait 238
+-#define __NR_remap_file_pages 239
+-#define __NR_timer_create 240
+-#define __NR_timer_settime 241
+-#define __NR_timer_gettime 242
+-#define __NR_timer_getoverrun 243
+-#define __NR_timer_delete 244
+-#define __NR_clock_settime 245
+-#define __NR_clock_gettime 246
+-#define __NR_clock_getres 247
+-#define __NR_clock_nanosleep 248
+-#define __NR_swapcontext 249
+-#define __NR_tgkill 250
+-#define __NR_utimes 251
+-#define __NR_statfs64 252
+-#define __NR_fstatfs64 253
+-#define __NR_fadvise64_64 254
+-#define __NR_rtas 255
+-#define __NR_sys_debug_setcontext 256
+-/* Number 257 is reserved for vserver */
+-/* Number 258 is reserved for new sys_remap_file_pages */
+-/* Number 259 is reserved for new sys_mbind */
+-/* Number 260 is reserved for new sys_get_mempolicy */
+-/* Number 261 is reserved for new sys_set_mempolicy */
+-#define __NR_mq_open 262
+-#define __NR_mq_unlink 263
+-#define __NR_mq_timedsend 264
+-#define __NR_mq_timedreceive 265
+-#define __NR_mq_notify 266
+-#define __NR_mq_getsetattr 267
+-#define __NR_kexec_load 268
+-#define __NR_add_key 269
+-#define __NR_request_key 270
+-#define __NR_keyctl 271
+-#define __NR_waitid 272
+-#define __NR_ioprio_set 273
+-#define __NR_ioprio_get 274
+-#define __NR_inotify_init 275
+-#define __NR_inotify_add_watch 276
+-#define __NR_inotify_rm_watch 277
+-
+-
+-#define syscall_weak(name,wsym,sym) \
+-.text; \
+-.type wsym,@function; \
+-.weak wsym; \
+-wsym: ; \
+-.type sym,@function; \
+-.global sym; \
+-sym: \
+- li 0,__NR_##name; \
+- b __unified_syscall
+-
+-#define syscall(name,sym) \
+-.text; \
+-.type sym,@function; \
+-.global sym; \
+-sym: \
+- li 0,__NR_##name; \
+- b __unified_syscall
+-
+diff -Nurp dietlibc.orig/ppc/__testandset.S dietlibc/ppc/__testandset.S
+--- dietlibc.orig/ppc/__testandset.S 2002-09-16 13:17:01.000000000 +0200
++++ dietlibc/ppc/__testandset.S 1970-01-01 01:00:00.000000000 +0100
+@@ -1,12 +0,0 @@
+-.global __testandset
+-.type __testandset,@function
+-.align 2
+-__testandset:
+-1: lwarx 5,0,3
+- li 0,1
+- stwcx. 0,0,3
+- bne- 1b
+- mr 3,5
+- blr
+-.size __testandset,.-__testandset
+-
+diff -Nurp dietlibc.orig/ppc/unified.S dietlibc/ppc/unified.S
+--- dietlibc.orig/ppc/unified.S 2002-01-21 16:55:19.000000000 +0100
++++ dietlibc/ppc/unified.S 1970-01-01 01:00:00.000000000 +0100
+@@ -1,40 +0,0 @@
+-#include <dietfeatures.h>
+-#include "syscalls.h"
+-
+-.text
+-.type exit,@function
+-.weak exit
+-exit:
+-.type _exit,@function
+-.global _exit
+-_exit:
+- li 0,__NR_exit
+-.global __unified_syscall
+-__unified_syscall:
+- sc
+- bnslr+
+-
+-.global error_unified_syscall
+-error_unified_syscall:
+-#ifdef WANT_THREAD_SAFE
+- stwu 1,-16(1)
+- mflr 0
+- stw 0,20(1)
+- stw 3,12(1)
+- bl __errno_location
+- lwz 0,12(1)
+- stw 0,0(3)
+- lwz 0,20(1)
+- mtlr 0
+- addi 1,1,16
+-#else
+- lis 9,errno@ha
+- stw 3,errno@l(9)
+-#endif
+- li 3,-1
+-
+-/* here we go and "reuse" the return for weak-void functions */
+-#include "dietuglyweaks.h"
+-
+- blr
+-
+diff -Nurp dietlibc.orig/ppc64/clone.S dietlibc/ppc64/clone.S
+--- dietlibc.orig/ppc64/clone.S 2005-05-13 20:39:32.000000000 +0200
++++ dietlibc/ppc64/clone.S 1970-01-01 01:00:00.000000000 +0100
+@@ -1,52 +0,0 @@
+-#include <dietfeatures.h>
+-#include "syscalls.h"
+-#include <errno.h>
+-
+-.text
+-.weak clone
+-clone:
+-.global __clone
+-__clone:
+- cmpwi 4,0 /* check have non null child_stack pointer */
+- cmpwi cr1, 3,0 /* check have non null thread_funcion */
+- cror eq,4*cr1+eq,eq /* now if eq is set one is or both are zero */
+- beq .Lclone_error
+-
+- stdu 1,-64(1) /* alloc some space on the stack */
+- std 29, 16(1) /* save r29,r30,r31 on stack */
+- std 30, 24(1)
+- std 31, 32(1)
+-
+- rlwinm 4,4,0,0,27 /* mask out lower 4 bits */
+-
+- /* move parameter to positions clone wants them */
+- mr 29,3 /* r29 = r3 fn */
+- mr 30,4 /* r30 = r4 stack */
+- mr 31,6 /* r31 = r6 arg */
+- mr 3, 5 /* r3 = r5 flags */
+-
+- li 0, __NR_clone /* load syscall nr. */
+- sc
+-
+- cmpwi cr1,3,0 /* compare return of syscall with 0 */
+- crandc 4*cr1+eq,4*cr1+eq,so
+- bne .Lclone_parent /* return was non zero -> .Lclone_parent */
+-
+- /* we are the cloned process */
+- mr 1, 30 /* set stack pointer */
+- mtctr 29 /* set count register to fn ? */
+- mr 3, 31 /* set argument */
+- bctrl /* branch trough count register and link */
+- b _exit /* exit thread */
+-
+-.Lclone_parent:
+- ld 29,16(1) /* restore saved registers */
+- ld 30,24(1)
+- ld 31,32(1)
+- addi 1, 1,64 /* free stack */
+- bnslr+ /* had cloned a thread so return to parent */
+- b error_unified_syscall
+-
+-.Lclone_error:
+- li 3, EINVAL
+- b error_unified_syscall
+diff -Nurp dietlibc.orig/ppc64/__longjmp.S dietlibc/ppc64/__longjmp.S
+--- dietlibc.orig/ppc64/__longjmp.S 2005-09-21 09:33:08.000000000 +0200
++++ dietlibc/ppc64/__longjmp.S 1970-01-01 01:00:00.000000000 +0100
+@@ -1,54 +0,0 @@
+-#include <setjmp.h>
+-
+- .quad .__longjmp,.TOC.@tocbase,0
+- .text
+- .size __longjmp,24
+- .type .__longjmp,@function
+- .globl .__longjmp
+-.align 2
+-.__longjmp:
+- ld 1,(JB_GPR1*8)(3)
+- ld 2,(JB_GPR2*8)(3)
+- ld 0,(JB_LR*8)(3)
+- ld 14,((JB_GPRS+0)*8)(3)
+- lfd 14,((JB_FPRS+0)*8)(3)
+- ld 15,((JB_GPRS+1)*8)(3)
+- lfd 15,((JB_FPRS+1)*8)(3)
+- ld 16,((JB_GPRS+2)*8)(3)
+- lfd 16,((JB_FPRS+2)*8)(3)
+- ld 17,((JB_GPRS+3)*8)(3)
+- lfd 17,((JB_FPRS+3)*8)(3)
+- ld 18,((JB_GPRS+4)*8)(3)
+- lfd 18,((JB_FPRS+4)*8)(3)
+- ld 19,((JB_GPRS+5)*8)(3)
+- lfd 19,((JB_FPRS+5)*8)(3)
+- ld 20,((JB_GPRS+6)*8)(3)
+- lfd 20,((JB_FPRS+6)*8)(3)
+- mtlr 0
+- ld 21,((JB_GPRS+7)*8)(3)
+- lfd 21,((JB_FPRS+7)*8)(3)
+- ld 22,((JB_GPRS+8)*8)(3)
+- lfd 22,((JB_FPRS+8)*8)(3)
+- ld 0,(JB_CR*8)(3)
+- ld 23,((JB_GPRS+9)*8)(3)
+- lfd 23,((JB_FPRS+9)*8)(3)
+- ld 24,((JB_GPRS+10)*8)(3)
+- lfd 24,((JB_FPRS+10)*8)(3)
+- ld 25,((JB_GPRS+11)*8)(3)
+- lfd 25,((JB_FPRS+11)*8)(3)
+- mtcrf 0xFF,0
+- ld 26,((JB_GPRS+12)*8)(3)
+- lfd 26,((JB_FPRS+12)*8)(3)
+- ld 27,((JB_GPRS+13)*8)(3)
+- lfd 27,((JB_FPRS+13)*8)(3)
+- ld 28,((JB_GPRS+14)*8)(3)
+- lfd 28,((JB_FPRS+14)*8)(3)
+- ld 29,((JB_GPRS+15)*8)(3)
+- lfd 29,((JB_FPRS+15)*8)(3)
+- ld 30,((JB_GPRS+16)*8)(3)
+- lfd 30,((JB_FPRS+16)*8)(3)
+- ld 31,((JB_GPRS+17)*8)(3)
+- lfd 31,((JB_FPRS+17)*8)(3)
+- mr 3,4
+- blr
+-.size .__longjmp,.-.__longjmp
+diff -Nurp dietlibc.orig/ppc64/Makefile.add dietlibc/ppc64/Makefile.add
+--- dietlibc.orig/ppc64/Makefile.add 2006-06-21 21:18:13.787790000 +0200
++++ dietlibc/ppc64/Makefile.add 1970-01-01 01:00:00.000000000 +0100
+@@ -1,5 +0,0 @@
+-
+-CFLAGS+=-Os -mpowerpc64
+-VPATH:=ppc64:syscalls.s:$(VPATH)
+-
+-CC+=-m64
+diff -Nurp dietlibc.orig/ppc64/setjmp.S dietlibc/ppc64/setjmp.S
+--- dietlibc.orig/ppc64/setjmp.S 2005-09-21 09:33:08.000000000 +0200
++++ dietlibc/ppc64/setjmp.S 1970-01-01 01:00:00.000000000 +0100
+@@ -1,59 +0,0 @@
+-#include <setjmp.h>
+-
+-#ifdef PIC
+-#define JUMPTARGET(name) name##@plt
+-#else
+-#define JUMPTARGET(name) .name
+-#endif
+-
+- .quad .__sigsetjmp,.TOC.@tocbase,0
+- .text
+- .size __sigsetjmp,24
+- .type .__sigsetjmp,@function
+- .globl .__sigsetjmp
+-.align 2
+-.__sigsetjmp:
+- std 1,(JB_GPR1*8)(3)
+- mflr 0
+- std 2,(JB_GPR2*8)(3)
+- std 14,((JB_GPRS+0)*8)(3)
+- stfd 14,((JB_FPRS+0)*8)(3)
+- std 0,(JB_LR*8)(3)
+- std 15,((JB_GPRS+1)*8)(3)
+- stfd 15,((JB_FPRS+1)*8)(3)
+- mfcr 0
+- std 16,((JB_GPRS+2)*8)(3)
+- stfd 16,((JB_FPRS+2)*8)(3)
+- std 0,(JB_CR*8)(3)
+- std 17,((JB_GPRS+3)*8)(3)
+- stfd 17,((JB_FPRS+3)*8)(3)
+- std 18,((JB_GPRS+4)*8)(3)
+- stfd 18,((JB_FPRS+4)*8)(3)
+- std 19,((JB_GPRS+5)*8)(3)
+- stfd 19,((JB_FPRS+5)*8)(3)
+- std 20,((JB_GPRS+6)*8)(3)
+- stfd 20,((JB_FPRS+6)*8)(3)
+- std 21,((JB_GPRS+7)*8)(3)
+- stfd 21,((JB_FPRS+7)*8)(3)
+- std 22,((JB_GPRS+8)*8)(3)
+- stfd 22,((JB_FPRS+8)*8)(3)
+- std 23,((JB_GPRS+9)*8)(3)
+- stfd 23,((JB_FPRS+9)*8)(3)
+- std 24,((JB_GPRS+10)*8)(3)
+- stfd 24,((JB_FPRS+10)*8)(3)
+- std 25,((JB_GPRS+11)*8)(3)
+- stfd 25,((JB_FPRS+11)*8)(3)
+- std 26,((JB_GPRS+12)*8)(3)
+- stfd 26,((JB_FPRS+12)*8)(3)
+- std 27,((JB_GPRS+13)*8)(3)
+- stfd 27,((JB_FPRS+13)*8)(3)
+- std 28,((JB_GPRS+14)*8)(3)
+- stfd 28,((JB_FPRS+14)*8)(3)
+- std 29,((JB_GPRS+15)*8)(3)
+- stfd 29,((JB_FPRS+15)*8)(3)
+- std 30,((JB_GPRS+16)*8)(3)
+- stfd 30,((JB_FPRS+16)*8)(3)
+- std 31,((JB_GPRS+17)*8)(3)
+- stfd 31,((JB_FPRS+17)*8)(3)
+- b JUMPTARGET (__sigjmp_save)
+-.size .__sigsetjmp,.-.__sigsetjmp
+diff -Nurp dietlibc.orig/ppc64/start.S dietlibc/ppc64/start.S
+--- dietlibc.orig/ppc64/start.S 2006-04-04 07:35:14.000000000 +0200
++++ dietlibc/ppc64/start.S 1970-01-01 01:00:00.000000000 +0100
+@@ -1,91 +0,0 @@
+-#include "dietfeatures.h"
+-
+- .section ".text"
+- .align 2
+- .globl ._start
+- .type ._start,@function
+- .globl _start
+- .section ".opd","aw"
+-_start:
+- .quad ._start
+- .quad .TOC.@tocbase, 0
+- .previous
+-._start:
+-
+-/*
+- .section ".text"
+- .align 2
+- .globl ._start
+- .type ._start,@function
+- .globl _start
+- .section ".opd","aw"
+-_start:
+- .quad ._start
+- .quad .TOC.@tocbase, 0
+- .previous
+-._start:
+-*/
+- /* Save the stack pointer, in case we're statically linked under Linux. */
+- mr 9,1
+- /* Set up an initial stack frame, and clear the LR. */
+- clrrdi 1,1,4
+- li 0,0
+- stdu 1,-128(1)
+- mtlr 0
+- std 0,0(1)
+-
+- /* r9 contains the initial stack pointer
+- argc = (r9)
+- argv = (r9+4)
+- envp = argv+(argc+1)*4 */
+-
+- lis 14,__libc_stack_end@highesta
+- ori 14,14,__libc_stack_end@highera
+- sldi 14,14,32
+- oris 14,14,__libc_stack_end@ha
+- std 9,__libc_stack_end@l(14)
+-
+- ldu 3,0(9) /* argc */
+- addi 4,9,8 /* argv */
+- add 5,0,3 /* argc... */
+- addi 5,5,1 /* argc+1...*/
+- slwi 5,5,3 /* (argc+1)*8 */
+- add 5,5,4 /* argv+(argc+1)*8 */
+-
+- lis 14,environ@highesta
+- ori 14,14,environ@highera
+- sldi 14,14,32
+- oris 14,14,environ@ha
+- std 5,environ@l(14)
+-
+-#ifdef WANT_DYNAMIC
+-/* #warning dynamic */
+- mr 6,7
+- bl ._dyn_start
+-#else
+-/* #warning static */
+-#define DOTIFY(name) .##name
+- bl DOTIFY(CALL_IN_STARTCODE)
+-#endif
+- b .exit
+-
+-.LT_start:
+- .long 0
+- .quad 0x000c000000000000 | 0x0000200000000000 | 0x0000004000000000
+- .long .LT_start-._start
+- .short .LT_start_name_end-.LT_start_name_start
+-.LT_start_name_start:
+- .ascii "_start"
+-.LT_start_name_end:
+- .align 2
+- .size _start,.-_start
+-
+-/* Define a symbol for the first piece of initialized data. */
+- .section ".data"
+-__data_start:
+-
+-/* this is needed for libgcc_eh.a - see gcc-3.4/gcc/config/rs6000/linux-unwind.h */
+- .weak __libc_stack_end
+- .lcomm __libc_stack_end,8,8
+- .type __libc_stack_end,@object
+-
+diff -Nurp dietlibc.orig/ppc64/syscalls.h dietlibc/ppc64/syscalls.h
+--- dietlibc.orig/ppc64/syscalls.h 2005-09-21 09:33:08.000000000 +0200
++++ dietlibc/ppc64/syscalls.h 1970-01-01 01:00:00.000000000 +0100
+@@ -1,317 +0,0 @@
+-
+-#define __NR_exit 1
+-#define __NR_fork 2
+-#define __NR_read 3
+-#define __NR_write 4
+-#define __NR_open 5
+-#define __NR_close 6
+-#define __NR_waitpid 7
+-#define __NR_creat 8
+-#define __NR_link 9
+-#define __NR_unlink 10
+-#define __NR_execve 11
+-#define __NR_chdir 12
+-#define __NR_time 13
+-#define __NR_mknod 14
+-#define __NR_chmod 15
+-#define __NR_lchown 16
+-#define __NR_break 17
+-#define __NR_oldstat 18
+-#define __NR_lseek 19
+-#define __NR_getpid 20
+-#define __NR_mount 21
+-#define __NR_umount 22
+-#define __NR_setuid 23
+-#define __NR_getuid 24
+-#define __NR_stime 25
+-#define __NR_ptrace 26
+-#define __NR_alarm 27
+-#define __NR_oldfstat 28
+-#define __NR_pause 29
+-#define __NR_utime 30
+-#define __NR_stty 31
+-#define __NR_gtty 32
+-#define __NR_access 33
+-#define __NR_nice 34
+-#define __NR_ftime 35
+-#define __NR_sync 36
+-#define __NR_kill 37
+-#define __NR_rename 38
+-#define __NR_mkdir 39
+-#define __NR_rmdir 40
+-#define __NR_dup 41
+-#define __NR_pipe 42
+-#define __NR_times 43
+-#define __NR_prof 44
+-#define __NR_brk 45
+-#define __NR_setgid 46
+-#define __NR_getgid 47
+-#define __NR_signal 48
+-#define __NR_geteuid 49
+-#define __NR_getegid 50
+-#define __NR_acct 51
+-#define __NR_umount2 52
+-#define __NR_lock 53
+-#define __NR_ioctl 54
+-#define __NR_fcntl 55
+-#define __NR_mpx 56
+-#define __NR_setpgid 57
+-#define __NR_ulimit 58
+-#define __NR_oldolduname 59
+-#define __NR_umask 60
+-#define __NR_chroot 61
+-#define __NR_ustat 62
+-#define __NR_dup2 63
+-#define __NR_getppid 64
+-#define __NR_getpgrp 65
+-#define __NR_setsid 66
+-#define __NR_sigaction 67
+-#define __NR_sgetmask 68
+-#define __NR_ssetmask 69
+-#define __NR_setreuid 70
+-#define __NR_setregid 71
+-#define __NR_sigsuspend 72
+-#define __NR_sigpending 73
+-#define __NR_sethostname 74
+-#define __NR_setrlimit 75
+-#define __NR_getrlimit 76
+-#define __NR_getrusage 77
+-#define __NR_gettimeofday 78
+-#define __NR_settimeofday 79
+-#define __NR_getgroups 80
+-#define __NR_setgroups 81
+-#define __NR_select 82
+-#define __NR_symlink 83
+-#define __NR_oldlstat 84
+-#define __NR_readlink 85
+-#define __NR_uselib 86
+-#define __NR_swapon 87
+-#define __NR_reboot 88
+-#define __NR_readdir 89
+-#define __NR_mmap 90
+-#define __NR_munmap 91
+-#define __NR_truncate 92
+-#define __NR_ftruncate 93
+-#define __NR_fchmod 94
+-#define __NR_fchown 95
+-#define __NR_getpriority 96
+-#define __NR_setpriority 97
+-#define __NR_profil 98
+-#define __NR_statfs 99
+-#define __NR_fstatfs 100
+-#define __NR_ioperm 101
+-#define __NR_socketcall 102
+-#define __NR_syslog 103
+-#define __NR_setitimer 104
+-#define __NR_getitimer 105
+-#define __NR_stat 106
+-#define __NR_lstat 107
+-#define __NR_fstat 108
+-#define __NR_olduname 109
+-#define __NR_iopl 110
+-#define __NR_vhangup 111
+-#define __NR_idle 112
+-#define __NR_vm86 113
+-#define __NR_wait4 114
+-#define __NR_swapoff 115
+-#define __NR_sysinfo 116
+-#define __NR_ipc 117
+-#define __NR_fsync 118
+-#define __NR_sigreturn 119
+-#define __NR_clone 120
+-#define __NR_setdomainname 121
+-#define __NR_uname 122
+-#define __NR_modify_ldt 123
+-#define __NR_adjtimex 124
+-#define __NR_mprotect 125
+-#define __NR_sigprocmask 126
+-#define __NR_create_module 127
+-#define __NR_init_module 128
+-#define __NR_delete_module 129
+-#define __NR_get_kernel_syms 130
+-#define __NR_quotactl 131
+-#define __NR_getpgid 132
+-#define __NR_fchdir 133
+-#define __NR_bdflush 134
+-#define __NR_sysfs 135
+-#define __NR_personality 136
+-#define __NR_afs_syscall 137 /* Syscall for Andrew File System */
+-#define __NR_setfsuid 138
+-#define __NR_setfsgid 139
+-#define __NR__llseek 140
+-#define __NR_getdents 141
+-#define __NR__newselect 142
+-#define __NR_flock 143
+-#define __NR_msync 144
+-#define __NR_readv 145
+-#define __NR_writev 146
+-#define __NR_getsid 147
+-#define __NR_fdatasync 148
+-#define __NR__sysctl 149
+-#define __NR_mlock 150
+-#define __NR_munlock 151
+-#define __NR_mlockall 152
+-#define __NR_munlockall 153
+-#define __NR_sched_setparam 154
+-#define __NR_sched_getparam 155
+-#define __NR_sched_setscheduler 156
+-#define __NR_sched_getscheduler 157
+-#define __NR_sched_yield 158
+-#define __NR_sched_get_priority_max 159
+-#define __NR_sched_get_priority_min 160
+-#define __NR_sched_rr_get_interval 161
+-#define __NR_nanosleep 162
+-#define __NR_mremap 163
+-#define __NR_setresuid 164
+-#define __NR_getresuid 165
+-#define __NR_query_module 166
+-#define __NR_poll 167
+-#define __NR_nfsservctl 168
+-#define __NR_setresgid 169
+-#define __NR_getresgid 170
+-#define __NR_prctl 171
+-#define __NR_rt_sigreturn 172
+-#define __NR_rt_sigaction 173
+-#define __NR_rt_sigprocmask 174
+-#define __NR_rt_sigpending 175
+-#define __NR_rt_sigtimedwait 176
+-#define __NR_rt_sigqueueinfo 177
+-#define __NR_rt_sigsuspend 178
+-#define __NR_pread 179
+-#define __NR_pwrite 180
+-#define __NR_chown 181
+-#define __NR_getcwd 182
+-#define __NR_capget 183
+-#define __NR_capset 184
+-#define __NR_sigaltstack 185
+-#define __NR_sendfile 186
+-#define __NR_getpmsg 187 /* some people actually want streams */
+-#define __NR_putpmsg 188 /* some people actually want streams */
+-#define __NR_vfork 189
+-#define __NR_ugetrlimit 190 /* SuS compliant getrlimit */
+-#define __NR_readahead 191
+-/* #define __NR_mmap2 192 32bit only */
+-/* #define __NR_truncate64 193 32bit only */
+-/* #define __NR_ftruncate64 194 32bit only */
+-/* #define __NR_stat64 195 32bit only */
+-/* #define __NR_lstat64 196 32bit only */
+-/* #define __NR_fstat64 197 32bit only */
+-#define __NR_pciconfig_read 198
+-#define __NR_pciconfig_write 199
+-#define __NR_pciconfig_iobase 200
+-#define __NR_multiplexer 201
+-#define __NR_getdents64 202
+-#define __NR_pivot_root 203
+-/* #define __NR_fcntl64 204 32bit only */
+-#define __NR_madvise 205
+-#define __NR_mincore 206
+-#define __NR_gettid 207
+-#define __NR_tkill 208
+-#define __NR_setxattr 209
+-#define __NR_lsetxattr 210
+-#define __NR_fsetxattr 211
+-#define __NR_getxattr 212
+-#define __NR_lgetxattr 213
+-#define __NR_fgetxattr 214
+-#define __NR_listxattr 215
+-#define __NR_llistxattr 216
+-#define __NR_flistxattr 217
+-#define __NR_removexattr 218
+-#define __NR_lremovexattr 219
+-#define __NR_fremovexattr 220
+-#define __NR_futex 221
+-#define __NR_sched_setaffinity 222
+-#define __NR_sched_getaffinity 223
+-/* 224 currently unused */
+-#define __NR_tuxcall 225
+-/* #define __NR_sendfile64 226 32bit only */
+-#define __NR_io_setup 227
+-#define __NR_io_destroy 228
+-#define __NR_io_getevents 229
+-#define __NR_io_submit 230
+-#define __NR_io_cancel 231
+-#define __NR_set_tid_address 232
+-#define __NR_fadvise64 233
+-#define __NR_exit_group 234
+-#define __NR_lookup_dcookie 235
+-#define __NR_epoll_create 236
+-#define __NR_epoll_ctl 237
+-#define __NR_epoll_wait 238
+-#define __NR_remap_file_pages 239
+-#define __NR_timer_create 240
+-#define __NR_timer_settime 241
+-#define __NR_timer_gettime 242
+-#define __NR_timer_getoverrun 243
+-#define __NR_timer_delete 244
+-#define __NR_clock_settime 245
+-#define __NR_clock_gettime 246
+-#define __NR_clock_getres 247
+-#define __NR_clock_nanosleep 248
+-#define __NR_swapcontext 249
+-#define __NR_tgkill 250
+-#define __NR_utimes 251
+-#define __NR_statfs64 252
+-#define __NR_fstatfs64 253
+-/* #define __NR_fadvise64_64 254 32bit only */
+-#define __NR_rtas 255
+-/* Number 256 is reserved for sys_debug_setcontext */
+-/* Number 257 is reserved for vserver */
+-/* Number 258 is reserved for new sys_remap_file_pages */
+-#define __NR_mbind 259
+-#define __NR_get_mempolicy 260
+-#define __NR_set_mempolicy 261
+-#define __NR_mq_open 262
+-#define __NR_mq_unlink 263
+-#define __NR_mq_timedsend 264
+-#define __NR_mq_timedreceive 265
+-#define __NR_mq_notify 266
+-#define __NR_mq_getsetattr 267
+-#define __NR_kexec_load 268
+-#define __NR_add_key 269
+-#define __NR_request_key 270
+-#define __NR_keyctl 271
+-#define __NR_waitid 272
+-#define __NR_ioprio_set 273
+-#define __NR_ioprio_get 274
+-#define __NR_inotify_init 275
+-#define __NR_inotify_add_watch 276
+-#define __NR_inotify_rm_watch 277
+-
+-
+-
+-#define __diet_proto_common(sym) \
+- .section ".opd","aw"; \
+- .align 3; \
+-sym: \
+- .quad .sym,.TOC.@tocbase,0; \
+- .previous; \
+- .size sym,24; \
+- .type .sym,@function
+-
+-#define diet_proto_weak(sym) \
+- .weak sym; \
+- .weak .sym; \
+- __diet_proto_common(sym)
+-
+-#define diet_proto(sym) \
+- .globl sym; \
+- .globl .sym; \
+- __diet_proto_common(sym)
+-
+-
+-#define syscall_weak(name,wsym,sym) \
+-.text; \
+-diet_proto_weak(wsym); \
+-diet_proto(sym); \
+-.wsym: \
+-.sym: \
+- li 0,__NR_##name; \
+- b __unified_syscall
+-
+-#define syscall(name,sym) \
+-.text; \
+-diet_proto(sym); \
+-.sym: \
+- li 0,__NR_##name; \
+- b __unified_syscall
+-
+diff -Nurp dietlibc.orig/ppc64/__testandset.S dietlibc/ppc64/__testandset.S
+--- dietlibc.orig/ppc64/__testandset.S 2003-10-10 15:37:34.000000000 +0200
++++ dietlibc/ppc64/__testandset.S 1970-01-01 01:00:00.000000000 +0100
+@@ -1,12 +0,0 @@
+-.global __testandset
+-.type __testandset,@function
+-.align 2
+-__testandset:
+-1: lwarx 5,0,3
+- li 0,1
+- stwcx. 0,0,3
+- bne- 1b
+- mr 3,5
+- blr
+-.size __testandset,.-__testandset
+-
+diff -Nurp dietlibc.orig/ppc64/umount.S dietlibc/ppc64/umount.S
+--- dietlibc.orig/ppc64/umount.S 2004-12-17 19:47:59.000000000 +0100
++++ dietlibc/ppc64/umount.S 1970-01-01 01:00:00.000000000 +0100
+@@ -1,8 +0,0 @@
+-#include "syscalls.h"
+-
+- .text
+-diet_proto(umount)
+-.umount:
+- li 0, __NR_umount2
+- li 4, 0
+- b __unified_syscall
+diff -Nurp dietlibc.orig/ppc64/unified.S dietlibc/ppc64/unified.S
+--- dietlibc.orig/ppc64/unified.S 2005-05-13 20:39:32.000000000 +0200
++++ dietlibc/ppc64/unified.S 1970-01-01 01:00:00.000000000 +0100
+@@ -1,71 +0,0 @@
+-#include <dietfeatures.h>
+-#include "syscalls.h"
+-
+- .text
+-.exit:
+- .weak .exit
+-._exit:
+- li 0,__NR_exit
+- .global __unified_syscall
+-__unified_syscall:
+- sc
+- bnslr+
+-
+- .global error_unified_syscall
+-error_unified_syscall:
+-
+-#ifdef WANT_THREAD_SAFE
+- stdu 1,-128(1)
+- mflr 0
+- std 0,20(1)
+- std 3,12(1)
+- bl .__errno_location
+- ld 0,12(1)
+- stw 0,0(3)
+- ld 0,20(1)
+- mtlr 0
+- addi 1,1,128
+-#else
+- lis 9,errno@highesta
+- ori 9,9,errno@highera
+- sldi 9,9,32
+- oris 9,9,errno@ha
+- stw 3,errno@l(9)
+-#endif
+- li 3,-1
+-
+-/* here we go and "reuse" the return for weak-void functions */
+-//#include "dietuglyweaks.h"
+-.__thread_doexit:
+- .weak .__thread_doexit
+-.__fflush_stdin:
+- .weak .__fflush_stdin
+-.__fflush_stdout:
+- .weak .__fflush_stdout
+-.__fflush_stderr:
+- .weak .__fflush_stderr
+-.flockfile:
+- .weak .flockfile
+-.funlockfile:
+- .weak .funlockfile
+-.__nop:
+- .weak .__nop
+-.__you_tried_to_link_a_dietlibc_object_against_glibc:
+- .weak .__you_tried_to_link_a_dietlibc_object_against_glibc
+-
+- blr
+- .long 0
+- .byte 0,0,0,1,128,0,0,0
+- .size ._exit,.-._exit
+- .size .exit,.-.exit
+-
+-diet_proto_weak(__thread_doexit)
+-diet_proto_weak(__fflush_stdin)
+-diet_proto_weak(__fflush_stdout)
+-diet_proto_weak(__fflush_stderr)
+-diet_proto_weak(flockfile)
+-diet_proto_weak(funlockfile)
+-diet_proto_weak(__nop)
+-diet_proto_weak(__you_tried_to_link_a_dietlibc_object_against_glibc)
+-diet_proto_weak(exit)
+-diet_proto(_exit)
+diff -Nurp dietlibc.orig/syscalls.h dietlibc/syscalls.h
+--- dietlibc.orig/syscalls.h 2006-06-21 21:44:44.287916500 +0200
++++ dietlibc/syscalls.h 2006-06-21 21:42:27.891392250 +0200
+@@ -12,10 +12,10 @@
+ #endif
+
+ #elif defined(__powerpc64__)
+-#include "ppc64/syscalls.h"
++#include "powerpc64/syscalls.h"
+
+ #elif defined(__powerpc__)
+-#include "ppc/syscalls.h"
++#include "powerpc/syscalls.h"
+
+ #elif defined(__mips__)
+ #include "mips/syscalls.h"
diff --git a/dietlibc/patches/0.30_pre20060621-r0/04_all_prefix.patch b/dietlibc/patches/0.30_pre20060621-r0/04_all_prefix.patch
new file mode 100644
index 0000000..9f8aa7f
--- /dev/null
+++ b/dietlibc/patches/0.30_pre20060621-r0/04_all_prefix.patch
@@ -0,0 +1,10 @@
+diff -NurpP dietlibc-0.30_pre20060501.orig/Makefile dietlibc-0.30_pre20060501/Makefile
+--- dietlibc-0.30_pre20060501.orig/Makefile 2006-04-04 07:35:14.000000000 +0200
++++ dietlibc-0.30_pre20060501/Makefile 2006-05-01 13:03:31.816974500 +0200
+@@ -1,5 +1,5 @@
+ INSTALL=install
+-prefix?=/opt/diet
++prefix=/usr/diet
+ # Set the following to install to a different root
+ #DESTDIR=/tmp/fefix
+ # Use "make DEBUG=1" to compile a debug version.
diff --git a/dietlibc/patches/0.30_pre20060621-r0/20_all_dirent-prototype.patch b/dietlibc/patches/0.30_pre20060621-r0/20_all_dirent-prototype.patch
new file mode 100644
index 0000000..0d229e6
--- /dev/null
+++ b/dietlibc/patches/0.30_pre20060621-r0/20_all_dirent-prototype.patch
@@ -0,0 +1,15 @@
+Index: dietlibc-0.29/include/dirent.h
+===================================================================
+--- dietlibc-0.29.orig/include/dirent.h
++++ dietlibc-0.29/include/dirent.h
+@@ -37,8 +37,8 @@ int closedir (DIR *__dirp) __THROW;
+ struct dirent *readdir (DIR *__dirp) __THROW;
+ struct dirent64 *readdir64 (DIR *__dirp) __THROW;
+ void rewinddir (DIR *__dirp) __THROW;
+-void seekdir (DIR *__dirp, long int __pos) __THROW;
+-long int telldir (DIR *__dirp) __THROW;
++void seekdir (DIR *__dirp, off_t __pos) __THROW;
++off_t telldir (DIR *__dirp) __THROW;
+
+ int scandir(const char *dir, struct dirent ***namelist,
+ int (*selection)(const struct dirent *),
diff --git a/dietlibc/patches/0.30_pre20060621-r0/21_all_nice.patch b/dietlibc/patches/0.30_pre20060621-r0/21_all_nice.patch
new file mode 100644
index 0000000..641e6c3
--- /dev/null
+++ b/dietlibc/patches/0.30_pre20060621-r0/21_all_nice.patch
@@ -0,0 +1,20 @@
+Index: dietlibc-0.29/lib/__nice.c
+===================================================================
+--- dietlibc-0.29.orig/lib/__nice.c
++++ dietlibc-0.29/lib/__nice.c
+@@ -1,9 +1,14 @@
+ #include "syscalls.h"
+ #include <sys/time.h>
+ #include <sys/resource.h>
++#include <errno.h>
+
+ #ifndef __NR_nice
+ int nice(int i) {
+- return setpriority(PRIO_PROCESS,0,getpriority(PRIO_PROCESS,0)+i);
++ if (setpriority(PRIO_PROCESS,0,getpriority(PRIO_PROCESS,0)+i) == -1) {
++ errno=EPERM;
++ return -1;
++ }
++ return getpriority(PRIO_PROCESS,0);
+ }
+ #endif
diff --git a/dietlibc/patches/0.30_pre20060621-r0/40_sparc64_Makefile.patch b/dietlibc/patches/0.30_pre20060621-r0/40_sparc64_Makefile.patch
new file mode 100644
index 0000000..7230687
--- /dev/null
+++ b/dietlibc/patches/0.30_pre20060621-r0/40_sparc64_Makefile.patch
@@ -0,0 +1,13 @@
+Index: dietlibc-0.30_pre20060501/Makefile
+===================================================================
+--- dietlibc-0.30_pre20060501.orig/Makefile
++++ dietlibc-0.30_pre20060501/Makefile
+@@ -8,7 +8,7 @@ LIBDIR=${prefix}/lib
+ BINDIR=${prefix}/bin
+ MAN1DIR=${prefix}/man/man1
+
+-MYARCH:=$(shell uname -m | sed -e 's/i[4-9]86/i386/' -e 's/armv[3-6]t\?e\?[lb]/arm/')
++MYARCH:=$(shell uname -m | sed -e 's/i[4-9]86/i386/' -e 's/armv[3-6]t\?e\?[lb]/arm/' -e 's/sparc64/sparc/')
+
+ # This extra-ugly cruft is here so make will not run uname and sed each
+ # time it looks at $(OBJDIR). This alone sped up running make when
diff --git a/dietlibc/patches/0.30_pre20060621-r0/42_arm_waitpid.patch b/dietlibc/patches/0.30_pre20060621-r0/42_arm_waitpid.patch
new file mode 100644
index 0000000..c0f9835
--- /dev/null
+++ b/dietlibc/patches/0.30_pre20060621-r0/42_arm_waitpid.patch
@@ -0,0 +1,13 @@
+Index: dietlibc-0.29/arm/syscalls.h
+===================================================================
+--- dietlibc-0.29.orig/arm/syscalls.h
++++ dietlibc-0.29/arm/syscalls.h
+@@ -6,7 +6,7 @@
+ #define __NR_write (__NR_SYSCALL_BASE+ 4)
+ #define __NR_open (__NR_SYSCALL_BASE+ 5)
+ #define __NR_close (__NR_SYSCALL_BASE+ 6)
+- /* 7 was sys_waitpid */
++#define __NR_waitpid (__NR_SYSCALL_BASE+ 7)
+ #define __NR_creat (__NR_SYSCALL_BASE+ 8)
+ #define __NR_link (__NR_SYSCALL_BASE+ 9)
+ #define __NR_unlink (__NR_SYSCALL_BASE+ 10)
diff --git a/dietlibc/patches/0.30_pre20060621-r0/43_ia64_no-fno-omit-frame-pointer.patch b/dietlibc/patches/0.30_pre20060621-r0/43_ia64_no-fno-omit-frame-pointer.patch
new file mode 100644
index 0000000..9c3a929
--- /dev/null
+++ b/dietlibc/patches/0.30_pre20060621-r0/43_ia64_no-fno-omit-frame-pointer.patch
@@ -0,0 +1,16 @@
+Index: diet.c
+===================================================================
+RCS file: /cvs/dietlibc/diet.c,v
+retrieving revision 1.60
+diff -u -r1.60 diet.c
+--- diet.c 17 Dec 2004 18:47:58 -0000 1.60
++++ diet.c 23 Dec 2004 09:20:56 -0000
+@@ -40,7 +40,7 @@
+ "s390","-Os","-fomit-frame-pointer",0,
+ "s390x","-Os","-fomit-frame-pointer",0,
+ "sh","-Os","-fomit-frame-pointer",0,
+- "ia64","-Os","-fno-omit-frame-pointer",0,
++ "ia64","-Os",0,
+ "x86_64","-Os","-fstrict-aliasing","-momit-leaf-frame-pointer","-mfancy-math-387",0,
+ 0};
+
diff --git a/dietlibc/patches/0.30_pre20060621-r0/44_ia64_proc-endp.patch b/dietlibc/patches/0.30_pre20060621-r0/44_ia64_proc-endp.patch
new file mode 100644
index 0000000..aee3eaf
--- /dev/null
+++ b/dietlibc/patches/0.30_pre20060621-r0/44_ia64_proc-endp.patch
@@ -0,0 +1,58 @@
+Index: ia64/clone.S
+===================================================================
+RCS file: /cvs/dietlibc/ia64/clone.S,v
+retrieving revision 1.1
+diff -u -r1.1 clone.S
+--- ia64/clone.S 13 May 2002 15:55:50 -0000 1.1
++++ ia64/clone.S 12 Aug 2005 17:51:49 -0000
+@@ -37,5 +37,4 @@
+ br.call.dptk.few b0=__error_unified_syscall
+ br.ret.sptk.few b0
+ .endp __clone
+-.endp __clone2
+ .size __clone, . - __clone
+Index: ia64/unified.S
+===================================================================
+RCS file: /cvs/dietlibc/ia64/unified.S,v
+retrieving revision 1.2
+diff -u -r1.2 unified.S
+--- ia64/unified.S 24 Jul 2002 12:47:33 -0000 1.2
++++ ia64/unified.S 12 Aug 2005 17:51:49 -0000
+@@ -16,9 +16,7 @@
+ .text
+
+ .globl __unified_syscall
+-.proc __unified_syscall
+ .globl __error_unified_syscall
+-.proc __error_unified_syscall
+ .globl _exit
+ .proc _exit
+
+@@ -27,11 +25,18 @@
+ .endp _exit
+ .size _exit, . - _exit
+
++.proc __unified_syscall
++
+ __unified_syscall:
+ break.i 0x100000
+ movl r2=errno
+ cmp.eq p6,p0=-1,r10
+ ;;
++.endp __unified_syscall
++.size __unified_syscall, . - __unified_syscall
++
++.proc __error_unified_syscall
++
+ __error_unified_syscall:
+ (p6) st4 [r2]=r8
+ (p6) mov r8=-1
+@@ -39,8 +44,5 @@
+ #include "dietuglyweaks.h"
+
+ br.ret.sptk.few rp
+-
+-.endp __unified_syscall
+ .endp __error_unified_syscall
+-.size __unified_syscall, __error_unified_syscall - __unified_syscall
+ .size __error_unified_syscall, . - __error_unified_syscall
diff --git a/dietlibc/patches/0.30_pre20060621-r0/45_parisc_iitlbp.patch b/dietlibc/patches/0.30_pre20060621-r0/45_parisc_iitlbp.patch
new file mode 100644
index 0000000..b1f86a9
--- /dev/null
+++ b/dietlibc/patches/0.30_pre20060621-r0/45_parisc_iitlbp.patch
@@ -0,0 +1,13 @@
+Index: parisc/clone.S
+===================================================================
+RCS file: /cvs/dietlibc/parisc/clone.S,v
+retrieving revision 1.2
+diff -u -r1.2 clone.S
+--- parisc/clone.S 20 Jul 2002 13:29:26 -0000 1.2
++++ parisc/clone.S 16 Oct 2005 18:28:55 -0000
+@@ -37,4 +37,4 @@
+ bl _exit,%r2 /* exit thread */
+ copy %r28,%r26 /* return -> arg0 */
+
+- iitlbp %r0,(%r0) /* DIE ! DIE ! */
++ iitlbp %r0,(%sr0,%r0) /* DIE ! DIE ! */