diff options
Diffstat (limited to 'bootloader/vmmem.c')
| -rw-r--r-- | bootloader/vmmem.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/bootloader/vmmem.c b/bootloader/vmmem.c new file mode 100644 index 0000000..f15c9ac --- /dev/null +++ b/bootloader/vmmem.c @@ -0,0 +1,25 @@ +#include "vmmem.h" + +//#include "paging_struct.h" + + +EFI_STATUS EFIAPI SetVM(IN UINTN size, IN UINTN descriptorsize, IN UINTN descriptorversion, EFI_MEMORY_DESCRIPTOR * map, void * kernel) +{ + + // the code for setting up paging should go here + + // edit the memory mapping so that the uefi runtime knows about it + + EFI_MEMORY_DESCRIPTOR * tmp = map; + + UINTN elements = size/descriptorsize; + UINTN i; + for(i = 0; i < elements; ++i) + { + tmp = (EFI_MEMORY_DESCRIPTOR*)(((EFI_PHYSICAL_ADDRESS)tmp + descriptorsize)); + tmp->VirtualStart = tmp->PhysicalStart; + } + + return uefi_call_wrapper(RT->SetVirtualAddressMap, 4, size, descriptorsize, descriptorversion, map); +} + |
