mov x0, #0
ret
END(libucontext_getcontext)
#if defined(__linux__) && defined(__ELF__)
.section .note.GNU-stack,"",%progbits
#endif
/* jump to new PC */
br x16
END(libucontext_setcontext)
mov x30, x28
END(libucontext_swapcontext)
mov r0, #0
mov pc, lr
/* load link register and jump to new context */
ldmia r14, {r14, pc}
add r14, r14, #56
clr.l %d0 /* return 0 */
rts
jmp (%a1) /* jump to *$a1 */
jr $ra
END(libucontext_makecontext)
POP_FRAME(libucontext_setcontext)
jalr $t9
nop
END(libucontext_trampoline)
move $v0, $zero
li 4, 0
b __libucontext_swapcontext@local
li 3, 0
no_linked_context:
b exit@GOT
.hidden __retfromsyscall
b __retfromsyscall@local
END(__libucontext_swapcontext)
b __libucontext_swapcontext
b __retfromsyscall
/* done saving, return */
/* done restoring, jump to new pc in S1 */
jr t1
/* done swapping, jump to new PC in S1 */
br %r14 /* return to where we came from */
br %r14 /* return to new link register address */
j .+2 /* crash if exit returns */
mov #0, r0 /* set return value as zero */
mov.l @r15+, r0 /* pop original r0 from stack */
xorl %eax, %eax
-