2015-09-04 14:16:56 +00:00
|
|
|
/*
|
2015-09-06 03:24:30 +00:00
|
|
|
* COPYRIGHT: See COPYING.ARM in the top level directory
|
|
|
|
* PROJECT: ReactOS UEFI Boot Library
|
|
|
|
* FILE: boot/environ/include/bl.h
|
|
|
|
* PURPOSE: Main Boot Library Header
|
|
|
|
* PROGRAMMER: Alex Ionescu (alex.ionescu@reactos.org)
|
2015-09-04 14:16:56 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _BL_H
|
|
|
|
#define _BL_H
|
|
|
|
|
2015-09-04 14:23:45 +00:00
|
|
|
/* INCLUDES ******************************************************************/
|
|
|
|
|
|
|
|
/* C Headers */
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <wchar.h>
|
|
|
|
|
|
|
|
/* NT Base Headers */
|
|
|
|
#include <ntifs.h>
|
|
|
|
|
2015-09-05 20:31:14 +00:00
|
|
|
/* NDK Headers */
|
|
|
|
#include <ntndk.h>
|
|
|
|
|
2015-09-04 14:23:45 +00:00
|
|
|
/* UEFI Headers */
|
|
|
|
#include <Uefi.h>
|
2015-09-05 16:05:20 +00:00
|
|
|
#include <DevicePath.h>
|
|
|
|
#include <LoadedImage.h>
|
|
|
|
|
2015-09-06 03:02:56 +00:00
|
|
|
VOID
|
|
|
|
EarlyPrint(_In_ PWCHAR Format, ...);
|
|
|
|
|
2015-09-05 16:05:20 +00:00
|
|
|
/* DEFINES *******************************************************************/
|
|
|
|
|
|
|
|
#define BL_APPLICATION_FLAG_CONVERTED_FROM_EFI 0x01
|
|
|
|
|
2015-09-05 20:31:14 +00:00
|
|
|
#define BL_APP_ENTRY_SIGNATURE "BTAPENT"
|
|
|
|
|
2015-09-05 16:05:20 +00:00
|
|
|
#define BOOT_APPLICATION_SIGNATURE_1 'TOOB'
|
|
|
|
#define BOOT_APPLICATION_SIGNATURE_2 ' PPA'
|
|
|
|
|
|
|
|
#define BOOT_MEMORY_TRANSLATION_TYPE_PHYSICAL 0
|
|
|
|
#define BOOT_MEMORY_TRANSLATION_TYPE_VIRTUAL 1
|
|
|
|
|
|
|
|
#define BOOT_APPLICATION_VERSION 2
|
|
|
|
#define BL_MEMORY_DATA_VERSION 1
|
|
|
|
#define BL_RETURN_ARGUMENTS_VERSION 1
|
|
|
|
#define BL_FIRMWARE_DESCRIPTOR_VERSION 2
|
|
|
|
|
|
|
|
#define BL_APPLICATION_ENTRY_FLAG_NO_GUID 0x01
|
|
|
|
|
2015-09-05 20:31:14 +00:00
|
|
|
#define BL_CONTEXT_PAGING_ON 1
|
|
|
|
#define BL_CONTEXT_INTERRUPTS_ON 2
|
|
|
|
|
2015-09-06 04:53:49 +00:00
|
|
|
#define BL_MM_FLAG_USE_FIRMWARE_FOR_MEMORY_MAP_BUFFERS 0x01
|
2015-09-06 06:15:08 +00:00
|
|
|
#define BL_MM_FLAG_REQUEST_COALESCING 0x02
|
|
|
|
|
|
|
|
#define BL_MM_ADD_DESCRIPTOR_COALESCE_FLAG 0x01
|
|
|
|
#define BL_MM_ADD_DESCRIPTOR_TRUNCATE_FLAG 0x02
|
|
|
|
#define BL_MM_ADD_DESCRIPTOR_NEVER_COALESCE_FLAG 0x10
|
|
|
|
#define BL_MM_ADD_DESCRIPTOR_NEVER_TRUNCATE_FLAG 0x20
|
|
|
|
#define BL_MM_ADD_DESCRIPTOR_UPDATE_LIST_POINTER_FLAG 0x2000
|
|
|
|
|
|
|
|
#define BL_MM_DESCRIPTOR_REQUIRES_COALESCING_FLAG 0x2000000
|
|
|
|
#define BL_MM_DESCRIPTOR_REQUIRES_UPDATING_FLAG 0x4000000
|
2015-09-06 04:53:49 +00:00
|
|
|
|
|
|
|
#define BL_LIBRARY_FLAG_REINITIALIZE 0x02
|
|
|
|
#define BL_LIBRARY_FLAG_REINITIALIZE_ALL 0x04
|
|
|
|
#define BL_LIBRARY_FLAG_INITIALIZATION_COMPLETED 0x20
|
|
|
|
|
2015-09-06 06:15:08 +00:00
|
|
|
#define BL_MEMORY_CLASS_SHIFT 28
|
|
|
|
|
2015-09-05 16:05:20 +00:00
|
|
|
/* ENUMERATIONS **************************************************************/
|
|
|
|
|
2015-09-05 20:31:14 +00:00
|
|
|
typedef enum _BL_TRANSLATION_TYPE
|
|
|
|
{
|
|
|
|
BlNone,
|
|
|
|
BlVirtual,
|
|
|
|
BlPae,
|
|
|
|
BlMax
|
|
|
|
} BL_TRANSLATION_TYPE;
|
|
|
|
|
|
|
|
typedef enum _BL_ARCH_MODE
|
|
|
|
{
|
|
|
|
BlProtectedMode,
|
|
|
|
BlRealMode
|
|
|
|
} BL_ARCH_MODE;
|
|
|
|
|
2015-09-05 16:05:20 +00:00
|
|
|
//
|
|
|
|
// Boot Device Types
|
|
|
|
//
|
|
|
|
typedef enum _BL_DEVICE_TYPE
|
|
|
|
{
|
2015-09-05 19:18:54 +00:00
|
|
|
LocalDevice = 0,
|
|
|
|
PartitionDevice = 2,
|
|
|
|
UdpDevice = 4,
|
|
|
|
HardDiskDevice = 6
|
2015-09-05 16:05:20 +00:00
|
|
|
} BL_DEVICE_TYPE;
|
|
|
|
|
2015-09-05 19:18:54 +00:00
|
|
|
//
|
|
|
|
// Local Device Types
|
|
|
|
//
|
|
|
|
typedef enum _BL_LOCAL_DEVICE_TYPE
|
|
|
|
{
|
|
|
|
FloppyDevice = 1,
|
|
|
|
CdRomDevice = 2,
|
|
|
|
RamDiskDevice = 3,
|
|
|
|
} BL_LOCAL_DEVICE_TYPE;
|
|
|
|
|
|
|
|
//
|
|
|
|
// Partition types
|
|
|
|
//
|
|
|
|
typedef enum _BL_PARTITION_TYPE
|
|
|
|
{
|
|
|
|
GptPartition,
|
|
|
|
MbrPartition,
|
|
|
|
RawPartition,
|
|
|
|
} BL_PARTITION_TYPE;
|
|
|
|
|
2015-09-05 16:05:20 +00:00
|
|
|
//
|
|
|
|
// File Path Types
|
|
|
|
//
|
|
|
|
typedef enum _BL_PATH_TYPE
|
|
|
|
{
|
|
|
|
EfiPath = 4
|
|
|
|
} BL_PATH_TYPE;
|
|
|
|
|
|
|
|
//
|
|
|
|
// Classes of Memory
|
|
|
|
//
|
|
|
|
typedef enum _BL_MEMORY_CLASS
|
|
|
|
{
|
|
|
|
BlLoaderClass = 0xD,
|
|
|
|
BlApplicationClass,
|
|
|
|
BlSystemClass
|
|
|
|
} BL_MEMORY_CLASS;
|
|
|
|
|
|
|
|
//
|
|
|
|
// Types of Memory
|
|
|
|
//
|
|
|
|
typedef enum _BL_MEMORY_TYPE
|
|
|
|
{
|
|
|
|
//
|
|
|
|
// Loader Memory
|
|
|
|
//
|
|
|
|
BlLoaderMemory = 0xD0000002,
|
|
|
|
BlLoaderPageDirectory = 0xD0000006,
|
|
|
|
BlLoaderReferencePage = 0xD0000007,
|
|
|
|
BlLoaderRamDisk = 0xD0000008,
|
|
|
|
BlLoaderData = 0xD000000A,
|
|
|
|
BlLoaderSelfMap = 0xD000000F,
|
|
|
|
|
|
|
|
//
|
|
|
|
// Application Memory
|
|
|
|
//
|
|
|
|
BlApplicationData = 0xE0000004,
|
|
|
|
|
|
|
|
//
|
|
|
|
// System Memory
|
|
|
|
//
|
|
|
|
BlConventionalMemory = 0xF0000001,
|
|
|
|
BlUnusableMemory = 0xF0000002,
|
|
|
|
BlReservedMemory = 0xF0000003,
|
|
|
|
BlEfiBootMemory = 0xF0000004,
|
|
|
|
BlEfiRuntimeMemory = 0xF0000006,
|
|
|
|
BlAcpiReclaimMemory = 0xF0000008,
|
|
|
|
BlAcpiNvsMemory = 0xF0000009,
|
|
|
|
BlDeviceIoMemory = 0xF000000A,
|
|
|
|
BlDevicePortMemory = 0xF000000B,
|
|
|
|
BlPalMemory = 0xF000000C,
|
|
|
|
} BL_MEMORY_TYPE;
|
2015-09-04 14:23:45 +00:00
|
|
|
|
2015-09-06 04:53:49 +00:00
|
|
|
typedef enum _BL_MEMORY_ATTR
|
|
|
|
{
|
|
|
|
BlMemoryUncached = 1,
|
|
|
|
BlMemoryWriteCombined = 2,
|
|
|
|
BlMemoryWriteThrough = 4,
|
|
|
|
BlMemoryWriteBack = 8,
|
|
|
|
BlMemoryUncachedExported = 0x10,
|
|
|
|
BlMemoryWriteProtected = 0x100,
|
|
|
|
BlMemoryReadProtected = 0x200,
|
|
|
|
BlMemoryExecuteProtected = 0x400,
|
|
|
|
BlMemoryRuntime = 0x1000000
|
|
|
|
} BL_MEMORY_ATTR;
|
|
|
|
|
2015-09-04 14:16:56 +00:00
|
|
|
/* DATA STRUCTURES ***********************************************************/
|
|
|
|
|
|
|
|
typedef struct _BL_LIBRARY_PARAMETERS
|
|
|
|
{
|
|
|
|
ULONG LibraryFlags;
|
|
|
|
ULONG TranslationType;
|
|
|
|
ULONG MinimumAllocationCount;
|
|
|
|
ULONG MinimumHeapSize;
|
|
|
|
ULONG HeapAllocationAttributes;
|
|
|
|
PWCHAR ApplicationBaseDirectory;
|
|
|
|
ULONG DescriptorCount;
|
2015-09-06 03:02:56 +00:00
|
|
|
PWCHAR FontBaseDirectory;
|
2015-09-04 14:16:56 +00:00
|
|
|
} BL_LIBRARY_PARAMETERS, *PBL_LIBRARY_PARAMETERS;
|
|
|
|
|
|
|
|
/* This should eventually go into a more public header */
|
|
|
|
typedef struct _BOOT_APPLICATION_PARAMETER_BLOCK
|
|
|
|
{
|
2015-09-05 16:05:20 +00:00
|
|
|
/* This header tells the library what image we're dealing with */
|
2015-09-04 14:16:56 +00:00
|
|
|
ULONG Signature[2];
|
|
|
|
ULONG Version;
|
|
|
|
ULONG Size;
|
|
|
|
ULONG ImageType;
|
|
|
|
ULONG MemoryTranslationType;
|
2015-09-05 16:05:20 +00:00
|
|
|
|
|
|
|
/* Where is the image located */
|
2015-09-04 14:16:56 +00:00
|
|
|
ULONGLONG ImageBase;
|
|
|
|
ULONG ImageSize;
|
2015-09-05 16:05:20 +00:00
|
|
|
|
|
|
|
/* Offset to BL_MEMORY_DATA */
|
|
|
|
ULONG MemoryDataOffset;
|
|
|
|
|
|
|
|
/* Offset to BL_APPLICATION_ENTRY */
|
2015-09-04 14:16:56 +00:00
|
|
|
ULONG AppEntryOffset;
|
2015-09-05 16:05:20 +00:00
|
|
|
|
|
|
|
/* Offset to BL_DEVICE_DESCRPIPTOR */
|
2015-09-04 14:16:56 +00:00
|
|
|
ULONG BootDeviceOffset;
|
2015-09-05 16:05:20 +00:00
|
|
|
|
|
|
|
/* Offset to BL_FIRMWARE_PARAMETERS */
|
2015-09-04 14:16:56 +00:00
|
|
|
ULONG FirmwareParametersOffset;
|
2015-09-05 16:05:20 +00:00
|
|
|
|
|
|
|
/* Offset to BL_RETURN_ARGUMENTS */
|
|
|
|
ULONG ReturnArgumentsOffset;
|
2015-09-04 14:16:56 +00:00
|
|
|
} BOOT_APPLICATION_PARAMETER_BLOCK, *PBOOT_APPLICATION_PARAMETER_BLOCK;
|
|
|
|
|
2015-09-05 16:05:20 +00:00
|
|
|
typedef struct _BL_MEMORY_DATA
|
|
|
|
{
|
|
|
|
ULONG Version;
|
|
|
|
ULONG MdListOffset;
|
|
|
|
ULONG DescriptorCount;
|
|
|
|
ULONG DescriptorSize;
|
2015-09-06 06:15:08 +00:00
|
|
|
ULONG DescriptorOffset;
|
2015-09-05 16:05:20 +00:00
|
|
|
} BL_MEMORY_DATA, *PBL_MEMORY_DATA;
|
|
|
|
|
|
|
|
typedef struct _BL_FIRMWARE_DESCRIPTOR
|
|
|
|
{
|
|
|
|
ULONG Version;
|
|
|
|
ULONG Unknown;
|
|
|
|
EFI_HANDLE ImageHandle;
|
|
|
|
EFI_SYSTEM_TABLE *SystemTable;
|
|
|
|
} BL_FIRMWARE_DESCRIPTOR, *PBL_FIRMWARE_DESCRIPTOR;
|
|
|
|
|
|
|
|
typedef struct _BL_RETURN_ARGUMENTS
|
|
|
|
{
|
|
|
|
ULONG Version;
|
|
|
|
ULONG ReturnArgumentData[6];
|
|
|
|
} BL_RETURN_ARGUMENTS, *PBL_RETURN_ARGUMENTS;
|
|
|
|
|
|
|
|
typedef struct _BL_MEMORY_DESCRIPTOR
|
|
|
|
{
|
|
|
|
LIST_ENTRY ListEntry;
|
|
|
|
union
|
|
|
|
{
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
ULONGLONG BasePage;
|
|
|
|
ULONGLONG VirtualPage;
|
|
|
|
};
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
ULONGLONG BaseAddress;
|
|
|
|
ULONGLONG VirtualAddress;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
ULONGLONG PageCount;
|
|
|
|
ULONG Flags;
|
|
|
|
BL_MEMORY_TYPE Type;
|
|
|
|
} BL_MEMORY_DESCRIPTOR, *PBL_MEMORY_DESCRIPTOR;
|
|
|
|
|
2015-09-05 19:18:54 +00:00
|
|
|
typedef struct _BL_BCD_OPTION
|
2015-09-05 16:05:20 +00:00
|
|
|
{
|
|
|
|
ULONG Type;
|
|
|
|
ULONG DataOffset;
|
|
|
|
ULONG DataSize;
|
|
|
|
ULONG ListOffset;
|
|
|
|
ULONG NextEntryOffset;
|
2015-09-06 03:02:56 +00:00
|
|
|
ULONG Empty;
|
2015-09-05 19:18:54 +00:00
|
|
|
} BL_BCD_OPTION, *PBL_BCD_OPTION;
|
2015-09-05 16:05:20 +00:00
|
|
|
|
|
|
|
typedef struct _BL_APPLICATION_ENTRY
|
|
|
|
{
|
|
|
|
CHAR Signature[8];
|
|
|
|
ULONG Flags;
|
|
|
|
GUID Guid;
|
|
|
|
ULONG Unknown[4];
|
2015-09-05 19:18:54 +00:00
|
|
|
BL_BCD_OPTION BcdData;
|
2015-09-05 16:05:20 +00:00
|
|
|
} BL_APPLICATION_ENTRY, *PBL_APPLICATION_ENTRY;
|
|
|
|
|
|
|
|
typedef struct _BL_HARDDISK_DEVICE
|
|
|
|
{
|
|
|
|
ULONG PartitionType;
|
|
|
|
union
|
|
|
|
{
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
ULONG PartitionSignature;
|
|
|
|
} Mbr;
|
|
|
|
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
GUID PartitionSignature;
|
|
|
|
} Gpt;
|
|
|
|
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
ULONG DiskNumber;
|
|
|
|
} Raw;
|
|
|
|
};
|
|
|
|
} BL_HARDDISK_DEVICE;
|
|
|
|
|
|
|
|
typedef struct _BL_LOCAL_DEVICE
|
|
|
|
{
|
|
|
|
ULONG Type;
|
|
|
|
union
|
|
|
|
{
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
ULONG DriveNumber;
|
|
|
|
} FloppyDisk;
|
|
|
|
|
|
|
|
BL_HARDDISK_DEVICE HardDisk;
|
|
|
|
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
PHYSICAL_ADDRESS ImageBase;
|
|
|
|
LARGE_INTEGER ImageSize;
|
|
|
|
ULONG ImageOffset;
|
|
|
|
} RamDisk;
|
|
|
|
};
|
|
|
|
} BL_LOCAL_DEVICE;
|
|
|
|
|
|
|
|
typedef struct _BL_DEVICE_DESCRIPTOR
|
|
|
|
{
|
|
|
|
ULONG Size;
|
|
|
|
ULONG Flags;
|
|
|
|
DEVICE_TYPE DeviceType;
|
|
|
|
ULONG Unknown;
|
|
|
|
union
|
|
|
|
{
|
|
|
|
BL_LOCAL_DEVICE Local;
|
|
|
|
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
ULONG Unknown;
|
|
|
|
} Remote;
|
|
|
|
|
|
|
|
struct
|
|
|
|
{
|
2015-09-05 19:18:54 +00:00
|
|
|
union
|
|
|
|
{
|
|
|
|
ULONG PartitionNumber;
|
|
|
|
} Mbr;
|
|
|
|
|
|
|
|
union
|
|
|
|
{
|
|
|
|
GUID PartitionGuid;
|
|
|
|
} Gpt;
|
2015-09-05 16:05:20 +00:00
|
|
|
|
|
|
|
BL_LOCAL_DEVICE Disk;
|
2015-09-05 19:18:54 +00:00
|
|
|
} Partition;
|
2015-09-05 16:05:20 +00:00
|
|
|
};
|
|
|
|
} BL_DEVICE_DESCRIPTOR, *PBL_DEVICE_DESCRIPTOR;
|
|
|
|
|
|
|
|
typedef struct _BL_FILE_PATH_DESCRIPTOR
|
|
|
|
{
|
|
|
|
ULONG Version;
|
|
|
|
ULONG Length;
|
|
|
|
ULONG PathType;
|
|
|
|
UCHAR Path[ANYSIZE_ARRAY];
|
|
|
|
} BL_FILE_PATH_DESCRIPTOR, *PBL_FILE_PATH_DESCRIPTOR;
|
|
|
|
|
|
|
|
typedef struct _BL_WINDOWS_LOAD_OPTIONS
|
|
|
|
{
|
|
|
|
CHAR Signature[8];
|
|
|
|
ULONG Version;
|
|
|
|
ULONG Length;
|
|
|
|
ULONG OsPathOffset;
|
|
|
|
WCHAR LoadOptions[ANYSIZE_ARRAY];
|
|
|
|
} BL_WINDOWS_LOAD_OPTIONS, *PBL_WINDOWS_LOAD_OPTIONS;
|
|
|
|
|
2015-09-05 20:31:14 +00:00
|
|
|
typedef struct _BL_ARCH_CONTEXT
|
|
|
|
{
|
|
|
|
BL_ARCH_MODE Mode;
|
|
|
|
BL_TRANSLATION_TYPE TranslationType;
|
|
|
|
ULONG ContextFlags;
|
|
|
|
} BL_ARCH_CONTEXT, *PBL_ARCH_CONTEXT;
|
|
|
|
|
2015-09-06 04:53:49 +00:00
|
|
|
typedef struct _BL_MEMORY_DESCRIPTOR_LIST
|
|
|
|
{
|
|
|
|
LIST_ENTRY ListHead;
|
|
|
|
PLIST_ENTRY First;
|
|
|
|
PLIST_ENTRY This;
|
|
|
|
ULONG Type;
|
|
|
|
} BL_MEMORY_DESCRIPTOR_LIST, *PBL_MEMORY_DESCRIPTOR_LIST;
|
|
|
|
|
2015-09-06 03:02:56 +00:00
|
|
|
/* INLINE ROUTINES ***********************************************************/
|
|
|
|
|
|
|
|
FORCEINLINE
|
|
|
|
VOID
|
|
|
|
BlSetupDefaultParameters (
|
|
|
|
_Out_ PBL_LIBRARY_PARAMETERS LibraryParameters
|
|
|
|
)
|
|
|
|
{
|
|
|
|
BL_LIBRARY_PARAMETERS DefaultParameters =
|
|
|
|
{
|
|
|
|
0x20,
|
|
|
|
BlVirtual,
|
|
|
|
1024,
|
|
|
|
2 * 1024 * 1024,
|
|
|
|
0,
|
|
|
|
NULL,
|
|
|
|
0,
|
|
|
|
NULL
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Copy the defaults */
|
|
|
|
RtlCopyMemory(LibraryParameters, &DefaultParameters, sizeof(*LibraryParameters));
|
|
|
|
}
|
|
|
|
|
2015-09-06 04:53:49 +00:00
|
|
|
FORCEINLINE
|
|
|
|
VOID
|
|
|
|
MmMdInitializeListHead (
|
|
|
|
_In_ PBL_MEMORY_DESCRIPTOR_LIST List
|
|
|
|
)
|
|
|
|
{
|
|
|
|
/* Initialize the list */
|
|
|
|
InitializeListHead(&List->ListHead);
|
|
|
|
List->First = &List->ListHead;
|
|
|
|
List->This = NULL;
|
|
|
|
}
|
|
|
|
|
2015-09-04 14:16:56 +00:00
|
|
|
/* INITIALIZATION ROUTINES ***************************************************/
|
|
|
|
|
|
|
|
NTSTATUS
|
|
|
|
BlInitializeLibrary(
|
|
|
|
_In_ PBOOT_APPLICATION_PARAMETER_BLOCK BootAppParameters,
|
|
|
|
_In_ PBL_LIBRARY_PARAMETERS LibraryParameters
|
|
|
|
);
|
|
|
|
|
2015-09-05 20:31:14 +00:00
|
|
|
NTSTATUS
|
|
|
|
BlpArchInitialize (
|
|
|
|
_In_ ULONG Phase
|
|
|
|
);
|
|
|
|
|
|
|
|
NTSTATUS
|
|
|
|
BlpFwInitialize (
|
|
|
|
_In_ ULONG Phase,
|
|
|
|
_In_ PBL_FIRMWARE_DESCRIPTOR FirmwareParameters
|
|
|
|
);
|
|
|
|
|
2015-09-06 03:24:30 +00:00
|
|
|
NTSTATUS
|
|
|
|
BlpMmInitialize (
|
|
|
|
_In_ PBL_MEMORY_DATA MemoryData,
|
|
|
|
_In_ BL_TRANSLATION_TYPE TranslationType,
|
|
|
|
_In_ PBL_LIBRARY_PARAMETERS LibraryParameters
|
|
|
|
);
|
|
|
|
|
2015-09-04 14:16:56 +00:00
|
|
|
/* UTILITY ROUTINES **********************************************************/
|
|
|
|
|
|
|
|
EFI_STATUS
|
|
|
|
EfiGetEfiStatusCode(
|
|
|
|
_In_ NTSTATUS Status
|
|
|
|
);
|
|
|
|
|
2015-09-05 20:31:14 +00:00
|
|
|
NTSTATUS
|
|
|
|
EfiGetNtStatusCode (
|
|
|
|
_In_ EFI_STATUS EfiStatus
|
|
|
|
);
|
|
|
|
|
2015-09-05 16:05:20 +00:00
|
|
|
/* BCD ROUTINES **************************************************************/
|
|
|
|
|
|
|
|
ULONG
|
|
|
|
BlGetBootOptionSize (
|
2015-09-05 19:18:54 +00:00
|
|
|
_In_ PBL_BCD_OPTION BcdOption
|
2015-09-05 16:05:20 +00:00
|
|
|
);
|
|
|
|
|
2015-09-05 20:31:14 +00:00
|
|
|
/* CONTEXT ROUTINES **********************************************************/
|
|
|
|
|
|
|
|
VOID
|
|
|
|
BlpArchSwitchContext (
|
|
|
|
_In_ BL_ARCH_MODE NewMode
|
|
|
|
);
|
|
|
|
|
2015-09-06 03:24:30 +00:00
|
|
|
/* MEMORY MANAGER ROUTINES ***************************************************/
|
|
|
|
|
|
|
|
NTSTATUS
|
|
|
|
MmBaInitialize (
|
|
|
|
VOID
|
|
|
|
);
|
|
|
|
|
|
|
|
NTSTATUS
|
|
|
|
MmPaInitialize (
|
|
|
|
_In_ PBL_MEMORY_DATA MemoryData,
|
|
|
|
_In_ ULONG MinimumPages
|
|
|
|
);
|
|
|
|
|
|
|
|
NTSTATUS
|
|
|
|
MmArchInitialize (
|
|
|
|
_In_ ULONG Phase,
|
|
|
|
_In_ PBL_MEMORY_DATA MemoryData,
|
|
|
|
_In_ BL_TRANSLATION_TYPE TranslationType,
|
|
|
|
_In_ BL_TRANSLATION_TYPE LibraryTranslationType
|
|
|
|
);
|
|
|
|
|
|
|
|
NTSTATUS
|
|
|
|
MmHaInitialize (
|
|
|
|
_In_ ULONG HeapSize,
|
|
|
|
_In_ ULONG HeapAttributes
|
|
|
|
);
|
|
|
|
|
2015-09-06 04:53:49 +00:00
|
|
|
VOID
|
2015-09-06 03:24:30 +00:00
|
|
|
MmMdInitialize (
|
|
|
|
_In_ ULONG Phase,
|
|
|
|
_In_ PBL_LIBRARY_PARAMETERS LibraryParameters
|
|
|
|
);
|
|
|
|
|
2015-09-06 04:53:49 +00:00
|
|
|
NTSTATUS
|
|
|
|
MmFwGetMemoryMap (
|
|
|
|
_Out_ PBL_MEMORY_DESCRIPTOR_LIST MemoryMap,
|
|
|
|
_In_ ULONG Flags
|
|
|
|
);
|
|
|
|
|
|
|
|
VOID
|
|
|
|
MmMdFreeList(
|
|
|
|
_In_ PBL_MEMORY_DESCRIPTOR_LIST MdList
|
|
|
|
);
|
|
|
|
|
2015-09-06 06:15:08 +00:00
|
|
|
PBL_MEMORY_DESCRIPTOR
|
|
|
|
MmMdInitByteGranularDescriptor (
|
|
|
|
_In_ ULONG Flags,
|
|
|
|
_In_ BL_MEMORY_TYPE Type,
|
|
|
|
_In_ ULONGLONG BasePage,
|
|
|
|
_In_ ULONGLONG VirtualPage,
|
|
|
|
_In_ ULONGLONG PageCount
|
|
|
|
);
|
|
|
|
|
|
|
|
NTSTATUS
|
|
|
|
MmMdAddDescriptorToList (
|
|
|
|
_In_ PBL_MEMORY_DESCRIPTOR_LIST MdList,
|
|
|
|
_In_ PBL_MEMORY_DESCRIPTOR MemoryDescriptor,
|
|
|
|
_In_ ULONG Flags
|
|
|
|
);
|
|
|
|
|
2015-09-06 04:53:49 +00:00
|
|
|
extern ULONG MmDescriptorCallTreeCount;
|
2015-09-05 20:31:14 +00:00
|
|
|
extern ULONG BlpApplicationFlags;
|
|
|
|
extern BL_LIBRARY_PARAMETERS BlpLibraryParameters;
|
|
|
|
extern BL_TRANSLATION_TYPE MmTranslationType;
|
|
|
|
extern PBL_ARCH_CONTEXT CurrentExecutionContext;
|
2015-09-06 06:15:08 +00:00
|
|
|
extern PBL_DEVICE_DESCRIPTOR BlpBootDevice;
|
2015-09-05 20:31:14 +00:00
|
|
|
|
2015-09-04 14:16:56 +00:00
|
|
|
#endif
|