blob: bc62d088f09d380235c6eb934db591cf0a728e20 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
// The entry point for thread start, registered with bsdthread_register
// %rdi: pthread (0, for us)
// %rsi: mach thread port (ignored)
// %rdx: func
// %rcx: env
// %r8: stack
// %r9: flags (= 0)
// %rsp: stack - C_64_REDZONE_LEN (= stack - 128)
.globl _thread$start
_thread$start:
/* call the function */
# movq %r8, %rsp /* set up stack */
movq %rcx, %rax /* set up env */
callq *%rdx /* call function */
/* exit the thread */
movq $0x2000169, %rax /* Sysbsdthread_terminate */
movq %rsp, %rdi /* stack */
movq $0, %rsi /* len */
movq $0, %rdx /* sem */
syscall
|