Rename max_physical_address -> physical_address_limit

This commit is contained in:
Josh Holtrop 2022-05-03 19:46:39 -04:00
parent 59890868c1
commit b9f051017c

View File

@ -144,7 +144,7 @@ private bool set_graphics_mode()
/** /**
* Walk the EFI memory map and translate it to the HULK bootinfo format. * Walk the EFI memory map and translate it to the HULK bootinfo format.
*/ */
private void get_memory_map(ulong * bss_phys, ulong * stack_phys, ulong * max_physical_address, UINTN * memory_map_key) private void get_memory_map(ulong * bss_phys, ulong * stack_phys, ulong * physical_address_limit, UINTN * memory_map_key)
{ {
immutable static ubyte[] efi_to_hulk_memory_map_type = [ immutable static ubyte[] efi_to_hulk_memory_map_type = [
BootInfo.MemoryRegion.Type.Reserved, // EfiReservedMemoryType BootInfo.MemoryRegion.Type.Reserved, // EfiReservedMemoryType
@ -162,7 +162,7 @@ private void get_memory_map(ulong * bss_phys, ulong * stack_phys, ulong * max_ph
BootInfo.MemoryRegion.Type.MemoryMappedIOPortSpace, // EfiMemoryMappedIOPortSpace BootInfo.MemoryRegion.Type.MemoryMappedIOPortSpace, // EfiMemoryMappedIOPortSpace
BootInfo.MemoryRegion.Type.PalCode, // EfiPalCode BootInfo.MemoryRegion.Type.PalCode, // EfiPalCode
]; ];
*max_physical_address = 0u; *physical_address_limit = 0u;
UINTN memory_map_size = scratch.free(); UINTN memory_map_size = scratch.free();
UINTN descriptor_size; UINTN descriptor_size;
UINT32 descriptor_version; UINT32 descriptor_version;
@ -191,7 +191,7 @@ private void get_memory_map(ulong * bss_phys, ulong * stack_phys, ulong * max_ph
} }
EFI_MEMORY_DESCRIPTOR * descriptor = cast(EFI_MEMORY_DESCRIPTOR *)&scratch_base[count * descriptor_size]; EFI_MEMORY_DESCRIPTOR * descriptor = cast(EFI_MEMORY_DESCRIPTOR *)&scratch_base[count * descriptor_size];
ulong end_address = descriptor.PhysicalStart + descriptor.NumberOfPages * 4096u; ulong end_address = descriptor.PhysicalStart + descriptor.NumberOfPages * 4096u;
if ((end_address > *max_physical_address) && if ((end_address > *physical_address_limit) &&
((descriptor.Type == EfiLoaderCode) || ((descriptor.Type == EfiLoaderCode) ||
(descriptor.Type == EfiLoaderData) || (descriptor.Type == EfiLoaderData) ||
(descriptor.Type == EfiBootServicesCode) || (descriptor.Type == EfiBootServicesCode) ||
@ -200,7 +200,7 @@ private void get_memory_map(ulong * bss_phys, ulong * stack_phys, ulong * max_ph
(descriptor.Type == EfiRuntimeServicesData) || (descriptor.Type == EfiRuntimeServicesData) ||
(descriptor.Type == EfiConventionalMemory))) (descriptor.Type == EfiConventionalMemory)))
{ {
*max_physical_address = end_address; *physical_address_limit = end_address;
} }
if (descriptor.Type >= efi_to_hulk_memory_map_type.length) if (descriptor.Type >= efi_to_hulk_memory_map_type.length)
{ {
@ -358,13 +358,13 @@ private void map_hulk(PageTableEntry * pt_base, ulong bss_phys, ulong stack_phys
/** /**
* Build page tables in preparation to jump to HULK. * Build page tables in preparation to jump to HULK.
* *
* @param max_physical_address Maximum physical address to identity map. * @param physical_address_limit Maximum physical address to identity map.
*/ */
private void build_page_tables(ulong max_physical_address, ulong bss_phys, ulong stack_phys) private void build_page_tables(ulong physical_address_limit, ulong bss_phys, ulong stack_phys)
{ {
PageTableEntry * pt_base = new_page_table(); PageTableEntry * pt_base = new_page_table();
/* Map physical RAM. */ /* Map physical RAM. */
for (size_t addr = 0u; addr < max_physical_address; addr += (2u * 1024u * 1024u)) for (size_t addr = 0u; addr < physical_address_limit; addr += (2u * 1024u * 1024u))
{ {
map2m(addr, addr, pt_base); map2m(addr, addr, pt_base);
} }
@ -372,7 +372,7 @@ private void build_page_tables(ulong max_physical_address, ulong bss_phys, ulong
for (size_t i = 0u; i < bootinfo().memory_map_count; i++) for (size_t i = 0u; i < bootinfo().memory_map_count; i++)
{ {
ulong addr = bootinfo().memory_map[i].base; ulong addr = bootinfo().memory_map[i].base;
if (addr >= max_physical_address) if (addr >= physical_address_limit)
{ {
map4kregion(addr, addr, bootinfo().memory_map[i].size, pt_base); map4kregion(addr, addr, bootinfo().memory_map[i].size, pt_base);
} }
@ -424,11 +424,11 @@ extern (C) EFI_STATUS efi_main(EFI_HANDLE image_handle, EFI_SYSTEM_TABLE * st)
ulong bss_phys; ulong bss_phys;
ulong stack_phys; ulong stack_phys;
ulong max_physical_address; ulong physical_address_limit;
UINTN memory_map_key; UINTN memory_map_key;
for (;;) for (;;)
{ {
get_memory_map(&bss_phys, &stack_phys, &max_physical_address, &memory_map_key); get_memory_map(&bss_phys, &stack_phys, &physical_address_limit, &memory_map_key);
EFI_STATUS status = st.BootServices.ExitBootServices(image_handle, memory_map_key); EFI_STATUS status = st.BootServices.ExitBootServices(image_handle, memory_map_key);
if (status == EFI_INVALID_PARAMETER) if (status == EFI_INVALID_PARAMETER)
@ -444,7 +444,7 @@ extern (C) EFI_STATUS efi_main(EFI_HANDLE image_handle, EFI_SYSTEM_TABLE * st)
return EFI_SUCCESS; return EFI_SUCCESS;
} }
build_page_tables(max_physical_address, bss_phys, stack_phys); build_page_tables(physical_address_limit, bss_phys, stack_phys);
bootinfo().hulk_phys = hulk_bin_phys(); bootinfo().hulk_phys = hulk_bin_phys();
bootinfo().bss_phys = bss_phys; bootinfo().bss_phys = bss_phys;