xref: /kvm-unit-tests/x86/setjmp.c (revision 6f6a3713888144c9ac51e0438aa54bb1c5f3af45)
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