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