root/src/system/libroot/posix/arch/arm64/siglongjmp.S
/*
 * Copyright 2019, Haiku, Inc. All rights reserved.
 * Distributed under the terms of the MIT License.
 */


#include <asm_defs.h>


/* int __siglongjmp(jmp_buf buffer, int value) */
FUNCTION(siglongjmp):
FUNCTION(longjmp):
FUNCTION(_longjmp):
        ldp x19, x20, [x0, #0]
        ldp x21, x22, [x0, #16]
        ldp x23, x24, [x0, #32]
        ldp x25, x26, [x0, #48]
        ldp x27, x28, [x0, #64]
        ldp x29, x30, [x0, #80]

        ldr x2, [x0, #96]
        mov sp, x2

        ldp  d8,  d9, [x0, #104]
        ldp d10, d11, [x0, #136]
        ldp d12, d13, [x0, #168]
        ldp d14, d15, [x0, #200]

        b __longjmp_return
FUNCTION_END(siglongjmp)
FUNCTION_END(longjmp)
FUNCTION_END(_longjmp)

#pragma weak longjmp=siglongjmp