X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/de355530ae67247cbd0da700edb3a2a1dae884c2..378393581903b274cb7a4d18e0d978071a6b592d:/bsd/i386/setjmp.h diff --git a/bsd/i386/setjmp.h b/bsd/i386/setjmp.h index b2584eb47..4d7ba1573 100644 --- a/bsd/i386/setjmp.h +++ b/bsd/i386/setjmp.h @@ -29,26 +29,39 @@ #define _BSD_I386_SETJMP_H #include -#include +#include -typedef struct sigcontext jmp_buf[1]; +/* + * _JBLEN is number of ints required to save the following: + * eax, ebx, ecx, edx, edi, esi, ebp, esp, ss, eflags, eip, + * cs, de, es, fs, gs == 16 ints + * onstack, mask = 2 ints + */ +#if defined(KERNEL) +typedef struct sigcontext jmp_buf[1]; #define _JBLEN ((sizeof(struct sigcontext)) / sizeof(int)) typedef int sigjmp_buf[_JBLEN+1]; +#else +#define _JBLEN (18) +typedef int jmp_buf[_JBLEN]; +typedef int sigjmp_buf[_JBLEN + 1]; +#endif + __BEGIN_DECLS -extern int setjmp __P((jmp_buf env)); -extern void longjmp __P((jmp_buf env, int val)); +extern int setjmp(jmp_buf env); +extern void longjmp(jmp_buf env, int val); #ifndef _ANSI_SOURCE -int sigsetjmp __P((sigjmp_buf env, int val)); -void siglongjmp __P((sigjmp_buf env, int val)); +int _setjmp(jmp_buf env); +void _longjmp(jmp_buf, int val); +int sigsetjmp(sigjmp_buf env, int val); +void siglongjmp(sigjmp_buf env, int val); #endif /* _ANSI_SOURCE */ -#if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE) -int _setjmp __P((jmp_buf env)); -void _longjmp __P((jmp_buf, int val)); -void longjmperror __P((void)); +#if !defined(_ANSI_SOURCE) && !defined(_POSIX_C_SOURCE) +void longjmperror(void); #endif /* neither ANSI nor POSIX */ __END_DECLS #endif /* !_BSD_I386_SETJMP_H */