aboutsummaryrefslogtreecommitdiff
path: root/unix/as.macintel/zz_zsvjmp.c
blob: a417f0395a4646061e83c3881a0574e6cedb2930 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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]);
}