Changeset View
Changeset View
Standalone View
Standalone View
head/lib/libc/riscv/gen/setjmp.S
Show First 20 Lines • Show All 71 Lines • ▼ Show 20 Lines | ENTRY(setjmp) | ||||
sd s9, (9 * 8)(a0) | sd s9, (9 * 8)(a0) | ||||
sd s10, (10 * 8)(a0) | sd s10, (10 * 8)(a0) | ||||
sd s11, (11 * 8)(a0) | sd s11, (11 * 8)(a0) | ||||
sd ra, (12 * 8)(a0) | sd ra, (12 * 8)(a0) | ||||
addi a0, a0, (13 * 8) | addi a0, a0, (13 * 8) | ||||
#ifdef __riscv_float_abi_double | #ifdef __riscv_float_abi_double | ||||
/* Store the fpe registers */ | /* Store the fpe registers */ | ||||
fsd fs0, (0 * 16)(a0) | fsd fs0, (0 * 8)(a0) | ||||
fsd fs1, (1 * 16)(a0) | fsd fs1, (1 * 8)(a0) | ||||
fsd fs2, (2 * 16)(a0) | fsd fs2, (2 * 8)(a0) | ||||
fsd fs3, (3 * 16)(a0) | fsd fs3, (3 * 8)(a0) | ||||
fsd fs4, (4 * 16)(a0) | fsd fs4, (4 * 8)(a0) | ||||
fsd fs5, (5 * 16)(a0) | fsd fs5, (5 * 8)(a0) | ||||
fsd fs6, (6 * 16)(a0) | fsd fs6, (6 * 8)(a0) | ||||
fsd fs7, (7 * 16)(a0) | fsd fs7, (7 * 8)(a0) | ||||
fsd fs8, (8 * 16)(a0) | fsd fs8, (8 * 8)(a0) | ||||
fsd fs9, (9 * 16)(a0) | fsd fs9, (9 * 8)(a0) | ||||
fsd fs10, (10 * 16)(a0) | fsd fs10, (10 * 8)(a0) | ||||
fsd fs11, (11 * 16)(a0) | fsd fs11, (11 * 8)(a0) | ||||
addi a0, a0, (12 * 16) | addi a0, a0, (12 * 8) | ||||
#endif | #endif | ||||
/* Return value */ | /* Return value */ | ||||
li a0, 0 | li a0, 0 | ||||
ret | ret | ||||
.align 3 | .align 3 | ||||
.Lmagic: | .Lmagic: | ||||
.quad _JB_MAGIC_SETJMP | .quad _JB_MAGIC_SETJMP | ||||
Show All 40 Lines | ENTRY(longjmp) | ||||
ld s9, (9 * 8)(a0) | ld s9, (9 * 8)(a0) | ||||
ld s10, (10 * 8)(a0) | ld s10, (10 * 8)(a0) | ||||
ld s11, (11 * 8)(a0) | ld s11, (11 * 8)(a0) | ||||
ld ra, (12 * 8)(a0) | ld ra, (12 * 8)(a0) | ||||
addi a0, a0, (13 * 8) | addi a0, a0, (13 * 8) | ||||
#ifdef __riscv_float_abi_double | #ifdef __riscv_float_abi_double | ||||
/* Restore the fpe registers */ | /* Restore the fpe registers */ | ||||
fld fs0, (0 * 16)(a0) | fld fs0, (0 * 8)(a0) | ||||
fld fs1, (1 * 16)(a0) | fld fs1, (1 * 8)(a0) | ||||
fld fs2, (2 * 16)(a0) | fld fs2, (2 * 8)(a0) | ||||
fld fs3, (3 * 16)(a0) | fld fs3, (3 * 8)(a0) | ||||
fld fs4, (4 * 16)(a0) | fld fs4, (4 * 8)(a0) | ||||
fld fs5, (5 * 16)(a0) | fld fs5, (5 * 8)(a0) | ||||
fld fs6, (6 * 16)(a0) | fld fs6, (6 * 8)(a0) | ||||
fld fs7, (7 * 16)(a0) | fld fs7, (7 * 8)(a0) | ||||
fld fs8, (8 * 16)(a0) | fld fs8, (8 * 8)(a0) | ||||
fld fs9, (9 * 16)(a0) | fld fs9, (9 * 8)(a0) | ||||
fld fs10, (10 * 16)(a0) | fld fs10, (10 * 8)(a0) | ||||
fld fs11, (11 * 16)(a0) | fld fs11, (11 * 8)(a0) | ||||
addi a0, a0, (12 * 16) | addi a0, a0, (12 * 8) | ||||
#endif | #endif | ||||
/* Load the return value */ | /* Load the return value */ | ||||
mv a0, a1 | mv a0, a1 | ||||
ret | ret | ||||
botch: | botch: | ||||
call _C_LABEL(longjmperror) | call _C_LABEL(longjmperror) | ||||
call _C_LABEL(abort) | call _C_LABEL(abort) | ||||
END(longjmp) | END(longjmp) |