diff options
Diffstat (limited to 'unix/as.macintel/zz_zsvjmp.c')
-rw-r--r-- | unix/as.macintel/zz_zsvjmp.c | 17 |
1 files changed, 17 insertions, 0 deletions
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 <stdio.h> + +/* 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]); +} |