MOVL $0xf1, 0xf1 // crash
RET
-GLOBL exitStack<>(SB),RODATA,$8
-DATA exitStack<>+0x00(SB)/4, $0
-DATA exitStack<>+0x04(SB)/4, $0
-
// func exitThread(wait *uint32)
TEXT runtime·exitThread(SB),NOSPLIT,$0-4
- MOVL wait+0(FP), AX
- // We're done using the stack.
- MOVL $0, (AX)
- // sys__lwp_exit takes 1 argument, which it expects on the stack.
- MOVL $exitStack<>(SB), SP
MOVL $302, AX // sys___threxit
INT $0x80
MOVL $0xf1, 0xf1 // crash
// func exitThread(wait *uint32)
TEXT runtime·exitThread(SB),NOSPLIT,$0-8
- MOVQ wait+0(FP), AX
- // We're done using the stack.
- MOVL $0, (AX)
- MOVQ $0, DI // arg 1 - notdead
+ MOVQ wait+0(FP), DI // arg 1 - notdead
MOVL $302, AX // sys___threxit
SYSCALL
MOVL $0xf1, 0xf1 // crash
// func exitThread(wait *uint32)
TEXT runtime·exitThread(SB),NOSPLIT,$0-4
- MOVW wait+0(FP), R0
- // We're done using the stack.
- MOVW $0, R2
-storeloop:
- LDREX (R0), R4 // loads R4
- STREX R2, (R0), R1 // stores R2
- CMP $0, R1
- BNE storeloop
- MOVW $0, R0 // arg 1 - notdead
+ MOVW wait+0(FP), R0 // arg 1 - notdead
MOVW $302, R12 // sys___threxit
SWI $0
MOVW.CS $1, R8 // crash on syscall failure