[feat] BootLoader -> Kernel
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
#include <memory/pmm.h>
|
||||
#include <efilib.h>
|
||||
#include <serial.h>
|
||||
|
||||
extern EFI_SYSTEM_TABLE *ST;
|
||||
|
||||
pmm_t g_pmm;
|
||||
|
||||
static inline void bitmap_set(UINTN idx) {
|
||||
@@ -31,7 +32,7 @@ EFI_STATUS pmm_init() {
|
||||
UINT32 desc_version;
|
||||
|
||||
EFI_STATUS status = uefi_call_wrapper(
|
||||
(void*)ST->BootServices->GetMemoryMap, 5,
|
||||
ST->BootServices->GetMemoryMap, 5,
|
||||
&map_size, NULL, &map_key, &desc_size, &desc_version
|
||||
);
|
||||
|
||||
@@ -39,17 +40,17 @@ EFI_STATUS pmm_init() {
|
||||
|
||||
EFI_MEMORY_DESCRIPTOR* mem_map = NULL;
|
||||
status = uefi_call_wrapper(
|
||||
(void*)ST->BootServices->AllocatePool, 3,
|
||||
ST->BootServices->AllocatePool, 3,
|
||||
EfiLoaderData, map_size, (void**)&mem_map
|
||||
);
|
||||
if (EFI_ERROR(status)) return status;
|
||||
|
||||
status = uefi_call_wrapper(
|
||||
(void*)ST->BootServices->GetMemoryMap, 5,
|
||||
ST->BootServices->GetMemoryMap, 5,
|
||||
&map_size, mem_map, &map_key, &desc_size, &desc_version
|
||||
);
|
||||
if (EFI_ERROR(status)) {
|
||||
uefi_call_wrapper((void*)ST->BootServices->FreePool, 1, mem_map);
|
||||
uefi_call_wrapper(ST->BootServices->FreePool, 1, mem_map);
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -96,7 +97,7 @@ EFI_STATUS pmm_init() {
|
||||
|
||||
if (bitmap_addr == 0) {
|
||||
serial_write("PMM: ERROR - no space for bitmap!\n");
|
||||
uefi_call_wrapper((void*)ST->BootServices->FreePool, 1, mem_map);
|
||||
uefi_call_wrapper(ST->BootServices->FreePool, 1, mem_map);
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
}
|
||||
|
||||
@@ -155,7 +156,7 @@ EFI_STATUS pmm_init() {
|
||||
}
|
||||
if (prev) *(void**)prev = NULL;
|
||||
|
||||
uefi_call_wrapper((void*)ST->BootServices->FreePool, 1, mem_map);
|
||||
uefi_call_wrapper(ST->BootServices->FreePool, 1, mem_map);
|
||||
|
||||
serial_write("PMM: init OK, total ");
|
||||
serial_write_hex(total_pages);
|
||||
|
||||
Reference in New Issue
Block a user