From dd406cf5b5b58ce458f7b9f963233e428aca7c74 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Wed, 9 Mar 2022 15:30:07 -0500 Subject: [PATCH] Show addresses of some EFI structures --- main.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/main.c b/main.c index 60802ab..42b5b43 100644 --- a/main.c +++ b/main.c @@ -22,6 +22,22 @@ static void write_uint(uint32_t n) write_string(&s[11u - i]); } +static void write_ptr(size_t n) +{ + CHAR16 hexchars[] = L"0123456789ABCDEF"; + CHAR16 s[20] = {0}; + size_t s_i = 0u; + for (size_t i = 0u; i < 16u; i++) + { + if ((i != 0u) && ((i % 4u) == 0u)) + { + s[s_i++] = L'_'; + } + s[s_i++] = hexchars[(n >> (60u - 4u * i)) & 0xFu]; + } + write_string(s); +} + static void check_handle(EFI_HANDLE handle) { EFI_HANDLE interface = NULL; @@ -42,6 +58,10 @@ static void check_handle(EFI_HANDLE handle) return; } + write_string(L"interface is at "); + write_ptr((size_t)interface); + write_string(L"\r\n"); + EFI_GRAPHICS_OUTPUT_PROTOCOL * gop = (EFI_GRAPHICS_OUTPUT_PROTOCOL *)interface; } @@ -59,6 +79,10 @@ efi_main(EFI_HANDLE image_handle, EFI_SYSTEM_TABLE * system_table) if (EFI_ERROR(status)) return status; + write_string(L"system_table is at "); + write_ptr((size_t)system_table); + write_string(L"\r\n"); + EFI_HANDLE buffer[10]; UINTN buffer_size = sizeof(buffer); status = system_table->BootServices->LocateHandle(ByProtocol, @@ -67,7 +91,7 @@ efi_main(EFI_HANDLE image_handle, EFI_SYSTEM_TABLE * system_table) &buffer_size, buffer); buffer_size /= sizeof(EFI_HANDLE); - write_string(L"status = "); + write_string(L"LocateHandle status = "); write_uint(status); write_string(L", num entries = "); write_uint(buffer_size);