summaryrefslogtreecommitdiffstatshomepage
path: root/py/nlrsetjmp.c
diff options
context:
space:
mode:
Diffstat (limited to 'py/nlrsetjmp.c')
-rw-r--r--py/nlrsetjmp.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/py/nlrsetjmp.c b/py/nlrsetjmp.c
new file mode 100644
index 0000000000..a97c8634b2
--- /dev/null
+++ b/py/nlrsetjmp.c
@@ -0,0 +1,16 @@
+#include <setjmp.h>
+#include <stdio.h>
+#include "nlr.h"
+
+#if MICROPY_NLR_SETJMP
+
+nlr_buf_t *nlr_setjmp_top;
+
+void nlr_setjmp_jump(void *val) {
+ nlr_buf_t *buf = nlr_setjmp_top;
+ nlr_setjmp_top = buf->prev;
+ buf->ret_val = val;
+ longjmp(buf->jmpbuf, 1);
+}
+
+#endif