blob: 2fb30b59cdd5d7e651271a79d1aaa3d38b2454b4 [file] [log] [blame]
// Kernel implementations for setjmp/longjmp.
#ifndef ROS_SETJMP_H
#define ROS_SETJMP_H
#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
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
#define setjmp(jb) ({bool err; \
__ros_clobber_callee_regs(); \
err = slim_setjmp(jb); \
err;})
#pragma GCC diagnostic pop
#endif /* !ROS_SETJMP_H */