xref: /netbsd-src/sys/external/bsd/gnu-efi/dist/apps/t3.c (revision b2c829d73acfa2ef1ac1967460ebcec8f439b096)
1 /*	$NetBSD: t3.c,v 1.1.1.1 2014/04/01 16:16:06 jakllsch Exp $	*/
2 
3 #include <efi.h>
4 #include <efilib.h>
5 
6 EFI_STATUS
efi_main(EFI_HANDLE image_handle,EFI_SYSTEM_TABLE * systab)7 efi_main(
8 	EFI_HANDLE image_handle,
9 	EFI_SYSTEM_TABLE *systab
10 )
11 {
12 	EFI_GUID loaded_image_protocol = LOADED_IMAGE_PROTOCOL;
13 	EFI_STATUS efi_status;
14 	EFI_LOADED_IMAGE *li;
15 	UINTN pat = PoolAllocationType;
16 	VOID *void_li_p;
17 
18 	InitializeLib(image_handle, systab);
19 	PoolAllocationType = 2; /* klooj */
20 
21 	Print(L"Hello World! (0xd=0x%x, 13=%d)\n", 13, 13);
22 
23 	Print(L"before InitializeLib(): PoolAllocationType=%d\n",
24 		pat);
25 
26 	Print(L" after InitializeLib(): PoolAllocationType=%d\n",
27 		PoolAllocationType);
28 
29 	/*
30 	 * Locate loaded_image_handle instance.
31 	 */
32 
33 	Print(L"BS->HandleProtocol()  ");
34 
35 	efi_status = uefi_call_wrapper(
36 		BS->HandleProtocol,
37 		3,
38 		image_handle,
39 		&loaded_image_protocol,
40 		&void_li_p);
41 	li = void_li_p;
42 
43 	Print(L"%xh (%r)\n", efi_status, efi_status);
44 
45 	if (efi_status != EFI_SUCCESS) {
46 		return efi_status;
47 	}
48 
49 	Print(L"  li: %xh\n", li);
50 
51 	if (!li) {
52 		return EFI_UNSUPPORTED;
53 	}
54 
55 	Print(L"  li->Revision:        %xh\n", li->Revision);
56 	Print(L"  li->ParentHandle:    %xh\n", li->ParentHandle);
57 	Print(L"  li->SystemTable:     %xh\n", li->SystemTable);
58 	Print(L"  li->DeviceHandle:    %xh\n", li->DeviceHandle);
59 	Print(L"  li->FilePath:        %xh\n", li->FilePath);
60 	Print(L"  li->Reserved:        %xh\n", li->Reserved);
61 	Print(L"  li->LoadOptionsSize: %xh\n", li->LoadOptionsSize);
62 	Print(L"  li->LoadOptions:     %xh\n", li->LoadOptions);
63 	Print(L"  li->ImageBase:       %xh\n", li->ImageBase);
64 	Print(L"  li->ImageSize:       %xh\n", li->ImageSize);
65 	Print(L"  li->ImageCodeType:   %xh\n", li->ImageCodeType);
66 	Print(L"  li->ImageDataType:   %xh\n", li->ImageDataType);
67 	Print(L"  li->Unload:          %xh\n", li->Unload);
68 
69 #if 0
70 typedef struct {
71     UINT32                          Revision;
72     EFI_HANDLE                      ParentHandle;
73     struct _EFI_SYSTEM_TABLE        *SystemTable;
74 
75     // Source location of image
76     EFI_HANDLE                      DeviceHandle;
77     EFI_DEVICE_PATH                 *FilePath;
78     VOID                            *Reserved;
79 
80     // Images load options
81     UINT32                          LoadOptionsSize;
82     VOID                            *LoadOptions;
83 
84     // Location of where image was loaded
85     VOID                            *ImageBase;
86     UINT64                          ImageSize;
87     EFI_MEMORY_TYPE                 ImageCodeType;
88     EFI_MEMORY_TYPE                 ImageDataType;
89 
90     // If the driver image supports a dynamic unload request
91     EFI_IMAGE_UNLOAD                Unload;
92 
93 } EFI_LOADED_IMAGE;
94 #endif
95 
96 	return EFI_SUCCESS;
97 }
98