xref: /kvm-unit-tests/x86/setjmp.c (revision dee2f09ee389be3c1978e89aa52eafa7decba671)
18bf2b755SAndrew Jones #include "libcflat.h"
29dde4243SPaolo Bonzini #include "setjmp.h"
39dde4243SPaolo Bonzini 
46f6a3713SBill Wendling static const int expected[] = {
56f6a3713SBill Wendling 	0, 1, 2, 3, 4, 5, 6, 7, 8, 9
66f6a3713SBill Wendling };
76f6a3713SBill Wendling 
86f6a3713SBill Wendling #define NUM_LONGJMPS ARRAY_SIZE(expected)
96f6a3713SBill Wendling 
main(void)107db17e21SThomas Huth int main(void)
119dde4243SPaolo Bonzini {
126f6a3713SBill Wendling 	volatile int index = 0;
139dde4243SPaolo Bonzini 	jmp_buf j;
146f6a3713SBill Wendling 	int i;
159dde4243SPaolo Bonzini 
166f6a3713SBill Wendling 	i = setjmp(j);
17*dee2f09eSThomas Huth 	report(expected[index] == i, "actual %d == expected %d",
18*dee2f09eSThomas Huth 	       i, expected[index]);
196f6a3713SBill Wendling 	index++;
206f6a3713SBill Wendling 	if (i + 1 < NUM_LONGJMPS)
216f6a3713SBill Wendling 		longjmp(j, i + 1);
229dde4243SPaolo Bonzini 
23*dee2f09eSThomas Huth 	return report_summary();
249dde4243SPaolo Bonzini }
25