38 #ifndef included_clib_longjmp_h 39 #define included_clib_longjmp_h 43 #if defined(__x86_64__) 45 #define CLIB_ARCH_LONGJMP_REGS 8 49 #define CLIB_ARCH_LONGJMP_REGS 6 51 #elif (defined(__powerpc64__) || defined(__powerpc__)) 54 #define CLIB_POWERPC_ALTIVEC_N_REGS 12 56 #define CLIB_POWERPC_ALTIVEC_N_REGS 0 60 #define CLIB_ARCH_LONGJMP_REGS \ 66 + (sizeof (f64) / sizeof (uword)) * (31 - 14 + 1) \ 68 + (16 / sizeof (uword)) * CLIB_POWERPC_ALTIVEC_N_REGS) 70 #elif defined(__SPU__) 72 #define CLIB_ARCH_LONGJMP_REGS (10) 74 #elif defined(__arm__) 78 #define CLIB_ARCH_LONGJMP_REGS (10) 81 #define CLIB_ARCH_LONGJMP_REGS (10 + (6*2)) 84 #elif defined(__xtensa__) 87 #define CLIB_ARCH_LONGJMP_REGS 0 89 #elif defined(__TMS320C6X__) 92 #define CLIB_ARCH_LONGJMP_REGS 0 94 #elif defined(__aarch64__) 95 #define CLIB_ARCH_LONGJMP_REGS (22) 97 #error "unknown machine" 114 uword func_arg,
void *stack);
#define CLIB_ARCH_LONGJMP_REGS
void clib_longjmp(clib_longjmp_t *save, uword return_value)
uword clib_setjmp(clib_longjmp_t *save, uword return_value_not_taken)
uword clib_calljmp(uword(*func)(uword func_arg), uword func_arg, void *stack)