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