X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/2d21ac55c334faf3a56e5634905ed6987fc787d4..4a3eedf9ecc9bbe3f3a5c6ce5e53ad199d639d32:/libsyscall/custom/__getpid.s diff --git a/libsyscall/custom/__getpid.s b/libsyscall/custom/__getpid.s index a6cc5a5f4..1299a1645 100644 --- a/libsyscall/custom/__getpid.s +++ b/libsyscall/custom/__getpid.s @@ -135,51 +135,6 @@ LEAF(___getpid, 0) movl %edx, %eax ret -#elif defined(__arm__) - -#include - - .data - .globl __current_pid - .align 2 -__current_pid: - /* Cached pid. Possible values: - * 0: no value cached - * > 0: cached PID of current process - * < 0: negative number of vforks in progress - * INT_MIN: for pre-ARMv6, "looking" value (0x80000000) - */ - .long 0 - -MI_ENTRY_POINT(_getpid) - ldr r3, L__current_pid -L1: add r3, pc, r3 // r3 = &__current_pid - ldr r0, [r3] // get the cached pid - cmp r0, #0 - bxgt lr // if positive, return it - - SYSCALL_NONAME(getpid, 0) - -#ifdef _ARM_ARCH_6 - ldrex r2, [r3] // see if we can cache it - cmp r2, #0 // we can't if there are any... - bxlt lr // ...vforks in progress - strex r2, r0, [r3] // ignore conflicts -#else - mov r1, #0x80000000 // load "looking" value - swp r2, r1, [r3] // look at the value, lock others out - cmp r2, r1 // anyone else trying to look? - bxeq lr // yes, so return immediately/ - cmp r2, #0 // see if we can cache it - streq r0, [r3] // if zero, we can - strne r2, [r3] // otherwise restore previous value -#endif - - bx lr - -L__current_pid: - .long __current_pid - (L1+8) - #else #error Unsupported architecture #endif