2 * COPYRIGHT: See COPYING.ARM in the top level directory
3 * PROJECT: ReactOS UEFI Boot Library
4 * FILE: boot/environ/include/bl.h
5 * PURPOSE: Main Boot Library Header
6 * PROGRAMMER: Alex Ionescu (alex.ionescu@reactos.org)
12 /* INCLUDES ******************************************************************/
27 #include <DevicePath.h>
28 #include <LoadedImage.h>
29 #include <GraphicsOutput.h>
33 EarlyPrint(_In_ PWCHAR Format
, ...);
35 /* DEFINES *******************************************************************/
37 #define BL_APPLICATION_FLAG_CONVERTED_FROM_EFI 0x01
39 #define BL_APP_ENTRY_SIGNATURE "BTAPENT"
41 #define BOOT_APPLICATION_SIGNATURE_1 'TOOB'
42 #define BOOT_APPLICATION_SIGNATURE_2 ' PPA'
44 #define BOOT_MEMORY_TRANSLATION_TYPE_PHYSICAL 0
45 #define BOOT_MEMORY_TRANSLATION_TYPE_VIRTUAL 1
47 #define BOOT_APPLICATION_VERSION 2
48 #define BL_MEMORY_DATA_VERSION 1
49 #define BL_RETURN_ARGUMENTS_VERSION 1
50 #define BL_FIRMWARE_DESCRIPTOR_VERSION 2
52 #define BL_APPLICATION_ENTRY_FLAG_NO_GUID 0x01
54 #define BL_CONTEXT_PAGING_ON 1
55 #define BL_CONTEXT_INTERRUPTS_ON 2
57 #define BL_MM_FLAG_USE_FIRMWARE_FOR_MEMORY_MAP_BUFFERS 0x01
58 #define BL_MM_FLAG_REQUEST_COALESCING 0x02
60 #define BL_MM_ADD_DESCRIPTOR_COALESCE_FLAG 0x01
61 #define BL_MM_ADD_DESCRIPTOR_TRUNCATE_FLAG 0x02
62 #define BL_MM_ADD_DESCRIPTOR_NEVER_COALESCE_FLAG 0x10
63 #define BL_MM_ADD_DESCRIPTOR_NEVER_TRUNCATE_FLAG 0x20
64 #define BL_MM_ADD_DESCRIPTOR_UPDATE_LIST_POINTER_FLAG 0x2000
66 #define BL_MM_REQUEST_DEFAULT_TYPE 1
67 #define BL_MM_REQUEST_TOP_DOWN_TYPE 2
69 #define BL_MM_REMOVE_VIRTUAL_REGION_FLAG 0x80000000
71 #define BL_LIBRARY_FLAG_NO_DISPLAY 0x01
72 #define BL_LIBRARY_FLAG_REINITIALIZE 0x02
73 #define BL_LIBRARY_FLAG_REINITIALIZE_ALL 0x04
74 #define BL_LIBRARY_FLAG_ZERO_HEAP_ALLOCATIONS_ON_FREE 0x10
75 #define BL_LIBRARY_FLAG_INITIALIZATION_COMPLETED 0x20
76 #define BL_LIBRARY_FLAG_NO_GRAPHICS_CONSOLE 0x800
78 #define BL_DISPLAY_GRAPHICS_FORCED_VIDEO_MODE_FLAG 0x01
79 #define BL_DISPLAY_GRAPHICS_FORCED_HIGH_RES_MODE_FLAG 0x02
81 #define BL_FS_REGISTER_AT_HEAD_FLAG 1
83 #define BL_MEMORY_CLASS_SHIFT 28
85 /* ENUMERATIONS **************************************************************/
87 typedef enum _BL_COLOR
105 } BL_COLOR
, *PBL_COLOR
;
107 typedef enum _BL_MEMORY_DESCRIPTOR_TYPE
111 } BL_MEMORY_DESCRIPTOR_TYPE
;
113 typedef enum _BL_TRANSLATION_TYPE
119 } BL_TRANSLATION_TYPE
;
121 typedef enum _BL_ARCH_MODE
130 typedef enum _BL_DEVICE_TYPE
139 // Local Device Types
141 typedef enum _BL_LOCAL_DEVICE_TYPE
146 } BL_LOCAL_DEVICE_TYPE
;
151 typedef enum _BL_PARTITION_TYPE
161 typedef enum _BL_PATH_TYPE
169 typedef enum _BL_MEMORY_CLASS
179 typedef enum _BL_MEMORY_TYPE
184 BlLoaderMemory
= 0xD0000002,
185 BlLoaderHeap
= 0xD0000005,
186 BlLoaderPageDirectory
= 0xD0000006,
187 BlLoaderReferencePage
= 0xD0000007,
188 BlLoaderRamDisk
= 0xD0000008,
189 BlLoaderData
= 0xD000000A,
190 BlLoaderSelfMap
= 0xD000000F,
193 // Application Memory
195 BlApplicationData
= 0xE0000004,
200 BlConventionalMemory
= 0xF0000001,
201 BlUnusableMemory
= 0xF0000002,
202 BlReservedMemory
= 0xF0000003,
203 BlEfiBootMemory
= 0xF0000004,
204 BlEfiRuntimeMemory
= 0xF0000006,
205 BlAcpiReclaimMemory
= 0xF0000008,
206 BlAcpiNvsMemory
= 0xF0000009,
207 BlDeviceIoMemory
= 0xF000000A,
208 BlDevicePortMemory
= 0xF000000B,
209 BlPalMemory
= 0xF000000C,
212 typedef enum _BL_MEMORY_ATTR
215 // Memory Caching Attributes
217 BlMemoryUncached
= 0x00000001,
218 BlMemoryWriteCombined
= 0x00000002,
219 BlMemoryWriteThrough
= 0x00000004,
220 BlMemoryWriteBack
= 0x00000008,
221 BlMemoryUncachedExported
= 0x00000010,
222 BlMemoryValidCacheAttributes
= BlMemoryUncached
| BlMemoryWriteCombined
| BlMemoryWriteThrough
| BlMemoryWriteBack
| BlMemoryUncachedExported
,
223 BlMemoryValidCacheAttributeMask
= 0x000000FF,
226 // Memory Protection Attributes
228 BlMemoryWriteProtected
= 0x00000100,
229 BlMemoryReadProtected
= 0x00000200,
230 BlMemoryExecuteProtected
= 0x00000400,
231 BlMemoryValidProtectionAttributes
= BlMemoryWriteProtected
| BlMemoryReadProtected
| BlMemoryExecuteProtected
,
232 BlMemoryValidProtectionAttributeMask
= 0x0000FF00,
235 // Memory Allocation Attributes
237 BlMemoryNonFixed
= 0x00020000,
238 BlMemoryFixed
= 0x00040000,
239 BlMemoryValidAllocationAttributes
= BlMemoryNonFixed
| BlMemoryFixed
,
240 BlMemoryValidAllocationAttributeMask
= 0x00FF0000,
243 // Memory Type Attributes
245 BlMemoryRuntime
= 0x01000000,
246 BlMemoryCoalesced
= 0x02000000,
247 BlMemoryUpdate
= 0x04000000,
248 BlMemoryNonFirmware
= 0x08000000,
249 BlMemorySpecial
= 0x20000000,
250 BlMemoryFirmware
= 0x80000000,
251 BlMemoryValidTypeAttributes
= BlMemoryRuntime
| BlMemoryCoalesced
| BlMemoryUpdate
| BlMemoryNonFirmware
| BlMemorySpecial
| BlMemoryFirmware
,
252 BlMemoryValidTypeAttributeMask
= 0xFF000000,
255 /* CALLBACKS *****************************************************************/
259 (*PBL_FS_INIT_CALLBACK
) (
265 (*PBL_FS_DESTROY_CALLBACK
) (
271 (*PBL_FS_MOUNT_CALLBACK
) (
277 (*PBL_FS_PURGE_CALLBACK
) (
283 (*PBL_FILE_DESTROY_CALLBACK
) (
287 struct _BL_TEXT_CONSOLE
;
288 struct _BL_DISPLAY_STATE
;
291 (*PCONSOLE_DESTRUCT
) (
292 _In_
struct _BL_TEXT_CONSOLE
* Console
297 (*PCONSOLE_REINITIALIZE
) (
298 _In_
struct _BL_TEXT_CONSOLE
* Console
303 (*PCONSOLE_GET_TEXT_STATE
) (
304 _In_
struct _BL_TEXT_CONSOLE
* Console
,
305 _Out_
struct _BL_DISPLAY_STATE
* TextState
310 (*PCONSOLE_SET_TEXT_STATE
) (
311 _In_
struct _BL_TEXT_CONSOLE
* Console
,
313 _In_
struct _BL_DISPLAY_STATE
* TextState
318 (*PCONSOLE_GET_TEXT_RESOLUTION
) (
319 _In_
struct _BL_TEXT_CONSOLE
* Console
,
320 _Out_ PULONG TextResolution
325 (*PCONSOLE_SET_TEXT_RESOLUTION
) (
326 _In_
struct _BL_TEXT_CONSOLE
* Console
,
327 _In_ ULONG NewTextResolution
,
328 _Out_ PULONG OldTextResolution
333 (*PCONSOLE_CLEAR_TEXT
) (
334 _In_
struct _BL_TEXT_CONSOLE
* Console
,
340 (*PCONSOLE_WRITE_TEXT
) (
341 _In_
struct _BL_TEXT_CONSOLE
* Console
,
346 /* DATA STRUCTURES ***********************************************************/
348 typedef struct _BL_LIBRARY_PARAMETERS
351 ULONG TranslationType
;
352 ULONG MinimumAllocationCount
;
353 ULONG MinimumHeapSize
;
354 ULONG HeapAllocationAttributes
;
355 PWCHAR ApplicationBaseDirectory
;
356 ULONG DescriptorCount
;
357 PWCHAR FontBaseDirectory
;
358 } BL_LIBRARY_PARAMETERS
, *PBL_LIBRARY_PARAMETERS
;
360 /* This should eventually go into a more public header */
361 typedef struct _BOOT_APPLICATION_PARAMETER_BLOCK
363 /* This header tells the library what image we're dealing with */
368 ULONG MemoryTranslationType
;
370 /* Where is the image located */
374 /* Offset to BL_MEMORY_DATA */
375 ULONG MemoryDataOffset
;
377 /* Offset to BL_APPLICATION_ENTRY */
378 ULONG AppEntryOffset
;
380 /* Offset to BL_DEVICE_DESCRPIPTOR */
381 ULONG BootDeviceOffset
;
383 /* Offset to BL_FIRMWARE_PARAMETERS */
384 ULONG FirmwareParametersOffset
;
386 /* Offset to BL_RETURN_ARGUMENTS */
387 ULONG ReturnArgumentsOffset
;
388 } BOOT_APPLICATION_PARAMETER_BLOCK
, *PBOOT_APPLICATION_PARAMETER_BLOCK
;
390 typedef struct _BL_MEMORY_DATA
394 ULONG DescriptorCount
;
395 ULONG DescriptorSize
;
396 ULONG DescriptorOffset
;
397 } BL_MEMORY_DATA
, *PBL_MEMORY_DATA
;
399 typedef struct _BL_FIRMWARE_DESCRIPTOR
403 EFI_HANDLE ImageHandle
;
404 EFI_SYSTEM_TABLE
*SystemTable
;
405 } BL_FIRMWARE_DESCRIPTOR
, *PBL_FIRMWARE_DESCRIPTOR
;
407 typedef struct _BL_RETURN_ARGUMENTS
410 ULONG ReturnArgumentData
[6];
411 } BL_RETURN_ARGUMENTS
, *PBL_RETURN_ARGUMENTS
;
413 typedef struct _BL_MEMORY_DESCRIPTOR
415 LIST_ENTRY ListEntry
;
421 ULONGLONG VirtualPage
;
425 ULONGLONG BaseAddress
;
426 ULONGLONG VirtualAddress
;
432 } BL_MEMORY_DESCRIPTOR
, *PBL_MEMORY_DESCRIPTOR
;
434 typedef struct _BL_BCD_OPTION
440 ULONG NextEntryOffset
;
442 } BL_BCD_OPTION
, *PBL_BCD_OPTION
;
444 typedef struct _BL_APPLICATION_ENTRY
450 BL_BCD_OPTION BcdData
;
451 } BL_APPLICATION_ENTRY
, *PBL_APPLICATION_ENTRY
;
453 typedef struct _BL_HARDDISK_DEVICE
460 ULONG PartitionSignature
;
465 GUID PartitionSignature
;
473 } BL_HARDDISK_DEVICE
;
475 typedef struct _BL_LOCAL_DEVICE
485 BL_HARDDISK_DEVICE HardDisk
;
489 PHYSICAL_ADDRESS ImageBase
;
490 LARGE_INTEGER ImageSize
;
496 typedef struct _BL_DEVICE_DESCRIPTOR
500 DEVICE_TYPE DeviceType
;
504 BL_LOCAL_DEVICE Local
;
515 ULONG PartitionNumber
;
523 BL_LOCAL_DEVICE Disk
;
526 } BL_DEVICE_DESCRIPTOR
, *PBL_DEVICE_DESCRIPTOR
;
528 typedef struct _BL_FILE_PATH_DESCRIPTOR
533 UCHAR Path
[ANYSIZE_ARRAY
];
534 } BL_FILE_PATH_DESCRIPTOR
, *PBL_FILE_PATH_DESCRIPTOR
;
536 typedef struct _BL_WINDOWS_LOAD_OPTIONS
542 WCHAR LoadOptions
[ANYSIZE_ARRAY
];
543 } BL_WINDOWS_LOAD_OPTIONS
, *PBL_WINDOWS_LOAD_OPTIONS
;
545 typedef struct _BL_ARCH_CONTEXT
548 BL_TRANSLATION_TYPE TranslationType
;
550 } BL_ARCH_CONTEXT
, *PBL_ARCH_CONTEXT
;
552 typedef struct _BL_MEMORY_DESCRIPTOR_LIST
558 } BL_MEMORY_DESCRIPTOR_LIST
, *PBL_MEMORY_DESCRIPTOR_LIST
;
560 typedef struct _BL_ADDRESS_RANGE
564 } BL_ADDRESS_RANGE
, *PBL_ADDRESS_RANGE
;
566 typedef struct _BL_FILE_ENTRY
569 PBL_FILE_DESTROY_CALLBACK DestroyCallback
;
570 } BL_FILE_ENTRY
, *PBL_FILE_ENTRY
;
572 typedef struct _BL_DEVICE_ENTRY
574 ULONG ReferenceCount
;
575 } BL_DEVICE_ENTRY
, *PBL_DEVICE_ENTRY
;
577 typedef struct _BL_FILE_SYSTEM_ENTRY
579 LIST_ENTRY ListEntry
;
580 PBL_FS_INIT_CALLBACK InitCallback
;
581 PBL_FS_DESTROY_CALLBACK DestroyCallback
;
582 PBL_FS_MOUNT_CALLBACK MountCallback
;
583 PBL_FS_PURGE_CALLBACK PurgeCallback
;
584 } BL_FILE_SYSTEM_ENTRY
, *PBL_FILE_SYSTEM_ENTRY
;
586 typedef struct _BL_FILE_SYSTEM_REGISTRATION_TABLE
588 PBL_FS_INIT_CALLBACK Init
;
589 PBL_FS_DESTROY_CALLBACK Destroy
;
590 PBL_FS_MOUNT_CALLBACK Mount
;
591 PBL_FS_PURGE_CALLBACK Purge
;
592 } BL_FILE_SYSTEM_REGISTRATION_TABLE
;
594 typedef struct _BL_DISPLAY_STATE
601 } BL_DISPLAY_STATE
, *PBL_DISPLAY_STATE
;
603 typedef struct _BL_DISPLAY_MODE
608 } BL_DISPLAY_MODE
, *PBL_DISPLAY_MODE
;
610 typedef struct _BL_TEXT_CONSOLE_VTABLE
612 PCONSOLE_DESTRUCT Destruct
;
613 PCONSOLE_REINITIALIZE Reinitialize
;
614 PCONSOLE_GET_TEXT_STATE GetTextState
;
615 PCONSOLE_SET_TEXT_STATE SetTextState
;
616 PCONSOLE_GET_TEXT_RESOLUTION GetTextResolution
;
617 PCONSOLE_SET_TEXT_RESOLUTION SetTextResolution
;
618 PCONSOLE_CLEAR_TEXT ClearText
;
619 PCONSOLE_WRITE_TEXT WriteText
;
620 } BL_TEXT_CONSOLE_VTABLE
, *PBL_TEXT_CONSOLE_VTABLE
;
622 typedef struct _BL_GRAPHICS_CONSOLE_VTABLE
624 BL_TEXT_CONSOLE_VTABLE Text
;
625 /// more for graphics ///
626 } BL_GRAPHICS_CONSOLE_VTABLE
, *PBL_GRAPHICS_CONSOLE_VTABLE
;
628 typedef struct _BL_TEXT_CONSOLE
630 PBL_TEXT_CONSOLE_VTABLE Callbacks
;
631 BL_DISPLAY_STATE State
;
632 BL_DISPLAY_MODE DisplayMode
;
634 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
* Protocol
;
636 EFI_SIMPLE_TEXT_OUTPUT_MODE OldMode
;
637 } BL_TEXT_CONSOLE
, *PBL_TEXT_CONSOLE
;
639 typedef enum _BL_GRAPHICS_CONSOLE_TYPE
643 } BL_GRAPHICS_CONSOLE_TYPE
;
645 typedef struct _BL_GRAPHICS_CONSOLE
647 BL_TEXT_CONSOLE TextConsole
;
648 BL_DISPLAY_MODE DisplayMode
;
652 BL_DISPLAY_MODE OldDisplayMode
;
655 BL_GRAPHICS_CONSOLE_TYPE Type
;
656 EFI_GRAPHICS_OUTPUT_PROTOCOL
* Protocol
;
658 ULONG FrameBufferSize
;
659 ULONG PixelsPerScanLine
;
662 } BL_GRAPHICS_CONSOLE
, *PBL_GRAPHICS_CONSOLE
;
664 typedef struct _BL_REMOTE_CONSOLE
666 BL_TEXT_CONSOLE TextConsole
;
667 } BL_REMOTE_CONSOLE
, *PBL_REMOTE_CONSOLE
;
669 /* INLINE ROUTINES ***********************************************************/
673 BlSetupDefaultParameters (
674 _Out_ PBL_LIBRARY_PARAMETERS LibraryParameters
677 BL_LIBRARY_PARAMETERS DefaultParameters
=
689 /* Copy the defaults */
690 RtlCopyMemory(LibraryParameters
, &DefaultParameters
, sizeof(*LibraryParameters
));
695 MmMdInitializeListHead (
696 _In_ PBL_MEMORY_DESCRIPTOR_LIST List
699 /* Initialize the list */
700 InitializeListHead(&List
->ListHead
);
701 List
->First
= &List
->ListHead
;
705 /* INITIALIZATION ROUTINES ***************************************************/
709 _In_ PBOOT_APPLICATION_PARAMETER_BLOCK BootAppParameters
,
710 _In_ PBL_LIBRARY_PARAMETERS LibraryParameters
721 _In_ PBL_FIRMWARE_DESCRIPTOR FirmwareParameters
726 _In_ PBL_MEMORY_DATA MemoryData
,
727 _In_ BL_TRANSLATION_TYPE TranslationType
,
728 _In_ PBL_LIBRARY_PARAMETERS LibraryParameters
738 _In_ PBL_MEMORY_DATA MemoryData
,
739 _In_ ULONG MinimumPages
745 _In_ PBL_MEMORY_DATA MemoryData
,
746 _In_ BL_TRANSLATION_TYPE TranslationType
,
747 _In_ BL_TRANSLATION_TYPE LibraryTranslationType
753 _In_ ULONG HeapAttributes
759 _In_ PBL_LIBRARY_PARAMETERS LibraryParameters
763 BlpDeviceInitialize (
783 BlpDisplayInitialize (
787 /* FIRMWARE ROUTINES *********************************************************/
793 _Inout_ EFI_PHYSICAL_ADDRESS
* Memory
803 _In_ SIMPLE_TEXT_OUTPUT_INTERFACE
*TextInterface
,
811 _In_ SIMPLE_TEXT_OUTPUT_INTERFACE
*TextInterface
,
816 EfiConOutReadCurrentMode (
817 _In_ SIMPLE_TEXT_OUTPUT_INTERFACE
*TextInterface
,
818 _Out_ EFI_SIMPLE_TEXT_OUTPUT_MODE
* Mode
822 EfiConOutSetAttribute (
823 _In_ SIMPLE_TEXT_OUTPUT_INTERFACE
*TextInterface
,
828 EfiConOutSetCursorPosition (
829 _In_ SIMPLE_TEXT_OUTPUT_INTERFACE
*TextInterface
,
835 EfiConOutEnableCursor (
836 _In_ SIMPLE_TEXT_OUTPUT_INTERFACE
*TextInterface
,
841 EfiLocateHandleBuffer (
842 _In_ EFI_LOCATE_SEARCH_TYPE SearchType
,
843 _In_ EFI_GUID
*Protocol
,
844 _Inout_ PULONG HandleCount
,
845 _Inout_ EFI_HANDLE
** Buffer
850 _In_ EFI_HANDLE Handle
,
851 _In_ EFI_GUID
*Protocol
,
852 _Out_ PVOID
* Interface
857 _In_ EFI_HANDLE Handle
,
858 _In_ EFI_GUID
*Protocol
862 EfiGopGetCurrentMode (
863 _In_ EFI_GRAPHICS_OUTPUT_PROTOCOL
*GopInterface
,
865 _Out_ EFI_GRAPHICS_OUTPUT_MODE_INFORMATION
*Information
870 _In_ EFI_GRAPHICS_OUTPUT_PROTOCOL
*GopInterface
,
875 EfiGopGetFrameBuffer (
876 _In_ EFI_GRAPHICS_OUTPUT_PROTOCOL
*GopInterface
,
877 _Out_ PHYSICAL_ADDRESS
* FrameBuffer
,
878 _Out_ UINTN
*FrameBufferSize
881 /* PLATFORM TIMER ROUTINES ***************************************************/
884 BlpTimeCalibratePerformanceCounter (
888 /* UTILITY ROUTINES **********************************************************/
897 _In_ EFI_STATUS EfiStatus
905 /* BCD ROUTINES **************************************************************/
908 BlGetBootOptionSize (
909 _In_ PBL_BCD_OPTION BcdOption
912 /* CONTEXT ROUTINES **********************************************************/
915 BlpArchSwitchContext (
916 _In_ BL_ARCH_MODE NewMode
919 /* MEMORY DESCRIPTOR ROUTINES ************************************************/
923 _In_ PBL_MEMORY_DESCRIPTOR_LIST MdList
926 PBL_MEMORY_DESCRIPTOR
927 MmMdInitByteGranularDescriptor (
929 _In_ BL_MEMORY_TYPE Type
,
930 _In_ ULONGLONG BasePage
,
931 _In_ ULONGLONG VirtualPage
,
932 _In_ ULONGLONG PageCount
936 MmMdFreeGlobalDescriptors (
941 MmMdAddDescriptorToList (
942 _In_ PBL_MEMORY_DESCRIPTOR_LIST MdList
,
943 _In_ PBL_MEMORY_DESCRIPTOR MemoryDescriptor
,
948 MmMdRemoveDescriptorFromList (
949 _In_ PBL_MEMORY_DESCRIPTOR_LIST MdList
,
950 _In_ PBL_MEMORY_DESCRIPTOR Entry
954 MmMdFindSatisfyingRegion (
955 _In_ PBL_MEMORY_DESCRIPTOR Descriptor
,
956 _Out_ PBL_MEMORY_DESCRIPTOR NewDescriptor
,
957 _In_ ULONGLONG Pages
,
958 _In_ PBL_ADDRESS_RANGE BaseRange
,
959 _In_ PBL_ADDRESS_RANGE VirtualRange
,
960 _In_ BOOLEAN TopDown
,
961 _In_ BL_MEMORY_TYPE MemoryType
,
967 MmMdRemoveRegionFromMdlEx (
968 __in PBL_MEMORY_DESCRIPTOR_LIST MdList
,
970 __in ULONGLONG BasePage
,
971 __in ULONGLONG PageCount
,
972 __in PBL_MEMORY_DESCRIPTOR_LIST NewMdList
977 _In_ PBL_MEMORY_DESCRIPTOR MemoryDescriptor
980 /* PAGE ALLOCATOR ROUTINES ***************************************************/
983 MmPapAllocatePagesInRange (
984 _Inout_ PULONG PhysicalAddress
,
985 _In_ BL_MEMORY_TYPE MemoryType
,
986 _In_ ULONGLONG Pages
,
987 _In_ ULONG Attributes
,
988 _In_ ULONG Alignment
,
989 _In_opt_ PBL_ADDRESS_RANGE Range
,
995 _Out_ PBL_MEMORY_DESCRIPTOR_LIST MemoryMap
,
999 /* VIRTUAL MEMORY ROUTINES ***************************************************/
1002 BlMmMapPhysicalAddressEx (
1003 _In_ PVOID
* VirtualAddress
,
1004 _In_ ULONG Attributes
,
1005 _In_ ULONGLONG Size
,
1006 _In_ PHYSICAL_ADDRESS PhysicalAddress
1009 /* HEAP ALLOCATOR ROUTINES ***************************************************/
1021 /* DISPLAY ROUTINES **********************************************************/
1024 BlDisplayGetTextCellResolution (
1025 _Out_ PULONG TextWidth
,
1026 _Out_ PULONG TextHeight
1029 /* TExT CONSOLE ROUTINES *****************************************************/
1032 ConsoleTextLocalDestruct (
1033 _In_
struct _BL_TEXT_CONSOLE
* Console
1037 ConsoleTextLocalReinitialize (
1038 _In_
struct _BL_TEXT_CONSOLE
* Console
1042 ConsoleTextBaseGetTextState (
1043 _In_
struct _BL_TEXT_CONSOLE
* Console
,
1044 _Out_ PBL_DISPLAY_STATE TextState
1048 ConsoleTextLocalSetTextState (
1049 _In_
struct _BL_TEXT_CONSOLE
* Console
,
1051 _In_ PBL_DISPLAY_STATE TextState
1055 ConsoleTextBaseGetTextResolution (
1056 _In_
struct _BL_TEXT_CONSOLE
* Console
,
1057 _Out_ PULONG TextResolution
1061 ConsoleTextLocalSetTextResolution (
1062 _In_
struct _BL_TEXT_CONSOLE
* Console
,
1063 _In_ ULONG NewTextResolution
,
1064 _Out_ PULONG OldTextResolution
1068 ConsoleTextLocalClearText (
1069 _In_
struct _BL_TEXT_CONSOLE
* Console
,
1070 _In_ ULONG Attribute
1074 ConsoleTextLocalWriteText (
1075 _In_
struct _BL_TEXT_CONSOLE
* Console
,
1077 _In_ ULONG Attribute
1081 ConsoleTextLocalConstruct (
1082 _In_ PBL_TEXT_CONSOLE TextConsole
,
1083 _In_ BOOLEAN Activate
1087 ConsolepFindResolution (
1088 _In_ PBL_DISPLAY_MODE Mode
,
1089 _In_ PBL_DISPLAY_MODE List
,
1094 ConsoleFirmwareTextClose (
1095 _In_ PBL_TEXT_CONSOLE TextConsole
1099 ConsoleFirmwareTextOpen (
1100 _In_ PBL_TEXT_CONSOLE TextConsole
1104 ConsoleFirmwareTextSetState (
1105 _In_ PBL_TEXT_CONSOLE TextConsole
,
1107 _In_ PBL_DISPLAY_STATE State
1111 ConsoleGraphicalConstruct (
1112 _In_ PBL_GRAPHICS_CONSOLE GraphicsConsole
1116 ConsoleCreateRemoteConsole (
1117 _In_ PBL_TEXT_CONSOLE
* TextConsole
1121 ConsoleEfiGraphicalOpenProtocol (
1122 _In_ PBL_GRAPHICS_CONSOLE GraphicsConsole
,
1123 _In_ BL_GRAPHICS_CONSOLE_TYPE Type
1127 ConsoleFirmwareGraphicalClose (
1128 _In_ PBL_GRAPHICS_CONSOLE GraphicsConsole
1132 ConsoleFirmwareGraphicalEnable (
1133 _In_ PBL_GRAPHICS_CONSOLE GraphicsConsole
1138 _In_ PBL_GRAPHICS_CONSOLE GraphicsConsole
1142 ConsoleEfiUgaClose (
1143 _In_ PBL_GRAPHICS_CONSOLE GraphicsConsole
1147 ConsoleEfiGopClose (
1148 _In_ PBL_GRAPHICS_CONSOLE GraphicsConsole
1153 _In_ PBL_GRAPHICS_CONSOLE GraphicsConsole
1157 ConsoleEfiGopEnable (
1158 _In_ PBL_GRAPHICS_CONSOLE GraphicsConsole
1162 ConsoleEfiUgaSetResolution (
1163 _In_ PBL_GRAPHICS_CONSOLE GraphicsConsole
,
1164 _In_ PBL_DISPLAY_MODE DisplayMode
,
1165 _In_ ULONG DisplayModeCount
1168 extern ULONG MmDescriptorCallTreeCount
;
1169 extern ULONG BlpApplicationFlags
;
1170 extern BL_LIBRARY_PARAMETERS BlpLibraryParameters
;
1171 extern BL_TRANSLATION_TYPE MmTranslationType
;
1172 extern PBL_ARCH_CONTEXT CurrentExecutionContext
;
1173 extern PBL_DEVICE_DESCRIPTOR BlpBootDevice
;
1174 extern BL_APPLICATION_ENTRY BlpApplicationEntry
;
1175 extern SIMPLE_TEXT_OUTPUT_INTERFACE
*EfiConOut
;
1176 extern EFI_GUID EfiGraphicsOutputProtocol
;
1177 extern EFI_GUID EfiUgaDrawProtocol
;
1178 extern EFI_GUID EfiLoadedImageProtocol
;
1179 extern EFI_GUID EfiDevicePathProtocol
;
1180 extern EFI_GUID EfiSimpleTextInputExProtocol
;
1181 extern ULONG ConsoleGraphicalResolutionListFlags
;
1182 extern BL_DISPLAY_MODE ConsoleGraphicalResolutionList
[];
1183 extern BL_DISPLAY_MODE ConsoleTextResolutionList
[];
1184 extern ULONG ConsoleGraphicalResolutionListSize
;
1185 extern PVOID DspRemoteInputConsole
;