aboutsummaryrefslogtreecommitdiff
path: root/lib/darwin/inject-asm-raw.S
diff options
context:
space:
mode:
Diffstat (limited to 'lib/darwin/inject-asm-raw.S')
-rw-r--r--lib/darwin/inject-asm-raw.S113
1 files changed, 0 insertions, 113 deletions
diff --git a/lib/darwin/inject-asm-raw.S b/lib/darwin/inject-asm-raw.S
deleted file mode 100644
index a8980c3..0000000
--- a/lib/darwin/inject-asm-raw.S
+++ /dev/null
@@ -1,113 +0,0 @@
-.text
-.align 2
-/* sp -> {pthread_create, dlopen, dylib} */
-#if defined(__x86_64__)
- lea -8(%rsp), %rdi /* thread */
- xor %rsi, %rsi /* attr */
- lea thread_func(%rip), %rdx /* start_routine */
- mov %rsp, %rcx /* arg */
- mov %rdi, %rsp
- call *(%rcx)
-/* suicide */
- mov $361, %rax /* bsdthread_terminate */
- xor %rdi, %rdi /* stackaddr */
- xor %rsi, %rsi /* freesize */
- xor %rdx, %rdx /* port */
- xor %rcx, %rcx /* sem */
- syscall
-/* still here? */
- mov $0xbad, %rax
- jmp *%rax
-
-thread_func:
- mov 0x8(%rdi), %rax /* dlopen */
- mov 0x10(%rdi), %rdi /* dylib */
- xor %rsi, %rsi
- jmp *%rax
-
-#elif defined(__i386__)
-
- mov %esp, %ecx
- push %ecx /* arg */
- call 1f
-1:
- pop %eax
- add $(thread_func - 1b), %eax
- push %eax /* start_routine */
- xor %eax, %eax
- push %eax /* attr */
- push %esp /* thread */
- call *(%ecx)
-/* suicide */
- mov $361, %eax /* bsdthread_terminate */
- xor %edx, %edx
- push %edx /* sem */
- push %edx /* port */
- push %edx /* freesize */
- push %edx /* stackaddr */
- syscall
-/* still here? */
- mov $0xbad, %eax
- jmp *%eax
-
-thread_func:
- xor %edx, %edx
- push %edx
- mov 0x4(%esp), %ecx /* arg */
- mov 0x8(%ecx), %edx /* dylib */
- push %edx
- mov 0x4(%ecx), %edx /* dlopen */
- push %edx
- call *%eax
- add $8, %esp
- ret
-
-#elif defined(__arm__)
-
- sub sp, #4
- mov r0, sp
- mov r1, #0
- adr r2, thread_func
- add r3, sp, #4
- ldr r9, [r3]
- blx r9
-/* suicide */
- mov r0, #0
- mov r1, #0
- mov r2, #0
- mov r3, #0
- mov r12, #361
- svc #0x80
-/* still here? */
- mov r0, #0xbad
- bx r0
-thread_func:
- ldr r2, [r0]
- ldr r0, [r0, #4]
- mov r1, #0
- bx r2
-
-#elif defined(__arm64__)
- sub sp, sp, #8
- mov x0, sp
- mov x1, #0
- adr x2, 1f
- add x3, sp, #4
- ldr x9, [x3]
- blr x9
-/* suicide */
- mov x0, #0
- mov x1, #0
- mov x2, #0
- mov x3, #0
- mov x12, #361 /* ??? */
- svc #0x80
-/* still here? */
- mov x0, #0xbad
- br x0
-1:
- ldr x2, [x0]
- ldr x0, [x0, #8]
- mov x1, #0
- br x2
-#endif