]> git.saurik.com Git - apple/xnu.git/blobdiff - libsyscall/custom/__getpid.s
xnu-3248.60.10.tar.gz
[apple/xnu.git] / libsyscall / custom / __getpid.s
index 1299a164557279232a74a0bfb3578ea6e1d6f79f..2768d9b826297c3a4f6f2464a5db451600a0b43b 100644 (file)
 
 #include "SYS.h"
 
-#if defined(__ppc__) || defined(__ppc64__)
-
-        .data
-        .globl  __current_pid
-        .align  2
-__current_pid:
-        .long 0
-
-MI_ENTRY_POINT(___getpid)
-#if defined(__DYNAMIC__)
-        mflr    r0              // note we cannot use MI_GET_ADDRESS...
-        bcl    20,31,1f         // ...because we define __current_pid
-1:
-        mflr    r5
-        mtlr    r0
-        addis   r5, r5, ha16(__current_pid - 1b)
-        addi    r5, r5, lo16(__current_pid - 1b)
-#else
-       lis     r5,hi16(__current_pid)
-       ori     r5,r5,lo16(__current_pid)
-#endif
-        lwz     r3,0(r5)               // get the cached pid
-        cmpwi  r3,0                    // if positive,
-        bgtlr++                 // return it
-       
-        SYSCALL_NONAME(getpid, 0)
-
-        lwarx  r4,0,r5                 // see if we can cache it
-        cmpwi  r4,0                    // we can't if there are any...
-        blt--  1f              // ...vforks in progress
-
-        stwcx. r3,0,r5                 // ignore cache conflicts
-        blr
-1:
-        li      r6,-4           // on 970, cancel the reservation using red zone...
-        stwcx.  r3,r6,r1        // ...to avoid an errata
-        blr
-
-#elif defined(__i386__)
+#if defined(__i386__)
 
        .data
        .private_extern __current_pid
-__current_pid:
+L__current_pid_addr:
+ __current_pid:
        .long 0
-L__current_pid_addr = __current_pid
 
 #if defined(__DYNAMIC__)
 #define GET_CURRENT_PID                                \
@@ -99,7 +61,7 @@ LEAF(___getpid, 0)
        jle             1f
        ret
 1:
-       UNIX_SYSCALL_NONAME(getpid, 0)
+       UNIX_SYSCALL_NONAME(getpid, 0, cerror_nocancel)
        movl            %eax, %edx
        xorl            %eax, %eax
        GET_CURRENT_PID
@@ -126,7 +88,7 @@ LEAF(___getpid, 0)
        jle             1f
        ret
 1:
-       UNIX_SYSCALL_NONAME(getpid, 0)
+       UNIX_SYSCALL_NONAME(getpid, 0, cerror_nocancel)
        movl            %eax, %edx
        xorl            %eax, %eax
        leaq            __current_pid(%rip), %rcx