gnu-efi/lib/loongarch64/setjmp.S
zhoumingtao 5849eacdce use jr instead of jirl
jirl -> jr
2022-07-07 15:16:10 +08:00

69 lines
1.5 KiB
ArmAsm

/*
* Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
* Copyright (c) 2021 Loongson Technology Corporation Limited.All rights
* reserved.
* Author: zhoumingtao <zhoumingtao@loongson.cn>
*
* This program and the accompanying materials are licensed and made
* available
* under the terms and conditions of the BSD License which accompanies
* this
* distribution. The full text of the license may be found at
* http://opensource.org/licenses/bsd-license.php.
*
* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
* BASIS,
* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR
* IMPLIED.
*/
.text
.p2align 3
/*
int setjmp(jmp_buf env);
*/
.globl setjmp
.type setjmp, @function
setjmp:
st.d $ra, $a0, 0x0
st.d $sp, $a0, 0x8
st.d $fp, $a0, 0x10
st.d $s0, $a0, 0x18
st.d $s1, $a0, 0x20
st.d $s2, $a0, 0x28
st.d $s3, $a0, 0x30
st.d $s4, $a0, 0x38
st.d $s5, $a0, 0x40
st.d $s6, $a0, 0x48
st.d $s7, $a0, 0x50
st.d $s8, $a0, 0x58
move $a0, $zero
jr $ra
/*
void longjmp(jmp_buf env, int val);
*/
.globl longjmp
.type longjmp, @function
longjmp:
ld.d $ra, $a0, 0x0
ld.d $sp, $a0, 0x8
ld.d $fp, $a0, 0x10
ld.d $s0, $a0, 0x18
ld.d $s1, $a0, 0x20
ld.d $s2, $a0, 0x28
ld.d $s3, $a0, 0x30
ld.d $s4, $a0, 0x38
ld.d $s5, $a0, 0x40
ld.d $s6, $a0, 0x48
ld.d $s7, $a0, 0x50
ld.d $s8, $a0, 0x58
addi.d $a0, $zero, 1 # a0 = 1
beqz $a1, .L0 # if (a1 == 0); goto L0
move $a0, $a1 # a0 = a1
.L0:
jr $ra