|  | // Kernel implementations for setjmp/longjmp. | 
|  |  | 
|  | #pragma once | 
|  |  | 
|  | #include <arch/setjmp.h> | 
|  |  | 
|  | int slim_setjmp(struct jmpbuf *env) __attribute__((returns_twice)); | 
|  | void longjmp(struct jmpbuf *env, int val) __attribute__((noreturn)); | 
|  |  | 
|  | #pragma GCC diagnostic push | 
|  | /* Currently, this only throws in tcpackproc().  Not sure why, but if you take | 
|  | * out the loop++ > 1000, it won't warn. */ | 
|  | #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" | 
|  |  | 
|  | #define setjmp(jb) ({ __ros_clobber_callee_regs(); slim_setjmp(jb); }) | 
|  |  | 
|  | #pragma GCC diagnostic pop |