Implement BlPhysicalAddressToVirtual() routine
This commit is contained in:
parent
170d1c71c9
commit
8e61e95cc2
@ -91,6 +91,7 @@ typedef EFI_STATUS (*PBL_MAP_VIRTUAL_MEMORY)(IN OUT PXTBL_PAGE_MAPPING PageMap,
|
|||||||
typedef EFI_STATUS (*PBL_OPEN_VOLUME)(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, OUT PEFI_HANDLE DiskHandle, OUT PEFI_FILE_HANDLE *FsHandle);
|
typedef EFI_STATUS (*PBL_OPEN_VOLUME)(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, OUT PEFI_HANDLE DiskHandle, OUT PEFI_FILE_HANDLE *FsHandle);
|
||||||
typedef EFI_STATUS (*PBL_OPEN_PROTOCOL)(OUT PEFI_HANDLE Handle, OUT PVOID *ProtocolHandler, IN PEFI_GUID ProtocolGuid);
|
typedef EFI_STATUS (*PBL_OPEN_PROTOCOL)(OUT PEFI_HANDLE Handle, OUT PVOID *ProtocolHandler, IN PEFI_GUID ProtocolGuid);
|
||||||
typedef EFI_STATUS (*PBL_OPEN_PROTOCOL_HANDLE)(IN EFI_HANDLE Handle, OUT PVOID *ProtocolHandler, IN PEFI_GUID ProtocolGuid);
|
typedef EFI_STATUS (*PBL_OPEN_PROTOCOL_HANDLE)(IN EFI_HANDLE Handle, OUT PVOID *ProtocolHandler, IN PEFI_GUID ProtocolGuid);
|
||||||
|
typedef PVOID (*PBL_PHYSICAL_ADDRESS_TO_VIRTUAL)(IN PVOID PhysicalAddress, IN PVOID PhysicalBase, IN PVOID VirtualBase);
|
||||||
typedef EFI_STATUS (*PBL_POWER_SYSTEM)();
|
typedef EFI_STATUS (*PBL_POWER_SYSTEM)();
|
||||||
typedef EFI_STATUS (*PBL_READ_FILE)(IN PEFI_FILE_HANDLE DirHandle, IN CONST PWCHAR FileName, OUT PVOID *FileData, OUT PSIZE_T FileSize);
|
typedef EFI_STATUS (*PBL_READ_FILE)(IN PEFI_FILE_HANDLE DirHandle, IN CONST PWCHAR FileName, OUT PVOID *FileData, OUT PSIZE_T FileSize);
|
||||||
typedef EFI_STATUS (*PBL_REGISTER_BOOT_PROTOCOL)(IN PWCHAR SystemType, IN PEFI_GUID BootProtocolGuid);
|
typedef EFI_STATUS (*PBL_REGISTER_BOOT_PROTOCOL)(IN PWCHAR SystemType, IN PEFI_GUID BootProtocolGuid);
|
||||||
@ -315,6 +316,7 @@ typedef struct _XTBL_LOADER_PROTOCOL
|
|||||||
PBL_MAP_EFI_MEMORY MapEfiMemory;
|
PBL_MAP_EFI_MEMORY MapEfiMemory;
|
||||||
PBL_MAP_PAGE MapPage;
|
PBL_MAP_PAGE MapPage;
|
||||||
PBL_MAP_VIRTUAL_MEMORY MapVirtualMemory;
|
PBL_MAP_VIRTUAL_MEMORY MapVirtualMemory;
|
||||||
|
PBL_PHYSICAL_ADDRESS_TO_VIRTUAL PhysicalAddressToVirtual;
|
||||||
PBL_SET_MEMORY SetMemory;
|
PBL_SET_MEMORY SetMemory;
|
||||||
PBL_ZERO_MEMORY ZeroMemory;
|
PBL_ZERO_MEMORY ZeroMemory;
|
||||||
} Memory;
|
} Memory;
|
||||||
|
@ -247,6 +247,12 @@ BlOpenProtocolHandle(IN EFI_HANDLE Handle,
|
|||||||
OUT PVOID *ProtocolHandler,
|
OUT PVOID *ProtocolHandler,
|
||||||
IN PEFI_GUID ProtocolGuid);
|
IN PEFI_GUID ProtocolGuid);
|
||||||
|
|
||||||
|
XTCDECL
|
||||||
|
PVOID
|
||||||
|
BlPhysicalAddressToVirtual(IN PVOID PhysicalAddress,
|
||||||
|
IN PVOID PhysicalBase,
|
||||||
|
IN PVOID VirtualBase);
|
||||||
|
|
||||||
XTCDECL
|
XTCDECL
|
||||||
VOID
|
VOID
|
||||||
BlQueryConsoleMode(OUT PUINT_PTR ResX,
|
BlQueryConsoleMode(OUT PUINT_PTR ResX,
|
||||||
|
@ -488,6 +488,32 @@ BlMapVirtualMemory(IN OUT PXTBL_PAGE_MAPPING PageMap,
|
|||||||
return STATUS_EFI_SUCCESS;
|
return STATUS_EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts physical address to virtual address based on physical base and virtual base.
|
||||||
|
*
|
||||||
|
* @param PhysicalAddress
|
||||||
|
* Specifies physical address that will be converted to virtual address.
|
||||||
|
*
|
||||||
|
* @param PhysicalBase
|
||||||
|
* Supplies a physical base address.
|
||||||
|
*
|
||||||
|
* @param VirtualBase
|
||||||
|
* Supplies a virtual base address.
|
||||||
|
*
|
||||||
|
* @return This routine returns a mapped virtual address.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTCDECL
|
||||||
|
PVOID
|
||||||
|
BlPhysicalAddressToVirtual(IN PVOID PhysicalAddress,
|
||||||
|
IN PVOID PhysicalBase,
|
||||||
|
IN PVOID VirtualBase)
|
||||||
|
{
|
||||||
|
/* Convert physical address to virtual address */
|
||||||
|
return (PUCHAR)VirtualBase + ((PUCHAR)PhysicalAddress - (PUCHAR)PhysicalBase);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts EFI memory type to XTLDR memory type.
|
* Converts EFI memory type to XTLDR memory type.
|
||||||
*
|
*
|
||||||
|
@ -636,6 +636,7 @@ BlpInstallXtLoaderProtocol()
|
|||||||
BlpLdrProtocol.Memory.MapEfiMemory = BlMapEfiMemory;
|
BlpLdrProtocol.Memory.MapEfiMemory = BlMapEfiMemory;
|
||||||
BlpLdrProtocol.Memory.MapPage = BlMapPage;
|
BlpLdrProtocol.Memory.MapPage = BlMapPage;
|
||||||
BlpLdrProtocol.Memory.MapVirtualMemory = BlMapVirtualMemory;
|
BlpLdrProtocol.Memory.MapVirtualMemory = BlMapVirtualMemory;
|
||||||
|
BlpLdrProtocol.Memory.PhysicalAddressToVirtual = BlPhysicalAddressToVirtual;
|
||||||
BlpLdrProtocol.Memory.SetMemory = RtlSetMemory;
|
BlpLdrProtocol.Memory.SetMemory = RtlSetMemory;
|
||||||
BlpLdrProtocol.Memory.ZeroMemory = RtlZeroMemory;
|
BlpLdrProtocol.Memory.ZeroMemory = RtlZeroMemory;
|
||||||
BlpLdrProtocol.Protocol.Close = BlCloseProtocol;
|
BlpLdrProtocol.Protocol.Close = BlCloseProtocol;
|
||||||
|
Loading…
Reference in New Issue
Block a user