diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-02-15 00:40:58 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-02-15 00:40:58 +0000 |
commit | 7c6d00e62369b27b3493d0f89da47e22568fcac9 (patch) | |
tree | bf8090b9bb6969f5682b9d170d6586781ff4d36d /linuxthreads/sysdeps/unix/sysv | |
parent | 472022708ee08ac559dde540891eb2f8c2a9afcf (diff) | |
download | glibc-7c6d00e62369b27b3493d0f89da47e22568fcac9.tar.gz glibc-7c6d00e62369b27b3493d0f89da47e22568fcac9.tar.xz glibc-7c6d00e62369b27b3493d0f89da47e22568fcac9.zip |
Update.
2003-02-14 Steven Munroe <sjmunroe@us.ibm.com> * sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S (__vfork): Check pthread_create existance, not __pthread_fork.
Diffstat (limited to 'linuxthreads/sysdeps/unix/sysv')
-rw-r--r-- | linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S | 48 |
1 files changed, 39 insertions, 9 deletions
diff --git a/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S b/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S index 8b2f806f93..0229a9a75c 100644 --- a/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S +++ b/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S @@ -25,23 +25,46 @@ The calling process is suspended until the new process exits or is replaced by a call to `execve'. Return -1 for errors, 0 to the new process, and the process ID of the new process to the old process. */ + + .section ".toc","aw" +.LC0: + .tc __libc_pthread_functions[TC],__libc_pthread_functions + .section ".text" + .align 2 ENTRY (__vfork) #ifdef __NR_vfork - - SINGLE_THREAD_P - bne- HIDDEN_JUMPTARGET(__fork) + +# ifdef SHARED + ld 10,.LC0@toc(2) + ld 10,0(10) + cmpwi 10,0 + bne- HIDDEN_JUMPTARGET(__fork) +# else + .weak pthread_create + lis 10,pthread_create@highest + ori 10,10,pthread_create@higher + sldi 10,10,32 + oris 10,10,pthread_create@h + ori 10,10,pthread_create@l + cmpwi 10,0 + bne- .Lhidden_fork +# endif DO_CALL (SYS_ify (vfork)); - + # ifdef __ASSUME_VFORK_SYSCALL - PSEUDO_RET + PSEUDO_RET # else - bnslr+ - /* Check if vfork syscall is known at all. */ - cmpdi r3,ENOSYS - bne JUMPTARGET(__syscall_error) + bnslr+ + /* Check if vfork syscall is known at all. */ + cmpdi r3,ENOSYS +# ifdef SHARED + bne JUMPTARGET(__syscall_error) +# else + bne- .Lsyscall_error +# endif # endif #endif @@ -53,6 +76,13 @@ ENTRY (__vfork) PSEUDO_RET #endif +# ifndef SHARED +.Lhidden_fork: + b HIDDEN_JUMPTARGET(__fork) +.Lsyscall_error: + b JUMPTARGET(__syscall_error) +# endif + PSEUDO_END (__vfork) libc_hidden_def (__vfork) |