xref: /kvm-unit-tests/x86/setjmp.c (revision 10c3c25627d65f8262242fa8bc24ab99db28e724)
1 #include "libcflat.h"
2 #include "setjmp.h"
3 
4 static const int expected[] = {
5 	0, 1, 2, 3, 4, 5, 6, 7, 8, 9
6 };
7 
8 #define NUM_LONGJMPS ARRAY_SIZE(expected)
9 
10 int main(void)
11 {
12 	volatile int index = 0;
13 	jmp_buf j;
14 	int i;
15 
16 	i = setjmp(j);
17 	if (expected[index] != i) {
18 		printf("FAIL: actual %d / expected %d\n", i, expected[index]);
19 		return -1;
20 	}
21 	index++;
22 	if (i + 1 < NUM_LONGJMPS)
23 		longjmp(j, i + 1);
24 
25 	return 0;
26 }
27