Changeset View
Changeset View
Standalone View
Standalone View
head/lib/libc/riscv/gen/_setjmp.S
Show First 20 Lines • Show All 57 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) | ||||
#if !defined(_STANDALONE) && defined(__riscv_float_abi_double) | #if !defined(_STANDALONE) && defined(__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 24 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) | ||||
#if !defined(_STANDALONE) && defined(__riscv_float_abi_double) | #if !defined(_STANDALONE) && defined(__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: | ||||
#ifdef _STANDALONE | #ifdef _STANDALONE | ||||
j botch | j botch | ||||
#else | #else | ||||
call _C_LABEL(longjmperror) | call _C_LABEL(longjmperror) | ||||
call _C_LABEL(abort) | call _C_LABEL(abort) | ||||
#endif | #endif | ||||
END(_longjmp) | END(_longjmp) |