#include "DEFS.h"
#include <machine/setjmp.h>
ENTRY(_setjmp)
RETGUARD_SETUP(_setjmp, t6)
sd sp, (1 * 8)(a0)
sd s0, (2 * 8)(a0)
sd s1, (3 * 8)(a0)
sd s2, (4 * 8)(a0)
sd s3, (5 * 8)(a0)
sd s4, (6 * 8)(a0)
sd s5, (7 * 8)(a0)
sd s6, (8 * 8)(a0)
sd s7, (9 * 8)(a0)
sd s8, (10 * 8)(a0)
sd s9, (11 * 8)(a0)
sd s10, (12 * 8)(a0)
sd s11, (13 * 8)(a0)
sd ra, (14 * 8)(a0)
#ifndef _STANDALONE
fsd fs0, (15 * 8)(a0)
fsd fs1, (16 * 8)(a0)
fsd fs2, (17 * 8)(a0)
fsd fs3, (18 * 8)(a0)
fsd fs4, (19 * 8)(a0)
fsd fs5, (20 * 8)(a0)
fsd fs6, (21 * 8)(a0)
fsd fs7, (22 * 8)(a0)
fsd fs8, (23 * 8)(a0)
fsd fs9, (24 * 8)(a0)
fsd fs10, (25 * 8)(a0)
fsd fs11, (26 * 8)(a0)
frcsr t0
sd t0, (27 * 8)(a0)
#endif
mv a0, x0
RETGUARD_CHECK(_setjmp, t6)
ret
END_STRONG(_setjmp)
ENTRY(_longjmp)
RETGUARD_SYMBOL(_longjmp)
RETGUARD_LOAD_RANDOM(_longjmp, t6)
ld t0, (1 * 8)(a0)
mv sp, t0
ld s0, (2 * 8)(a0)
ld s1, (3 * 8)(a0)
ld s2, (4 * 8)(a0)
ld s3, (5 * 8)(a0)
ld s4, (6 * 8)(a0)
ld s5, (7 * 8)(a0)
ld s6, (8 * 8)(a0)
ld s7, (9 * 8)(a0)
ld s8, (10 * 8)(a0)
ld s9, (11 * 8)(a0)
ld s10, (12 * 8)(a0)
ld s11, (13 * 8)(a0)
ld ra, (14 * 8)(a0)
#ifndef _STANDALONE
fld fs0, (15 * 8)(a0)
fld fs1, (16 * 8)(a0)
fld fs2, (17 * 8)(a0)
fld fs3, (18 * 8)(a0)
fld fs4, (19 * 8)(a0)
fld fs5, (20 * 8)(a0)
fld fs6, (21 * 8)(a0)
fld fs7, (22 * 8)(a0)
fld fs8, (23 * 8)(a0)
fld fs9, (24 * 8)(a0)
fld fs10, (25 * 8)(a0)
fld fs11, (26 * 8)(a0)
ld t0, (27 * 8)(a0)
fscsr t0
#endif
li a0, 1
beqz a1, 1f
mv a0, a1
1:
RETGUARD_CHECK(_longjmp, t6)
ret
END_STRONG(_longjmp)