--- Makefile | 13 + diet.c | 4 powerpc64/Makefile.add | 5 powerpc64/__longjmp.S | 58 ++++++++ powerpc64/__testandset.S | 16 ++ powerpc64/clone.S | 56 ++++++++ powerpc64/setjmp.S | 63 +++++++++ powerpc64/start.S | 95 ++++++++++++++ powerpc64/syscalls.h | 317 +++++++++++++++++++++++++++++++++++++++++++++++ powerpc64/umount.S | 12 + powerpc64/unified.S | 75 +++++++++++ ppc64/Makefile.add | 5 ppc64/__longjmp.S | 58 -------- ppc64/__testandset.S | 16 -- ppc64/clone.S | 56 -------- ppc64/setjmp.S | 63 --------- ppc64/start.S | 95 -------------- ppc64/syscalls.h | 317 ----------------------------------------------- ppc64/umount.S | 12 - ppc64/unified.S | 75 ----------- syscalls.h | 2 21 files changed, 709 insertions(+), 704 deletions(-) --- a/Makefile +++ b/Makefile @@ -31,7 +31,11 @@ ifeq ($(MYARCH),powerpc) ARCH=powerpc else ifeq ($(MYARCH),ppc64) -ARCH=ppc64 +ARCH=powerpc64 +MYARCH=powerpc64 +else +ifeq ($(MYARCH),powerpc64) +ARCH=powerpc64 else ifeq ($(MYARCH),arm) ARCH=arm @@ -85,6 +89,7 @@ endif endif endif endif +endif # ARCH=$(MYARCH) @@ -381,9 +386,9 @@ uninstall: -rmdir $(DESTDIR)$(ILIBDIR) $(DESTDIR)$(MAN1DIR) $(DESTDIR)$(BINDIR) .PHONY: sparc powerpc mips arm alpha i386 parisc mipsel powerpc s390 sparc64 -.PHONY: x86_64 ia64 ppc64 s390x +.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: @@ -394,7 +399,7 @@ else endif powerpc: -ifeq ($(MYARCH),ppc64) +ifeq ($(MYARCH),powerpc64) $(MAKE) ARCH=$@ CC="$(CC) -m32" all else $(MAKE) ARCH=$@ CROSS=$@-linux- all --- a/diet.c +++ b/diet.c @@ -36,7 +36,7 @@ static const char* Os[] = { "mips","-Os","-fomit-frame-pointer","-mno-abicalls","-fno-pic","-G","0",0, "mipsel","-Os","-fomit-frame-pointer","-mno-abicalls","-fno-pic","-G","0",0, "powerpc","-Os","-fomit-frame-pointer","-mpowerpc-gpopt","-mpowerpc-gfxopt",0, - "ppc64","-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, @@ -154,7 +154,7 @@ int main(int argc,char *argv[]) { shortplatform="powerpc"; #endif #ifdef __powerpc64__ - shortplatform="ppc64"; + shortplatform="powerpc64"; #endif #ifdef __i386__ shortplatform="i386"; --- /dev/null +++ b/powerpc64/Makefile.add @@ -0,0 +1,5 @@ + +CFLAGS+=-Os -mpowerpc64 +VPATH:=powerpc64:syscalls.s:$(VPATH) + +CC+=-m64 --- /dev/null +++ b/powerpc64/__longjmp.S @@ -0,0 +1,58 @@ +#include + + .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 + +#ifdef __ELF__ +.section .note.GNU-stack,"",%progbits +#endif --- /dev/null +++ b/powerpc64/__testandset.S @@ -0,0 +1,16 @@ +.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 + + +#ifdef __ELF__ +.section .note.GNU-stack,"",%progbits +#endif --- /dev/null +++ b/powerpc64/clone.S @@ -0,0 +1,56 @@ +#include +#include "syscalls.h" +#include + +.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 + +#ifdef __ELF__ +.section .note.GNU-stack,"",%progbits +#endif --- /dev/null +++ b/powerpc64/setjmp.S @@ -0,0 +1,63 @@ +#include + +#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 + +#ifdef __ELF__ +.section .note.GNU-stack,"",%progbits +#endif --- /dev/null +++ b/powerpc64/start.S @@ -0,0 +1,95 @@ +#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 + + +#ifdef __ELF__ +.section .note.GNU-stack,"",%progbits +#endif --- /dev/null +++ b/powerpc64/syscalls.h @@ -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 + --- /dev/null +++ b/powerpc64/umount.S @@ -0,0 +1,12 @@ +#include "syscalls.h" + + .text +diet_proto(umount) +.umount: + li 0, __NR_umount2 + li 4, 0 + b __unified_syscall + +#ifdef __ELF__ +.section .note.GNU-stack,"",%progbits +#endif --- /dev/null +++ b/powerpc64/unified.S @@ -0,0 +1,75 @@ +#include +#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) + +#ifdef __ELF__ +.section .note.GNU-stack,"",%progbits +#endif --- a/ppc64/Makefile.add +++ /dev/null @@ -1,5 +0,0 @@ - -CFLAGS+=-Os -mpowerpc64 -VPATH:=ppc64:syscalls.s:$(VPATH) - -CC+=-m64 --- a/ppc64/__longjmp.S +++ /dev/null @@ -1,58 +0,0 @@ -#include - - .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 - -#ifdef __ELF__ -.section .note.GNU-stack,"",%progbits -#endif --- a/ppc64/__testandset.S +++ /dev/null @@ -1,16 +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 - - -#ifdef __ELF__ -.section .note.GNU-stack,"",%progbits -#endif --- a/ppc64/clone.S +++ /dev/null @@ -1,56 +0,0 @@ -#include -#include "syscalls.h" -#include - -.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 - -#ifdef __ELF__ -.section .note.GNU-stack,"",%progbits -#endif --- a/ppc64/setjmp.S +++ /dev/null @@ -1,63 +0,0 @@ -#include - -#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 - -#ifdef __ELF__ -.section .note.GNU-stack,"",%progbits -#endif --- a/ppc64/start.S +++ /dev/null @@ -1,95 +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 - - -#ifdef __ELF__ -.section .note.GNU-stack,"",%progbits -#endif --- a/ppc64/syscalls.h +++ /dev/null @@ -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 - --- a/ppc64/umount.S +++ /dev/null @@ -1,12 +0,0 @@ -#include "syscalls.h" - - .text -diet_proto(umount) -.umount: - li 0, __NR_umount2 - li 4, 0 - b __unified_syscall - -#ifdef __ELF__ -.section .note.GNU-stack,"",%progbits -#endif --- a/ppc64/unified.S +++ /dev/null @@ -1,75 +0,0 @@ -#include -#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) - -#ifdef __ELF__ -.section .note.GNU-stack,"",%progbits -#endif --- a/syscalls.h +++ b/syscalls.h @@ -12,7 +12,7 @@ #endif #elif defined(__powerpc64__) -#include "ppc64/syscalls.h" +#include "powerpc64/syscalls.h" #elif defined(__powerpc__) #include "powerpc/syscalls.h"