[BOOT:MM] More work on memory manager
This commit is contained in:
@@ -636,7 +636,7 @@ Return Value:
|
||||
EFI_DEVICE_PATH *DevicePath;
|
||||
PBOOT_INPUT_PARAMETERS InputParameters;
|
||||
PBOOT_MEMORY_INFO MemoryInfo;
|
||||
PBOOT_MEMORY_DESCRIPTOR MemoryDescriptor;
|
||||
PMEMORY_DESCRIPTOR MemoryDescriptor;
|
||||
PBOOT_DEVICE BootDevice;
|
||||
PBOOT_FIRMWARE_DATA FirmwareData;
|
||||
PBOOT_RETURN_DATA ReturnData;
|
||||
@@ -693,14 +693,14 @@ Return Value:
|
||||
MemoryInfo->Version = BOOT_MEMORY_INFO_VERSION;
|
||||
MemoryInfo->MdlOffset = sizeof(BOOT_MEMORY_INFO);
|
||||
MemoryInfo->DescriptorCount = 1;
|
||||
MemoryInfo->DescriptorSize = sizeof(BOOT_MEMORY_DESCRIPTOR);
|
||||
MemoryInfo->BasePageOffset = FIELD_OFFSET(BOOT_MEMORY_DESCRIPTOR, BasePage);
|
||||
MemoryInfo->DescriptorSize = sizeof(MEMORY_DESCRIPTOR);
|
||||
MemoryInfo->BasePageOffset = FIELD_OFFSET(MEMORY_DESCRIPTOR, BasePage);
|
||||
|
||||
//
|
||||
// Create a memory descriptor for the boot manager image.
|
||||
//
|
||||
MemoryDescriptor = (PBOOT_MEMORY_DESCRIPTOR)(&EfiInitScratch[ScratchUsed]);
|
||||
ScratchUsed += sizeof(BOOT_MEMORY_DESCRIPTOR);
|
||||
MemoryDescriptor = (PMEMORY_DESCRIPTOR)(&EfiInitScratch[ScratchUsed]);
|
||||
ScratchUsed += sizeof(MEMORY_DESCRIPTOR);
|
||||
MemoryDescriptor->BasePage = (UINTN)InputParameters->ImageBase >> PAGE_SHIFT;
|
||||
MemoryDescriptor->Pages = ALIGN_UP(InputParameters->ImageSize, PAGE_SIZE) >> PAGE_SHIFT;
|
||||
MemoryDescriptor->Attributes = MEMORY_ATTRIBUTE_CACHE_WB;
|
||||
|
56
BOOT/ENVIRON/LIB/EFI/efimm.c
Normal file
56
BOOT/ENVIRON/LIB/EFI/efimm.c
Normal file
@@ -0,0 +1,56 @@
|
||||
/*++
|
||||
|
||||
Copyright (c) 2024, Quinn Stephens.
|
||||
Provided under the BSD 3-Clause license.
|
||||
|
||||
Module Name:
|
||||
|
||||
efimm.c
|
||||
|
||||
Abstract:
|
||||
|
||||
Provides EFI memory manager routines.
|
||||
|
||||
--*/
|
||||
|
||||
#include "bootmgr.h"
|
||||
#include "efi.h"
|
||||
#include "mm.h"
|
||||
|
||||
NTSTATUS
|
||||
MmFwGetMemoryMap (
|
||||
IN OUT PMEMORY_DESCRIPTOR_LIST Mdl,
|
||||
IN ULONG Flags
|
||||
)
|
||||
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Converts an NT status code into an EFI status code.
|
||||
|
||||
Arguments:
|
||||
|
||||
Status - The NT status code to be converted.
|
||||
|
||||
Return Value:
|
||||
|
||||
STATUS_SUCCESS if successful,
|
||||
STATUS_INVALID_PARAMETER if Mdl is invalid.
|
||||
|
||||
--*/
|
||||
|
||||
{
|
||||
(VOID)Flags;
|
||||
|
||||
//
|
||||
// Make sure Mdl is valid.
|
||||
//
|
||||
if (Mdl == NULL) {
|
||||
return STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
MmMdFreeList(Mdl);
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
Reference in New Issue
Block a user