diff options
Diffstat (limited to 'libc/sysdeps/linux/xtensa/setjmp.S')
-rw-r--r-- | libc/sysdeps/linux/xtensa/setjmp.S | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/xtensa/setjmp.S b/libc/sysdeps/linux/xtensa/setjmp.S index bf4691294..862bf6729 100644 --- a/libc/sysdeps/linux/xtensa/setjmp.S +++ b/libc/sysdeps/linux/xtensa/setjmp.S @@ -88,6 +88,7 @@ END (setjmp) ENTRY (__sigsetjmp) 1: +#if defined(__XTENSA_WINDOWED_ABI__) /* Flush registers. */ movi a4, __window_spill callx4 a4 @@ -146,6 +147,22 @@ ENTRY (__sigsetjmp) callx4 a3 mov a2, a6 retw +#elif defined(__XTENSA_CALL0_ABI__) + s32i a0, a2, 0 + s32i a1, a2, 4 + s32i a12, a2, 8 + s32i a13, a2, 12 + s32i a14, a2, 16 + s32i a15, a2, 20 + mov a12, a2 + movi a0, __sigjmp_save + callx0 a0 + l32i a0, a12, 0 + l32i a12, a12, 8 + ret +#else +#error Unsupported Xtensa ABI +#endif END(__sigsetjmp) weak_extern(_setjmp) |