]> git.saurik.com Git - apple/xnu.git/blobdiff - libsyscall/custom/__ptrace.s
xnu-6153.11.26.tar.gz
[apple/xnu.git] / libsyscall / custom / __ptrace.s
index 2fd53b4604c29760d492e958aa049d54c5e04746..607a26e876bcc7ed71b555343257a46ee0bb7e71 100644 (file)
 
 #include "SYS.h"
 
-#if defined(__ppc__) || defined(__ppc64__)
-
-MI_ENTRY_POINT(___ptrace)
-       li      r7,0
-    MI_GET_ADDRESS(r8,_errno)
-    stw     r7,0(r8)
-    SYSCALL_NONAME(ptrace, 4)
-       blr
-
-#elif defined(__i386__)
+#if defined(__i386__)
 
        .globl  _errno
 
 LEAF(___ptrace, 0)
        xorl    %eax,%eax
        REG_TO_EXTERN(%eax,_errno)
-UNIX_SYSCALL_NONAME(ptrace, 4)
+       UNIX_SYSCALL_NONAME(ptrace, 4, cerror)
        ret
 
 #elif defined(__x86_64__)
@@ -54,10 +45,30 @@ UNIX_SYSCALL_NONAME(ptrace, 4)
 
 LEAF(___ptrace, 0)
        xorq    %rax,%rax
-       REG_TO_EXTERN(%rax,_errno)
-UNIX_SYSCALL_NONAME(ptrace, 4)
+       PICIFY(_errno)
+       movl    %eax,(%r11)
+       UNIX_SYSCALL_NONAME(ptrace, 4, cerror)
        ret
 
+#elif defined(__arm__)
+
+MI_ENTRY_POINT(___ptrace)
+       MI_GET_ADDRESS(ip,_errno)
+       str     r8, [sp, #-4]!
+       mov     r8, #0
+       str     r8, [ip]
+       ldr     r8, [sp], #4    
+       SYSCALL_NONAME(ptrace, 4, cerror)
+       bx              lr
+
+#elif defined(__arm64__)
+
+MI_ENTRY_POINT(___ptrace)
+       MI_GET_ADDRESS(x9,_errno)
+       str             wzr, [x9]
+       SYSCALL_NONAME(ptrace, 4, cerror)
+       ret
+       
 #else
 #error Unsupported architecture
 #endif