#include <sys/cdefs.h>
_BEGIN_STD_C
#if defined(__HEXAGON_ARCH__)
#define _JBLEN 16
#define _JBTYPE long
#endif
#if defined(__or1k__) || defined(__or1knd__)
#define _JBLEN 13
#define _JBTYPE unsigned long
#endif
#if defined(__arm__) || defined(__thumb__)
#define _JBLEN 20
#define _JBTYPE long long
#endif
#if defined(__aarch64__)
#define _JBLEN 22
#define _JBTYPE long long
#endif
#if defined(__AVR__)
#define _JBLEN 24
#endif
#ifdef __sparc__
#define _JBLEN 13
#endif
#ifdef __BFIN__
#define _JBLEN 40
#endif
#ifdef __epiphany__
#define _JBTYPE long long
#define _JBLEN 10
#endif
#if defined(__m68k__) || defined(__mc68000__)
#define _JBLEN 34
#endif
#if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__)
#define _JBLEN 32
#endif
#ifdef __nds32__
#if __NDS32_EXT_FPU_SP__ || __NDS32_EXT_FPU_DP__
#define _JBLEN 50
#else
#define _JBLEN 18
#endif
#endif
#if defined(__Z8001__) || defined(__Z8002__)
#define _JBLEN 20
#endif
#ifdef _AM29K
#define _JBLEN 9
#endif
#ifdef __i386__
#if defined(__iamcu__)
#define _JBLEN 6
#else
#define _JBLEN 9
#endif
#endif
#ifdef __x86_64__
#define _JBTYPE long long
#define _JBLEN 8
#endif
#ifdef __i960__
#define _JBLEN 35
#endif
#ifdef __M32R__
#define _JBLEN 10
#endif
#ifdef __mips__
#if defined(__mips64)
#define _JBTYPE long long
#endif
#ifdef __mips_soft_float
#define _JBLEN 11
#else
#define _JBLEN 23
#endif
#endif
#ifdef __m88000__
#define _JBLEN 21
#endif
#ifdef __H8300__
#define _JBLEN 5
#define _JBTYPE int
#endif
#ifdef __H8300H__
#define _JBLEN 5
#define _JBTYPE long
#endif
#if defined(__H8300S__) || defined(__H8300SX__)
#define _JBLEN 5
#define _JBTYPE long
#endif
#ifdef __H8500__
#define _JBLEN 4
#endif
#ifdef __sh__
#if __SH5__
#define _JBLEN 50
#define _JBTYPE long long
#else
#define _JBLEN 20
#endif
#endif
#ifdef __v800
#define _JBLEN 28
#endif
#ifdef __PPC__
#ifdef __powerpc64__
#ifdef __ALTIVEC__
#define _JBLEN 70
#else
#define _JBLEN 43
#endif
#else
#ifdef __ALTIVEC__
#define _JBLEN 64
#else
#define _JBLEN 32
#endif
#endif
#define _JBTYPE double
#endif
#ifdef __MICROBLAZE__
#define _JBLEN 20
#define _JBTYPE unsigned int
#endif
#ifdef __hppa__
#define _JBLEN 28
#endif
#if defined(__mn10300__) || defined(__mn10200__)
#ifdef __AM33_2__
#define _JBLEN 26
#else
#define _JBLEN 10
#endif
#endif
#ifdef __v850
#define _JBLEN 16
#endif
#if defined(_C4x)
#define _JBLEN 10
#endif
#if defined(_C3x)
#define _JBLEN 9
#endif
#ifdef __TMS320C6X__
#define _JBLEN 13
#endif
#ifdef __TIC80__
#define _JBLEN 13
#endif
#ifdef __D10V__
#define _JBLEN 8
#endif
#ifdef __D30V__
#define _JBLEN ((64 + (2 * 2) + 18 ) / 2)
#define _JBTYPE double
#endif
#ifdef __frv__
#define _JBLEN (68 / 2)
#define _JBTYPE double
#endif
#ifdef __moxie__
#define _JBLEN 10
#endif
#ifdef __CRX__
#define _JBLEN 9
#endif
#if (defined(__CR16__) || defined(__CR16C__) || defined(__CR16CP__))
#define _JBLEN 14
#define _JBTYPE unsigned short
#endif
#ifdef __fr30__
#define _JBLEN 10
#endif
#ifdef __FT32__
#define _JBLEN 27
#endif
#ifdef __iq2000__
#define _JBLEN 32
#endif
#ifdef __mcore__
#define _JBLEN 16
#endif
#ifdef __arc__
#define _JBLEN 25
#define _JBTYPE unsigned long
#endif
#ifdef __ARC64__
#define _JBLEN 18
#ifdef __ARC64_ARCH64__
#define _JBTYPE long long
#else
#define _JBTYPE long
#endif
#endif
#ifdef __MMIX__
#define _JBLEN 5
#define _JBTYPE unsigned long
#endif
#ifdef __mt__
#define _JBLEN 16
#endif
#ifdef __SPU__
#define _JBLEN 50
#define _JBTYPE __vector signed int
#endif
#ifdef __xstormy16__
#define _JBLEN 8
#endif
#ifdef __XTENSA__
#if __XTENSA_WINDOWED_ABI__
#define _JBLEN 17
#else
#define _JBLEN 6
#endif
#endif
#ifdef __mep__
#define _JBLEN 19
#endif
#ifdef __CRIS__
#define _JBLEN 18
#endif
#ifdef __ia64
#define _JBLEN 64
#endif
#ifdef __lm32__
#define _JBLEN 19
#endif
#ifdef __m32c__
#if defined(__r8c_cpu__) || defined(__m16c_cpu__)
#define _JBLEN (22 / 2)
#else
#define _JBLEN (34 / 2)
#endif
#define _JBTYPE unsigned short
#endif
#ifdef __MSP430__
#define _JBLEN 9
#ifdef __MSP430X_LARGE__
#define _JBTYPE unsigned long
#else
#define _JBTYPE unsigned short
#endif
#endif
#ifdef __RL78__
#define _JBLEN (8 * 3 + 8)
#define _JBTYPE unsigned char
#endif
#ifdef __NIOS2__
#define _JBLEN 40
#define _JBTYPE unsigned long
#endif
#ifdef __PRU__
#define _JBLEN 48
#define _JBTYPE unsigned int
#endif
#ifdef __RX__
#define _JBLEN 0x44
#endif
#ifdef __VISIUM__
#define _JBLEN 12
#endif
#ifdef __riscv
#define _JBTYPE long long
#ifdef __riscv_32e
#define _JBLEN ((4 * sizeof(long)) / sizeof(long))
#else
#define _JBLEN ((14 * sizeof(long) + 12 * sizeof(double)) / sizeof(long))
#endif
#endif
#ifdef __CSKYABIV2__
#define _JBTYPE unsigned long
#if defined(__CK801__)
#define _JBLEN 7
#elif defined(__CK802__)
#define _JBLEN 10
#else
#define _JBLEN 18
#endif
#endif
#ifdef __loongarch__
#define _JBTYPE unsigned long
#ifdef __loongarch_soft_float
#define _JBLEN 13
#elif __loongarch_frlen > 32 && __loongarch_grlen <= 32
#define _JBLEN (13 + 1 + (8 * (__loongarch_frlen / __loongarch_grlen)))
#else
#define _JBLEN (13 + (8 * (__loongarch_frlen / __loongarch_frlen)))
#endif
#endif
#ifdef _JBLEN
#ifdef _JBTYPE
typedef _JBTYPE jmp_buf[_JBLEN];
#else
typedef int jmp_buf[_JBLEN];
#endif
#endif
_END_STD_C
#if (defined(__CYGWIN__) || defined(__rtems__)) && __POSIX_VISIBLE
#include <signal.h>
_BEGIN_STD_C
#ifdef _JBTYPE
typedef _JBTYPE
sigjmp_buf[_JBLEN + 1 + ((sizeof(_JBTYPE) + sizeof(sigset_t) - 1) / sizeof(_JBTYPE))];
#else
typedef int sigjmp_buf[_JBLEN + 1 + (sizeof(sigset_t) / sizeof(int))];
#endif
#define _SAVEMASK _JBLEN
#define _SIGMASK (_JBLEN + 1)
#ifdef _POSIX_THREADS
#define __SIGMASK_FUNC pthread_sigmask
#else
#define __SIGMASK_FUNC sigprocmask
#endif
#if defined(__GNUC__)
#define sigsetjmp(env, savemask) \
__extension__({ \
sigjmp_buf *_sjbuf = &(env); \
((*_sjbuf)[_SAVEMASK] = savemask, \
__SIGMASK_FUNC(SIG_SETMASK, 0, (sigset_t *)((*_sjbuf) + _SIGMASK)), setjmp(*_sjbuf)); \
})
#define siglongjmp(env, val) \
__extension__({ \
sigjmp_buf *_sjbuf = &(env); \
((((*_sjbuf)[_SAVEMASK]) \
? __SIGMASK_FUNC(SIG_SETMASK, (sigset_t *)((*_sjbuf) + _SIGMASK), 0) \
: 0), \
longjmp(*_sjbuf, val)); \
})
#else
#define sigsetjmp(env, savemask) \
((env)[_SAVEMASK] = savemask, __SIGMASK_FUNC(SIG_SETMASK, 0, (sigset_t *)((env) + _SIGMASK)), \
setjmp(env))
#define siglongjmp(env, val) \
((((env)[_SAVEMASK]) ? __SIGMASK_FUNC(SIG_SETMASK, (sigset_t *)((env) + _SIGMASK), 0) : 0), \
longjmp(env, val))
#endif
#define _setjmp(env) sigsetjmp((env), 0)
#define _longjmp(env, val) siglongjmp((env), (val))
_END_STD_C
#endif