]> git.proxmox.com Git - wasi-libc.git/blobdiff - libc-top-half/musl/src/setjmp/x86_64/longjmp.s
Update to musl 1.2.2.
[wasi-libc.git] / libc-top-half / musl / src / setjmp / x86_64 / longjmp.s
index e175a4b9606bba41eccc8972c22244e533718f0a..1b2661c3e5a948a0d957ca84ebf17043b3993ed5 100644 (file)
@@ -5,18 +5,14 @@
 .type longjmp,@function
 _longjmp:
 longjmp:
-       mov %rsi,%rax           /* val will be longjmp return */
-       test %rax,%rax
-       jnz 1f
-       inc %rax                /* if val==0, val=1 per longjmp semantics */
-1:
+       xor %eax,%eax
+       cmp $1,%esi             /* CF = val ? 0 : 1 */
+       adc %esi,%eax           /* eax = val + !val */
        mov (%rdi),%rbx         /* rdi is the jmp_buf, restore regs from it */
        mov 8(%rdi),%rbp
        mov 16(%rdi),%r12
        mov 24(%rdi),%r13
        mov 32(%rdi),%r14
        mov 40(%rdi),%r15
-       mov 48(%rdi),%rdx       /* this ends up being the stack pointer */
-       mov %rdx,%rsp
-       mov 56(%rdi),%rdx       /* this is the instruction pointer */
-       jmp *%rdx               /* goto saved address without altering rsp */
+       mov 48(%rdi),%rsp
+       jmp *56(%rdi)           /* goto saved address without altering rsp */