From fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Wed, 8 Jul 2015 20:46:52 -0400 Subject: Initial commit --- unix/as.macintel/zz_zsvjmp.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 unix/as.macintel/zz_zsvjmp.c (limited to 'unix/as.macintel/zz_zsvjmp.c') diff --git a/unix/as.macintel/zz_zsvjmp.c b/unix/as.macintel/zz_zsvjmp.c new file mode 100644 index 00000000..a417f039 --- /dev/null +++ b/unix/as.macintel/zz_zsvjmp.c @@ -0,0 +1,17 @@ +#include + +/* Compile with gcc -S to get demo assembler code. In the actual ZSVJMP we + * need to execute basically these three lines of code but in the context of + * the routine calling the zsvjmp, so the stack needs to be adjusted + * accordingly (i.e. the assembler from this code WILL NOT work since the + * ZDOJMP will return here, and not the parent routine). + */ + +zsvjmp_(buf,status) +int *buf; +int *status; +{ + *status = 0; + buf[0] = *status; + setjmp (&buf[1]); +} -- cgit