xref: /netbsd-src/sys/external/bsd/gnu-efi/dist/apps/setjmp.c (revision 1eb4b21779cd330f45cea12cb60eb09e852039cb)
1 /*	$NetBSD: setjmp.c,v 1.1.1.2 2021/09/30 18:50:09 jmcneill Exp $	*/
2 
3 
4 #include <efi.h>
5 #include <efilib.h>
6 #include <efisetjmp.h>
7 
8 EFI_STATUS
efi_main(EFI_HANDLE image_handle,EFI_SYSTEM_TABLE * systab)9 efi_main(
10 	EFI_HANDLE image_handle,
11 	EFI_SYSTEM_TABLE *systab
12 )
13 {
14 	jmp_buf env;
15 	int rc;
16 
17 	InitializeLib(image_handle, systab);
18 	rc = setjmp(env);
19 	Print(L"setjmp() = %d\n", rc);
20 
21 	if (rc == 3) {
22 		Print(L"3 worked\n");
23 		longjmp(env, 0);
24 		return 0;
25 	}
26 
27 	if (rc == 1) {
28 		Print(L"0 got to be one yay\n");
29 		return 0;
30 	}
31 
32 	longjmp(env, 3);
33 	return 0;
34 }
35