The boot loader pads efi_map_header to start the array of
efi_memory_descriptor entries on the 16-byte-aligned boundary after the
header. Since the header isn't naturally 16-byte aligned, we need to do
this.
We should have used the actual UEFI EFI_MEMORY_ATTRIBUTES_TABLE which
used uint32_t's to pass all this data to the kernel (they never needed
to be 64-bit quantities or size_t's even) since these entries and the
total size of the table is small. However, this ship long since sailed
since we've used these structures for a decade and there's little to be
gained by changing them. The table header we pass to the kernel from the
loader has similar names, but the seamntics of the fields are different.
Sponsored by: Netflix