summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/lib/longjmp.c
blob: 6f1afb4b13ad6c5687c9d600c50db382fd914cb0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <setjmp.h>
#include <signal.h>

void __longjmp(void*env,int val);

void __libc_longjmp(sigjmp_buf env,int val);
void __libc_longjmp(sigjmp_buf env,int val) {
  if (env[0].__mask_was_saved) {
    sigprocmask(SIG_SETMASK,(sigset_t*)&env[0].__saved_mask,0);
  }
  if (val==0) val=1;
  __longjmp(env[0].__jmpbuf,val);
}
void __siglongjmp(sigjmp_buf env,int val) __attribute__((alias("__libc_longjmp")));
void longjmp(sigjmp_buf env,int val) __attribute__((weak,alias("__libc_longjmp")));
void siglongjmp(sigjmp_buf env,int val) __attribute__((weak,alias("__libc_longjmp")));