Migrate XTLDR to C++
All checks were successful
Builds / ExectOS (amd64, release) (push) Successful in 29s
Builds / ExectOS (amd64, debug) (push) Successful in 31s
Builds / ExectOS (i686, debug) (push) Successful in 31s
Builds / ExectOS (i686, release) (push) Successful in 29s

This commit is contained in:
2025-09-17 15:56:41 +02:00
parent 7117d76842
commit 86fd2b4eea
21 changed files with 195 additions and 188 deletions

View File

@@ -41,22 +41,22 @@
#define XTBL_TUI_MAX_DIALOG_WIDTH 100 #define XTBL_TUI_MAX_DIALOG_WIDTH 100
/* XTLDR Routine pointers */ /* XTLDR Routine pointers */
typedef LONG (*PBL_GET_MEMTYPE_ROUTINE)(IN EFI_MEMORY_TYPE EfiMemoryType); typedef LOADER_MEMORY_TYPE (*PBL_GET_MEMTYPE_ROUTINE)(IN EFI_MEMORY_TYPE EfiMemoryType);
/* Boot Loader protocol routine pointers */ /* Boot Loader protocol routine pointers */
typedef EFI_STATUS (*PBL_ALLOCATE_PAGES)(IN EFI_ALLOCATE_TYPE AllocationType, IN ULONGLONG Size, OUT PEFI_PHYSICAL_ADDRESS Memory); typedef EFI_STATUS (*PBL_ALLOCATE_PAGES)(IN EFI_ALLOCATE_TYPE AllocationType, IN ULONGLONG Size, OUT PEFI_PHYSICAL_ADDRESS Memory);
typedef EFI_STATUS (*PBL_ALLOCATE_POOL)(IN UINT_PTR Size, OUT PVOID *Memory); typedef EFI_STATUS (*PBL_ALLOCATE_POOL)(IN UINT_PTR Size, OUT PVOID *Memory);
typedef EFI_STATUS (*PBL_BOOTMENU_INITIALIZE_OS_LIST)(IN ULONG MaxNameLength, OUT PXTBL_BOOTMENU_ITEM *MenuEntries, OUT PULONG EntriesCount, OUT PULONG DefaultId); typedef EFI_STATUS (*PBL_BOOTMENU_INITIALIZE_OS_LIST)(IN ULONG MaxNameLength, OUT PXTBL_BOOTMENU_ITEM *MenuEntries, OUT PULONG EntriesCount, OUT PULONG DefaultId);
typedef BOOLEAN (*PBL_BOOTUTIL_GET_BOOLEAN_PARAMETER)(IN CONST PWCHAR Parameters, IN CONST PWCHAR Needle); typedef BOOLEAN (*PBL_BOOTUTIL_GET_BOOLEAN_PARAMETER)(IN PCWSTR Parameters, IN PCWSTR Needle);
typedef EFI_STATUS (*PBL_BUILD_PAGE_MAP)(IN PXTBL_PAGE_MAPPING PageMap, IN ULONG_PTR SelfMapAddress); typedef EFI_STATUS (*PBL_BUILD_PAGE_MAP)(IN PXTBL_PAGE_MAPPING PageMap, IN ULONG_PTR SelfMapAddress);
typedef EFI_STATUS (*PBL_CLOSE_VOLUME)(IN PEFI_HANDLE VolumeHandle); typedef EFI_STATUS (*PBL_CLOSE_VOLUME)(IN PEFI_HANDLE VolumeHandle);
typedef VOID (*PBL_CLEAR_CONSOLE_LINE)(IN ULONGLONG LineNo); typedef VOID (*PBL_CLEAR_CONSOLE_LINE)(IN ULONGLONG LineNo);
typedef EFI_STATUS (*PBL_CLOSE_XT_PROTOCOL)(IN PEFI_HANDLE Handle, IN PEFI_GUID ProtocolGuid); typedef EFI_STATUS (*PBL_CLOSE_XT_PROTOCOL)(IN PEFI_HANDLE Handle, IN PEFI_GUID ProtocolGuid);
typedef BOOLEAN (*PBL_CONFIG_GET_BOOLEAN_VALUE)(IN CONST PWCHAR ConfigName); typedef BOOLEAN (*PBL_CONFIG_GET_BOOLEAN_VALUE)(IN PCWSTR ConfigName);
typedef EFI_STATUS (*PBL_CONFIG_GET_BOOT_OPTION_VALUE)(IN PLIST_ENTRY Options, IN CONST PWCHAR OptionName, OUT PWCHAR *OptionValue); typedef EFI_STATUS (*PBL_CONFIG_GET_BOOT_OPTION_VALUE)(IN PLIST_ENTRY Options, IN PCWSTR OptionName, OUT PWCHAR *OptionValue);
typedef VOID (*PBL_CONFIG_GET_EDITABLE_OPTIONS)(OUT CONST PWCHAR **OptionsArray, OUT PULONG OptionsCount); typedef VOID (*PBL_CONFIG_GET_EDITABLE_OPTIONS)(OUT PCWSTR **OptionsArray, OUT PULONG OptionsCount);
typedef EFI_STATUS (*PBL_CONFIG_GET_VALUE)(IN CONST PWCHAR ConfigName, OUT PWCHAR *ConfigValue); typedef EFI_STATUS (*PBL_CONFIG_GET_VALUE)(IN PCWSTR ConfigName, OUT PWCHAR *ConfigValue);
typedef EFI_STATUS (*PBL_CONFIG_SET_BOOT_OPTION_VALUE)(IN PLIST_ENTRY Options, IN CONST PWCHAR OptionName, IN CONST PWCHAR OptionValue); typedef EFI_STATUS (*PBL_CONFIG_SET_BOOT_OPTION_VALUE)(IN PLIST_ENTRY Options, IN PCWSTR OptionName, IN PCWSTR OptionValue);
typedef VOID (*PBL_CONSOLE_CLEAR_SCREEN)(); typedef VOID (*PBL_CONSOLE_CLEAR_SCREEN)();
typedef VOID (*PBL_CONSOLE_DISABLE_CURSOR)(); typedef VOID (*PBL_CONSOLE_DISABLE_CURSOR)();
typedef VOID (*PBL_CONSOLE_ENABLE_CURSOR)(); typedef VOID (*PBL_CONSOLE_ENABLE_CURSOR)();
@@ -71,11 +71,11 @@ typedef VOID (XTAPI *PBL_COPY_MEMORY)(OUT PVOID Destination, IN PCVOID Source, I
typedef VOID (*PBL_DEBUG_PRINT)(IN PCWSTR Format, IN ...); typedef VOID (*PBL_DEBUG_PRINT)(IN PCWSTR Format, IN ...);
typedef EFI_STATUS (*PBL_ENTER_FIRMWARE_SETUP)(); typedef EFI_STATUS (*PBL_ENTER_FIRMWARE_SETUP)();
typedef EFI_STATUS (*PBL_EXIT_BOOT_SERVICES)(); typedef EFI_STATUS (*PBL_EXIT_BOOT_SERVICES)();
typedef EFI_STATUS (*PBL_FIND_BOOT_PROTOCOL)(IN PWCHAR SystemType, OUT PEFI_GUID BootProtocolGuid); typedef EFI_STATUS (*PBL_FIND_BOOT_PROTOCOL)(IN PCWSTR SystemType, OUT PEFI_GUID BootProtocolGuid);
typedef EFI_STATUS (*PBL_FREE_PAGES)(IN ULONGLONG Size, IN EFI_PHYSICAL_ADDRESS Memory); typedef EFI_STATUS (*PBL_FREE_PAGES)(IN ULONGLONG Size, IN EFI_PHYSICAL_ADDRESS Memory);
typedef EFI_STATUS (*PBL_FREE_POOL)(IN PVOID Memory); typedef EFI_STATUS (*PBL_FREE_POOL)(IN PVOID Memory);
typedef EFI_STATUS (*PBL_GET_CONFIGURATION_TABLE)(IN PEFI_GUID TableGuid, OUT PVOID *Table); typedef EFI_STATUS (*PBL_GET_CONFIGURATION_TABLE)(IN PEFI_GUID TableGuid, OUT PVOID *Table);
typedef EFI_STATUS (*PBL_GET_EFI_VARIABLE)(IN PEFI_GUID Vendor, IN PWCHAR VariableName, OUT PVOID *VariableValue); typedef EFI_STATUS (*PBL_GET_EFI_VARIABLE)(IN PEFI_GUID Vendor, IN PCWSTR VariableName, OUT PVOID *VariableValue);
typedef VOID (*PBL_GET_MAPPINGS_COUNT)(IN PXTBL_PAGE_MAPPING PageMap, OUT PULONG NumberOfMappings); typedef VOID (*PBL_GET_MAPPINGS_COUNT)(IN PXTBL_PAGE_MAPPING PageMap, OUT PULONG NumberOfMappings);
typedef EFI_STATUS (*PBL_GET_MEMORY_MAP)(OUT PEFI_MEMORY_MAP MemoryMap); typedef EFI_STATUS (*PBL_GET_MEMORY_MAP)(OUT PEFI_MEMORY_MAP MemoryMap);
typedef PLIST_ENTRY (*PBL_GET_MODULES_LIST)(); typedef PLIST_ENTRY (*PBL_GET_MODULES_LIST)();
@@ -84,7 +84,7 @@ typedef INT_PTR (*PBL_GET_SECURE_BOOT_STATUS)();
typedef PVOID (*PBL_GET_VIRTUAL_ADDRESS)(IN PXTBL_PAGE_MAPPING PageMap, IN PVOID PhysicalAddress); typedef PVOID (*PBL_GET_VIRTUAL_ADDRESS)(IN PXTBL_PAGE_MAPPING PageMap, IN PVOID PhysicalAddress);
typedef EFI_STATUS (*PBL_INITIALIZE_ENTROPY)(PULONGLONG RNGBuffer); typedef EFI_STATUS (*PBL_INITIALIZE_ENTROPY)(PULONGLONG RNGBuffer);
typedef VOID (*PBL_INITIALIZE_PAGE_MAP)(OUT PXTBL_PAGE_MAPPING PageMap, IN SHORT PageMapLevel, IN PAGE_SIZE PageSize); typedef VOID (*PBL_INITIALIZE_PAGE_MAP)(OUT PXTBL_PAGE_MAPPING PageMap, IN SHORT PageMapLevel, IN PAGE_SIZE PageSize);
typedef EFI_STATUS (*PBL_INSTALL_XT_PROTOCOL)(IN PVOID Interface, IN PEFI_GUID Guid); typedef EFI_STATUS (*PBL_INSTALL_XT_PROTOCOL)(IN PVOID Interface, IN PEFI_GUID Guid); // Note: BlInstallProtocol takes PEFI_GUID, not PEFI_GUID
typedef EFI_STATUS (*PBL_INVOKE_BOOT_PROTOCOL)(IN PWCHAR ShortName, IN PLIST_ENTRY OptionsList); typedef EFI_STATUS (*PBL_INVOKE_BOOT_PROTOCOL)(IN PWCHAR ShortName, IN PLIST_ENTRY OptionsList);
typedef EFI_STATUS (*PBL_LOCATE_PROTOCOL_HANDLES)(OUT PEFI_HANDLE *Handles, OUT PUINT_PTR Count, IN PEFI_GUID ProtocolGuid); typedef EFI_STATUS (*PBL_LOCATE_PROTOCOL_HANDLES)(OUT PEFI_HANDLE *Handles, OUT PUINT_PTR Count, IN PEFI_GUID ProtocolGuid);
typedef EFI_STATUS (*PBL_LOAD_EFI_IMAGE)(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, IN PVOID ImageData, IN SIZE_T ImageSize, OUT PEFI_HANDLE ImageHandle); typedef EFI_STATUS (*PBL_LOAD_EFI_IMAGE)(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, IN PVOID ImageData, IN SIZE_T ImageSize, OUT PEFI_HANDLE ImageHandle);
@@ -97,18 +97,18 @@ typedef EFI_STATUS (*PBL_OPEN_PROTOCOL_HANDLE)(IN EFI_HANDLE Handle, OUT PVOID *
typedef PVOID (*PBL_PHYSICAL_ADDRESS_TO_VIRTUAL)(IN PVOID PhysicalAddress, IN PVOID PhysicalBase, IN PVOID VirtualBase); typedef PVOID (*PBL_PHYSICAL_ADDRESS_TO_VIRTUAL)(IN PVOID PhysicalAddress, IN PVOID PhysicalBase, IN PVOID VirtualBase);
typedef EFI_STATUS (*PBL_PHYSICAL_LIST_TO_VIRTUAL)(IN PXTBL_PAGE_MAPPING PageMap, IN OUT PLIST_ENTRY ListHead, IN PVOID PhysicalBase, IN PVOID VirtualBase); typedef EFI_STATUS (*PBL_PHYSICAL_LIST_TO_VIRTUAL)(IN PXTBL_PAGE_MAPPING PageMap, IN OUT PLIST_ENTRY ListHead, 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 PCWSTR 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 PCWSTR SystemType, IN PEFI_GUID BootProtocolGuid);
typedef VOID (*PBL_REGISTER_XT_BOOT_MENU)(PVOID BootMenuRoutine); typedef VOID (*PBL_REGISTER_XT_BOOT_MENU)(PVOID BootMenuRoutine);
typedef EFI_STATUS (*PBL_SET_EFI_VARIABLE)(IN PEFI_GUID Vendor, IN PWCHAR VariableName, IN PVOID VariableValue, IN UINT_PTR Size); typedef EFI_STATUS (*PBL_SET_EFI_VARIABLE)(IN PEFI_GUID Vendor, IN PCWSTR VariableName, IN PVOID VariableValue, IN UINT_PTR Size);
typedef VOID (XTAPI *PBL_SET_MEMORY)(OUT PVOID Destination, IN UCHAR Byte, IN SIZE_T Length); typedef VOID (XTAPI *PBL_SET_MEMORY)(OUT PVOID Destination, IN UCHAR Byte, IN SIZE_T Length);
typedef VOID (*PBL_SLEEP_EXECUTION)(IN ULONG_PTR Milliseconds); typedef VOID (*PBL_SLEEP_EXECUTION)(IN ULONG_PTR Milliseconds);
typedef EFI_STATUS (*PBL_START_EFI_IMAGE)(IN EFI_HANDLE ImageHandle); typedef EFI_STATUS (*PBL_START_EFI_IMAGE)(IN EFI_HANDLE ImageHandle);
typedef VOID (*PBL_TUI_DISPLAY_ERROR_DIALOG)(IN PWCHAR Caption, IN PWCHAR Message); typedef VOID (*PBL_TUI_DISPLAY_ERROR_DIALOG)(IN PCWSTR Caption, IN PCWSTR Message);
typedef VOID (*PBL_TUI_DISPLAY_INFO_DIALOG)(IN PWCHAR Caption, IN PWCHAR Message); typedef VOID (*PBL_TUI_DISPLAY_INFO_DIALOG)(IN PCWSTR Caption, IN PCWSTR Message);
typedef VOID (*PBL_TUI_DISPLAY_INPUT_DIALOG)(IN PWCHAR Caption, IN PWCHAR Message, IN PWCHAR *InputFieldText); typedef VOID (*PBL_TUI_DISPLAY_INPUT_DIALOG)(IN PCWSTR Caption, IN PCWSTR Message, IN OUT PWCHAR *InputFieldText);
typedef XTBL_DIALOG_HANDLE (*PBL_TUI_DISPLAY_PROGRESS_DIALOG)(IN PWCHAR Caption, IN PWCHAR Message, IN UCHAR Percentage); typedef XTBL_DIALOG_HANDLE (*PBL_TUI_DISPLAY_PROGRESS_DIALOG)(IN PCWSTR Caption, IN PCWSTR Message, IN UCHAR Percentage);
typedef VOID (*PBL_TUI_UPDATE_PROGRESS_BAR)(IN PXTBL_DIALOG_HANDLE Handle, IN PWCHAR Message, IN UCHAR Percentage); typedef VOID (*PBL_TUI_UPDATE_PROGRESS_BAR)(IN PXTBL_DIALOG_HANDLE Handle, IN PCWSTR Message, IN UCHAR Percentage);
typedef EFI_STATUS (*PBL_WAIT_FOR_EFI_EVENT)(IN UINT_PTR NumberOfEvents, IN PEFI_EVENT Event, OUT PUINT_PTR Index); typedef EFI_STATUS (*PBL_WAIT_FOR_EFI_EVENT)(IN UINT_PTR NumberOfEvents, IN PEFI_EVENT Event, OUT PUINT_PTR Index);
typedef VOID (*PBL_XT_BOOT_MENU)(); typedef VOID (*PBL_XT_BOOT_MENU)();
typedef VOID (XTAPI *PBL_ZERO_MEMORY)(OUT PVOID Destination, IN SIZE_T Length); typedef VOID (XTAPI *PBL_ZERO_MEMORY)(OUT PVOID Destination, IN SIZE_T Length);
@@ -121,7 +121,7 @@ typedef EFI_STATUS (*PBL_ACPI_GET_RSDP_TABLE)(OUT PVOID *AcpiTable);
typedef EFI_STATUS (*PBL_ACPI_GET_SMBIOS_TABLE)(OUT PVOID *SmBiosTable); typedef EFI_STATUS (*PBL_ACPI_GET_SMBIOS_TABLE)(OUT PVOID *SmBiosTable);
typedef EFI_STATUS (*PBL_ACPI_GET_SMBIOS3_TABLE)(OUT PVOID *SmBiosTable); typedef EFI_STATUS (*PBL_ACPI_GET_SMBIOS3_TABLE)(OUT PVOID *SmBiosTable);
typedef EFI_STATUS (*PBL_ACPI_GET_XSDP_TABLE)(OUT PVOID *AcpiTable); typedef EFI_STATUS (*PBL_ACPI_GET_XSDP_TABLE)(OUT PVOID *AcpiTable);
typedef EFI_STATUS (*PBL_BOOTPROTO_BOOT_SYSTEM)(IN PXTBL_BOOT_PARAMETERS Parameters); typedef EFI_STATUS (*PBL_BOOTPROTO_BOOT_SYSTEM)(IN PXTBL_BOOT_PARAMETERS Parameters); // This is defined in xtos.c
typedef EFI_STATUS (*PBL_EXECIMAGE_GET_ENTRY_POINT)(IN PVOID ImagePointer, OUT PVOID *EntryPoint); typedef EFI_STATUS (*PBL_EXECIMAGE_GET_ENTRY_POINT)(IN PVOID ImagePointer, OUT PVOID *EntryPoint);
typedef EFI_STATUS (*PBL_EXECIMAGE_GET_FILE_SIZE)(IN PVOID ImagePointer, OUT PULONGLONG FileSize); typedef EFI_STATUS (*PBL_EXECIMAGE_GET_FILE_SIZE)(IN PVOID ImagePointer, OUT PULONGLONG FileSize);
typedef EFI_STATUS (*PBL_EXECIMAGE_GET_IMAGE_SIZE)(IN PVOID ImagePointer, OUT PUINT ImageSize); typedef EFI_STATUS (*PBL_EXECIMAGE_GET_IMAGE_SIZE)(IN PVOID ImagePointer, OUT PUINT ImageSize);

View File

@@ -775,14 +775,12 @@ typedef EFI_STATUS (*PEFI_IO_UNMAP)(IN PEFI_DEVICE_IO_PROTOCOL This, IN PVOID Ma
typedef EFI_STATUS (*PEFI_IO_ALLOCATE_BUFFER)(IN PEFI_DEVICE_IO_PROTOCOL This, IN EFI_ALLOCATE_TYPE Type, IN EFI_MEMORY_TYPE MemoryType, IN UINT_PTR Pages, IN OUT PEFI_PHYSICAL_ADDRESS HostAddress); typedef EFI_STATUS (*PEFI_IO_ALLOCATE_BUFFER)(IN PEFI_DEVICE_IO_PROTOCOL This, IN EFI_ALLOCATE_TYPE Type, IN EFI_MEMORY_TYPE MemoryType, IN UINT_PTR Pages, IN OUT PEFI_PHYSICAL_ADDRESS HostAddress);
typedef EFI_STATUS (*PEFI_IO_FLUSH)(IN PEFI_DEVICE_IO_PROTOCOL This); typedef EFI_STATUS (*PEFI_IO_FLUSH)(IN PEFI_DEVICE_IO_PROTOCOL This);
typedef EFI_STATUS (*PEFI_IO_FREE_BUFFER)(IN PEFI_DEVICE_IO_PROTOCOL This, IN UINT_PTR Pages, IN EFI_PHYSICAL_ADDRESS HostAddress); typedef EFI_STATUS (*PEFI_IO_FREE_BUFFER)(IN PEFI_DEVICE_IO_PROTOCOL This, IN UINT_PTR Pages, IN EFI_PHYSICAL_ADDRESS HostAddress);
typedef INT_PTR (*PEFI_UNICODE_STRICOLL)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN PUINT16 s1, IN PUINT16 s2); typedef INT_PTR (*PEFI_UNICODE_STRICOLL)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN PUINT16 s1, IN PUINT16 s2);
typedef UCHAR (*PEFI_UNICODE_METAIMATCH)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN PUINT16 String, IN PUINT16 Pattern); typedef UCHAR (*PEFI_UNICODE_METAIMATCH)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN PUINT16 String, IN PUINT16 Pattern);
typedef VOID (*PEFI_UNICODE_STRLWR)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN OUT PUINT16 Str); typedef VOID (*PEFI_UNICODE_STRLWR)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN OUT PUINT16 Str);
typedef VOID (*PEFI_UNICODE_STRUPR)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN OUT PUINT16 Str); typedef VOID (*PEFI_UNICODE_STRUPR)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN OUT PUINT16 Str);
typedef VOID (*PEFI_UNICODE_FATTOSTR)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN UINT_PTR FatSize, IN PUINT8 Fat, OUT PUINT16 String); typedef VOID (*PEFI_UNICODE_FATTOSTR)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN UINT_PTR FatSize, IN PUINT8 Fat, OUT PUINT16 String);
typedef UCHAR (*PEFI_UNICODE_STRTOFAT)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN PUINT16 String, IN UINT_PTR FatSize, OUT PUINT8 Fat); typedef UCHAR (*PEFI_UNICODE_STRTOFAT)(IN PEFI_UNICODE_COLLATION_PROTOCOL This, IN PUINT16 String, IN UINT_PTR FatSize, OUT PUINT8 Fat);
typedef EFI_STATUS (*PEFI_HASH_GET_HASH_SIZE)(IN CONST PEFI_HASH_PROTOCOL This, IN CONST PEFI_GUID HashAlgorithm, OUT PUINT_PTR HashSize); typedef EFI_STATUS (*PEFI_HASH_GET_HASH_SIZE)(IN CONST PEFI_HASH_PROTOCOL This, IN CONST PEFI_GUID HashAlgorithm, OUT PUINT_PTR HashSize);
typedef EFI_STATUS (*PEFI_HASH_HASH)(IN CONST PEFI_HASH_PROTOCOL This, IN CONST PEFI_GUID HashAlgorithm, IN UCHAR Extend, IN CONST PUINT8 Message, IN UINT64 MessageSize, IN OUT PEFI_HASH_OUTPUT Hash); typedef EFI_STATUS (*PEFI_HASH_HASH)(IN CONST PEFI_HASH_PROTOCOL This, IN CONST PEFI_GUID HashAlgorithm, IN UCHAR Extend, IN CONST PUINT8 Message, IN UINT64 MessageSize, IN OUT PEFI_HASH_OUTPUT Hash);
typedef EFI_STATUS (*PEFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE)(IN PEFI_GRAPHICS_OUTPUT_PROTOCOL This, IN UINT32 ModeNumber, OUT PUINT_PTR SizeOfInfo, OUT PEFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info); typedef EFI_STATUS (*PEFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE)(IN PEFI_GRAPHICS_OUTPUT_PROTOCOL This, IN UINT32 ModeNumber, OUT PUINT_PTR SizeOfInfo, OUT PEFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info);

View File

@@ -11,24 +11,24 @@ include_directories(
# Specify list of library source code files # Specify list of library source code files
list(APPEND LIBXTLDR_SOURCE list(APPEND LIBXTLDR_SOURCE
${XTLDR_SOURCE_DIR}/library/modproto.c) ${XTLDR_SOURCE_DIR}/library/modproto.cc)
# Specify list of source code files # Specify list of source code files
list(APPEND XTLDR_SOURCE list(APPEND XTLDR_SOURCE
${XTLDR_SOURCE_DIR}/arch/${ARCH}/memory.c ${XTLDR_SOURCE_DIR}/arch/${ARCH}/memory.cc
${XTLDR_SOURCE_DIR}/bootutil.c ${XTLDR_SOURCE_DIR}/bootutil.cc
${XTLDR_SOURCE_DIR}/config.c ${XTLDR_SOURCE_DIR}/config.cc
${XTLDR_SOURCE_DIR}/console.c ${XTLDR_SOURCE_DIR}/console.cc
${XTLDR_SOURCE_DIR}/debug.c ${XTLDR_SOURCE_DIR}/debug.cc
${XTLDR_SOURCE_DIR}/efiutils.c ${XTLDR_SOURCE_DIR}/efiutils.cc
${XTLDR_SOURCE_DIR}/globals.c ${XTLDR_SOURCE_DIR}/globals.cc
${XTLDR_SOURCE_DIR}/hardware.c ${XTLDR_SOURCE_DIR}/hardware.cc
${XTLDR_SOURCE_DIR}/memory.c ${XTLDR_SOURCE_DIR}/memory.cc
${XTLDR_SOURCE_DIR}/protocol.c ${XTLDR_SOURCE_DIR}/protocol.cc
${XTLDR_SOURCE_DIR}/shell.c ${XTLDR_SOURCE_DIR}/shell.cc
${XTLDR_SOURCE_DIR}/textui.c ${XTLDR_SOURCE_DIR}/textui.cc
${XTLDR_SOURCE_DIR}/volume.c ${XTLDR_SOURCE_DIR}/volume.cc
${XTLDR_SOURCE_DIR}/xtldr.c) ${XTLDR_SOURCE_DIR}/xtldr.cc)
# Link static XTLDR library # Link static XTLDR library
add_library(libxtldr ${LIBXTLDR_SOURCE}) add_library(libxtldr ${LIBXTLDR_SOURCE})

View File

@@ -1,7 +1,7 @@
/** /**
* PROJECT: ExectOS * PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory * COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtldr/arch/amd64/memory.c * FILE: xtldr/arch/amd64/memory.cc
* DESCRIPTION: XT Boot Loader AMD64 specific memory management * DESCRIPTION: XT Boot Loader AMD64 specific memory management
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org> * DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
* Aiken Harris <harraiken91@gmail.com> * Aiken Harris <harraiken91@gmail.com>

View File

@@ -1,7 +1,7 @@
/** /**
* PROJECT: ExectOS * PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory * COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtldr/arch/i686/memory.c * FILE: xtldr/arch/i686/memory.cc
* DESCRIPTION: XT Boot Loader i686 specific memory management * DESCRIPTION: XT Boot Loader i686 specific memory management
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org> * DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
* Aiken Harris <harraiken91@gmail.com> * Aiken Harris <harraiken91@gmail.com>

View File

@@ -1,7 +1,7 @@
/** /**
* PROJECT: ExectOS * PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory * COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtldr/bootutil.c * FILE: xtldr/bootutil.cc
* DESCRIPTION: Helper functions used by the boot protocol during system startup * DESCRIPTION: Helper functions used by the boot protocol during system startup
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com> * DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
*/ */
@@ -24,10 +24,10 @@
*/ */
XTCDECL XTCDECL
BOOLEAN BOOLEAN
BlGetBooleanParameter(IN CONST PWCHAR Parameters, BlGetBooleanParameter(IN PCWSTR Parameters,
IN CONST PWCHAR Needle) IN PCWSTR Needle)
{ {
PWCHAR CurrentPosition, TokenEnd, TokenStart; PCWSTR CurrentPosition, TokenEnd, TokenStart;
SIZE_T NeedleLength, TokenLength; SIZE_T NeedleLength, TokenLength;
/* Validate input data and ensure the option is not an empty string */ /* Validate input data and ensure the option is not an empty string */

View File

@@ -1,7 +1,7 @@
/** /**
* PROJECT: ExectOS * PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory * COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtldr/config.c * FILE: xtldr/config.cc
* DESCRIPTION: XT Boot Loader Configuration * DESCRIPTION: XT Boot Loader Configuration
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org> * DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
* Aiken Harris <harraiken91@gmail.com> * Aiken Harris <harraiken91@gmail.com>
@@ -29,7 +29,7 @@
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
BlGetBootOptionValue(IN PLIST_ENTRY Options, BlGetBootOptionValue(IN PLIST_ENTRY Options,
IN CONST PWCHAR OptionName, IN PCWSTR OptionName,
OUT PWCHAR *OptionValue) OUT PWCHAR *OptionValue)
{ {
PXTBL_CONFIG_ENTRY ConfigEntry; PXTBL_CONFIG_ENTRY ConfigEntry;
@@ -94,7 +94,7 @@ BlGetBootOptionValue(IN PLIST_ENTRY Options,
*/ */
XTCDECL XTCDECL
BOOLEAN BOOLEAN
BlGetConfigBooleanValue(IN CONST PWCHAR ConfigName) BlGetConfigBooleanValue(IN PCWSTR ConfigName)
{ {
PWCHAR Value; PWCHAR Value;
@@ -127,7 +127,7 @@ BlGetConfigBooleanValue(IN CONST PWCHAR ConfigName)
*/ */
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
BlGetConfigValue(IN CONST PWCHAR ConfigName, BlGetConfigValue(IN PCWSTR ConfigName,
OUT PWCHAR *ConfigValue) OUT PWCHAR *ConfigValue)
{ {
PXTBL_CONFIG_ENTRY ConfigEntry; PXTBL_CONFIG_ENTRY ConfigEntry;
@@ -194,7 +194,7 @@ BlGetConfigValue(IN CONST PWCHAR ConfigName,
*/ */
XTCDECL XTCDECL
VOID VOID
BlGetEditableOptions(OUT CONST PWCHAR **OptionsArray, BlGetEditableOptions(OUT PCWSTR **OptionsArray,
OUT PULONG OptionsCount) OUT PULONG OptionsCount)
{ {
ULONG Count = 0; ULONG Count = 0;
@@ -231,8 +231,8 @@ BlGetEditableOptions(OUT CONST PWCHAR **OptionsArray,
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
BlSetBootOptionValue(IN PLIST_ENTRY Options, BlSetBootOptionValue(IN PLIST_ENTRY Options,
IN CONST PWCHAR OptionName, IN PCWSTR OptionName,
IN CONST PWCHAR OptionValue) IN PCWSTR OptionValue)
{ {
PXTBL_CONFIG_ENTRY ConfigEntry; PXTBL_CONFIG_ENTRY ConfigEntry;
PLIST_ENTRY ConfigList; PLIST_ENTRY ConfigList;
@@ -344,8 +344,8 @@ BlSetBootOptionValue(IN PLIST_ENTRY Options,
*/ */
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
BlSetConfigValue(IN CONST PWCHAR ConfigName, BlSetConfigValue(IN PCWSTR ConfigName,
IN CONST PWCHAR ConfigValue) IN PCWSTR ConfigValue)
{ {
PXTBL_CONFIG_ENTRY ConfigEntry; PXTBL_CONFIG_ENTRY ConfigEntry;
PLIST_ENTRY ConfigListEntry; PLIST_ENTRY ConfigListEntry;
@@ -501,7 +501,7 @@ BlpParseCommandLine(VOID)
if(LoadedImage && LoadedImage->LoadOptions) if(LoadedImage && LoadedImage->LoadOptions)
{ {
/* Tokenize provided options */ /* Tokenize provided options */
Argument = RtlTokenizeWideString(LoadedImage->LoadOptions, L" ", &LastArg); Argument = RtlTokenizeWideString((PWCHAR)LoadedImage->LoadOptions, L" ", &LastArg);
/* Iterate over all arguments passed to boot loader */ /* Iterate over all arguments passed to boot loader */
while(Argument != NULLPTR) while(Argument != NULLPTR)
@@ -802,8 +802,8 @@ BlpParseConfigFile(IN CONST PCHAR RawConfig,
*/ */
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
BlpReadConfigFile(IN CONST PWCHAR ConfigDirectory, BlpReadConfigFile(IN PCWSTR ConfigDirectory,
IN CONST PWCHAR ConfigFile, IN PCWSTR ConfigFile,
OUT PCHAR *ConfigData) OUT PCHAR *ConfigData)
{ {
PEFI_FILE_HANDLE DirHandle, FsHandle; PEFI_FILE_HANDLE DirHandle, FsHandle;
@@ -820,14 +820,14 @@ BlpReadConfigFile(IN CONST PWCHAR ConfigDirectory,
} }
/* Open specified directory, containing the configuration file and close the FS immediately */ /* Open specified directory, containing the configuration file and close the FS immediately */
Status = FsHandle->Open(FsHandle, &DirHandle, ConfigDirectory, EFI_FILE_MODE_READ, 0); Status = FsHandle->Open(FsHandle, &DirHandle, (PWCHAR)ConfigDirectory, EFI_FILE_MODE_READ, 0);
FsHandle->Close(FsHandle); FsHandle->Close(FsHandle);
/* Check if directory opened successfully */ /* Check if directory opened successfully */
if(Status != STATUS_EFI_SUCCESS) if(Status != STATUS_EFI_SUCCESS)
{ {
/* Failed to open directory */ /* Failed to open directory */
BlCloseVolume(DiskHandle); BlCloseVolume(&DiskHandle);
return Status; return Status;
} }
@@ -836,7 +836,7 @@ BlpReadConfigFile(IN CONST PWCHAR ConfigDirectory,
DirHandle->Close(DirHandle); DirHandle->Close(DirHandle);
/* Close EFI volume */ /* Close EFI volume */
BlCloseVolume(DiskHandle); BlCloseVolume(&DiskHandle);
/* Return read status */ /* Return read status */
return Status; return Status;

View File

@@ -1,7 +1,7 @@
/** /**
* PROJECT: ExectOS * PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory * COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtldr/console.c * FILE: xtldr/console.cc
* DESCRIPTION: EFI console support * DESCRIPTION: EFI console support
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org> * DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/ */

View File

@@ -1,7 +1,7 @@
/** /**
* PROJECT: ExectOS * PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory * COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtldr/debug.c * FILE: xtldr/debug.cc
* DESCRIPTION: XT Boot Loader debugging support * DESCRIPTION: XT Boot Loader debugging support
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org> * DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/ */
@@ -257,7 +257,7 @@ BlpInitializeSerialPort(IN ULONG PortNumber,
} }
/* Initialize COM port */ /* Initialize COM port */
Status = HlInitializeComPort(&BlpStatus.SerialPort, UlongToPtr(PortAddress), BaudRate); Status = HlInitializeComPort(&BlpStatus.SerialPort, (PUCHAR)UlongToPtr(PortAddress), BaudRate);
/* Port not found under supplied address */ /* Port not found under supplied address */
if(Status == STATUS_NOT_FOUND && PortAddress) if(Status == STATUS_NOT_FOUND && PortAddress)
@@ -268,7 +268,7 @@ BlpInitializeSerialPort(IN ULONG PortNumber,
{ {
/* Try to reinitialize COM port */ /* Try to reinitialize COM port */
BlConsolePrint(L"Enabled I/O space access for all PCI(E) serial controllers found\n"); BlConsolePrint(L"Enabled I/O space access for all PCI(E) serial controllers found\n");
Status = HlInitializeComPort(&BlpStatus.SerialPort, UlongToPtr(PortAddress), BaudRate); Status = HlInitializeComPort(&BlpStatus.SerialPort, (PUCHAR)UlongToPtr(PortAddress), BaudRate);
} }
} }

View File

@@ -1,7 +1,7 @@
/** /**
* PROJECT: ExectOS * PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory * COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtldr/efiutils.c * FILE: xtldr/efiutils.cc
* DESCRIPTION: EFI related routines for XT Boot Loader * DESCRIPTION: EFI related routines for XT Boot Loader
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org> * DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/ */
@@ -21,7 +21,7 @@ EFI_STATUS
BlEnterFirmwareSetup() BlEnterFirmwareSetup()
{ {
EFI_GUID Guid = EFI_GLOBAL_VARIABLE_GUID; EFI_GUID Guid = EFI_GLOBAL_VARIABLE_GUID;
PULONGLONG SetupSupport; PULONGLONG SetupSupport = NULLPTR;
ULONGLONG Indications; ULONGLONG Indications;
EFI_STATUS Status; EFI_STATUS Status;
@@ -31,12 +31,18 @@ BlEnterFirmwareSetup()
{ {
/* Reboot into firmware setup is not supported */ /* Reboot into firmware setup is not supported */
BlDebugPrint(L"WARNING: Reboot into firmware setup interface not supported\n"); BlDebugPrint(L"WARNING: Reboot into firmware setup interface not supported\n");
if(SetupSupport)
{
BlFreeMemoryPool((PVOID)SetupSupport);
}
return STATUS_EFI_UNSUPPORTED; return STATUS_EFI_UNSUPPORTED;
} }
BlFreeMemoryPool((PVOID)SetupSupport);
/* Get the value of OsIndications variable */ /* Get the value of OsIndications variable */
Indications = 0; Indications = 0;
Status = BlGetEfiVariable(&Guid, L"OsIndications", (PVOID)&Indications); Status = BlGetEfiVariable(&Guid, L"OsIndications", (PVOID*)&Indications);
/* Enable FW setup on next boot */ /* Enable FW setup on next boot */
Indications |= EFI_OS_INDICATIONS_BOOT_TO_FW_UI; Indications |= EFI_OS_INDICATIONS_BOOT_TO_FW_UI;
@@ -167,12 +173,12 @@ BlGetConfigurationTable(IN PEFI_GUID TableGuid,
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
BlGetEfiVariable(IN PEFI_GUID Vendor, BlGetEfiVariable(IN PEFI_GUID Vendor,
IN PWCHAR VariableName, IN PCWSTR VariableName,
OUT PVOID *VariableValue) OUT PVOID *VariableValue)
{ {
EFI_STATUS Status; EFI_STATUS Status;
PVOID Buffer; PVOID Buffer;
UINT_PTR Size; UINT_PTR Size = 0;
/* Allocate a buffer for storing a variable's value */ /* Allocate a buffer for storing a variable's value */
Size = EFI_MAXIMUM_VARIABLE_SIZE * sizeof(PWCHAR); Size = EFI_MAXIMUM_VARIABLE_SIZE * sizeof(PWCHAR);
@@ -184,7 +190,7 @@ BlGetEfiVariable(IN PEFI_GUID Vendor,
} }
/* Attempt to get variable value */ /* Attempt to get variable value */
Status = EfiSystemTable->RuntimeServices->GetVariable(VariableName, Vendor, NULLPTR, &Size, Buffer); Status = EfiSystemTable->RuntimeServices->GetVariable((PWCHAR)VariableName, Vendor, NULLPTR, &Size, Buffer);
if(Status != STATUS_EFI_SUCCESS) if(Status != STATUS_EFI_SUCCESS)
{ {
/* Failed to get variable, probably not found such one */ /* Failed to get variable, probably not found such one */
@@ -234,16 +240,16 @@ BlGetSecureBootStatus()
{ {
EFI_GUID VarGuid = EFI_GLOBAL_VARIABLE_GUID; EFI_GUID VarGuid = EFI_GLOBAL_VARIABLE_GUID;
INT_PTR SecureBootStatus = 0; INT_PTR SecureBootStatus = 0;
UCHAR VarValue = 0; INT_PTR VarValue = 0;
UINT_PTR Size; UINT_PTR Size;
Size = sizeof(VarValue); Size = sizeof(INT_PTR);
if(EfiSystemTable->RuntimeServices->GetVariable(L"SecureBoot", &VarGuid, if(EfiSystemTable->RuntimeServices->GetVariable((PWCHAR)L"SecureBoot", &VarGuid,
NULLPTR, &Size, &VarValue) == STATUS_EFI_SUCCESS) NULLPTR, &Size, &VarValue) == STATUS_EFI_SUCCESS)
{ {
SecureBootStatus = (INT_PTR)VarValue; SecureBootStatus = VarValue;
Size = sizeof(INT_PTR);
if((EfiSystemTable->RuntimeServices->GetVariable(L"SetupMode", &VarGuid, if((EfiSystemTable->RuntimeServices->GetVariable((PWCHAR)L"SetupMode", &VarGuid,
NULLPTR, &Size, &VarValue) == STATUS_EFI_SUCCESS) && VarValue != 0) NULLPTR, &Size, &VarValue) == STATUS_EFI_SUCCESS) && VarValue != 0)
{ {
SecureBootStatus = -1; SecureBootStatus = -1;
@@ -365,7 +371,7 @@ BlRebootSystem()
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
BlSetEfiVariable(IN PEFI_GUID Vendor, BlSetEfiVariable(IN PEFI_GUID Vendor,
IN PWCHAR VariableName, IN PCWSTR VariableName,
IN PVOID VariableValue, IN PVOID VariableValue,
IN UINT_PTR Size) IN UINT_PTR Size)
{ {
@@ -373,7 +379,7 @@ BlSetEfiVariable(IN PEFI_GUID Vendor,
/* Set EFI variable */ /* Set EFI variable */
Attributes = EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS; Attributes = EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS;
return EfiSystemTable->RuntimeServices->SetVariable(VariableName, Vendor, Attributes, Size, VariableValue); return EfiSystemTable->RuntimeServices->SetVariable((PWCHAR)VariableName, Vendor, Attributes, Size, VariableValue);
} }
/** /**

View File

@@ -1,7 +1,7 @@
/** /**
* PROJECT: ExectOS * PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory * COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtldr/globals.c * FILE: xtldr/globals.cc
* DESCRIPTION: XT Boot Loader global variables * DESCRIPTION: XT Boot Loader global variables
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org> * DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/ */
@@ -22,7 +22,7 @@ LIST_ENTRY BlpConfig;
LIST_ENTRY BlpConfigSections; LIST_ENTRY BlpConfigSections;
/* List of user-editable boot options */ /* List of user-editable boot options */
PWCHAR BlpEditableConfigOptions[] = { PCWSTR BlpEditableConfigOptions[] = {
L"BootModules", L"SystemType", L"SystemPath", L"BootModules", L"SystemType", L"SystemPath",
L"KernelFile", L"InitrdFile", L"HalFile", L"KernelFile", L"InitrdFile", L"HalFile",
L"Parameters", NULLPTR L"Parameters", NULLPTR

View File

@@ -1,7 +1,7 @@
/** /**
* PROJECT: ExectOS * PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory * COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtldr/hardware.c * FILE: xtldr/hardware.cc
* DESCRIPTION: EFI hardware support for XT Boot Loader * DESCRIPTION: EFI hardware support for XT Boot Loader
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org> * DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/ */
@@ -85,7 +85,7 @@ BlpActivateSerialIOController()
/* Read configuration space */ /* Read configuration space */
Address = ((ULONGLONG)((((UINT_PTR) Bus) << 24) + (((UINT_PTR) Device) << 16) + Address = ((ULONGLONG)((((UINT_PTR) Bus) << 24) + (((UINT_PTR) Device) << 16) +
(((UINT_PTR) Function) << 8) + ((UINT_PTR) 0))); (((UINT_PTR) Function) << 8) + ((UINT_PTR) 0)));
PciDev->Pci.Read(PciDev, 2, Address, sizeof (PciHeader) / sizeof (UINT), &PciHeader); PciDev->Pci.Read(PciDev, EfiPciIoWidthUint32, Address, sizeof (PciHeader) / sizeof (UINT), &PciHeader);
/* Check if device exists */ /* Check if device exists */
if(PciHeader.VendorId == PCI_INVALID_VENDORID) if(PciHeader.VendorId == PCI_INVALID_VENDORID)
@@ -100,7 +100,7 @@ BlpActivateSerialIOController()
/* Enable I/O space access */ /* Enable I/O space access */
Address |= 0x4; Address |= 0x4;
Command = PCI_ENABLE_IO_SPACE; Command = PCI_ENABLE_IO_SPACE;
Status = PciDev->Pci.Write(PciDev, 1, Address, 1, &Command); Status = PciDev->Pci.Write(PciDev, EfiPciIoWidthUint16, Address, 1, &Command);
} }
} }
} }

View File

@@ -25,7 +25,7 @@ EXTERN LIST_ENTRY BlpConfig;
EXTERN LIST_ENTRY BlpConfigSections; EXTERN LIST_ENTRY BlpConfigSections;
/* List of user-editable boot options */ /* List of user-editable boot options */
EXTERN PWCHAR BlpEditableConfigOptions[]; EXTERN PCWSTR BlpEditableConfigOptions[];
/* XT Boot Loader protocol */ /* XT Boot Loader protocol */
EXTERN XTBL_LOADER_PROTOCOL BlpLdrProtocol; EXTERN XTBL_LOADER_PROTOCOL BlpLdrProtocol;

View File

@@ -77,24 +77,24 @@ BlDisplayEditMenu(IN PXTBL_BOOTMENU_ITEM MenuEntry);
XTCDECL XTCDECL
VOID VOID
BlDisplayErrorDialog(IN PWCHAR Caption, BlDisplayErrorDialog(IN PCWSTR Caption,
IN PWCHAR Message); IN PCWSTR Message);
XTCDECL XTCDECL
VOID VOID
BlDisplayInfoDialog(IN PWCHAR Caption, BlDisplayInfoDialog(IN PCWSTR Caption,
IN PWCHAR Message); IN PCWSTR Message);
XTCDECL XTCDECL
VOID VOID
BlDisplayInputDialog(IN PWCHAR Caption, BlDisplayInputDialog(IN PCWSTR Caption,
IN PWCHAR Message, IN PCWSTR Message,
IN OUT PWCHAR *InputFieldText); IN OUT PWCHAR *InputFieldText);
XTCDECL XTCDECL
XTBL_DIALOG_HANDLE XTBL_DIALOG_HANDLE
BlDisplayProgressDialog(IN PWCHAR Caption, BlDisplayProgressDialog(IN PCWSTR Caption,
IN PWCHAR Message, IN PCWSTR Message,
IN UCHAR Percentage); IN UCHAR Percentage);
XTCDECL XTCDECL
@@ -115,7 +115,7 @@ BlExitBootServices();
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
BlFindBootProtocol(IN PWCHAR SystemType, BlFindBootProtocol(IN PCWSTR SystemType,
OUT PEFI_GUID BootProtocolGuid); OUT PEFI_GUID BootProtocolGuid);
XTCDECL XTCDECL
@@ -135,22 +135,22 @@ BlFreeMemoryPool(IN PVOID Memory);
XTCDECL XTCDECL
BOOLEAN BOOLEAN
BlGetBooleanParameter(IN CONST PWCHAR Parameters, BlGetBooleanParameter(IN PCWSTR Parameters,
IN CONST PWCHAR Needle); IN PCWSTR Needle);
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
BlGetBootOptionValue(IN PLIST_ENTRY Options, BlGetBootOptionValue(IN PLIST_ENTRY Options,
IN CONST PWCHAR OptionName, IN PCWSTR OptionName,
OUT PWCHAR *OptionValue); OUT PWCHAR *OptionValue);
XTCDECL XTCDECL
BOOLEAN BOOLEAN
BlGetConfigBooleanValue(IN CONST PWCHAR ConfigName); BlGetConfigBooleanValue(IN PCWSTR ConfigName);
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
BlGetConfigValue(IN CONST PWCHAR ConfigName, BlGetConfigValue(IN PCWSTR ConfigName,
OUT PWCHAR *ConfigValue); OUT PWCHAR *ConfigValue);
XTCDECL XTCDECL
@@ -160,7 +160,7 @@ BlGetConfigurationTable(IN PEFI_GUID TableGuid,
XTCDECL XTCDECL
VOID VOID
BlGetEditableOptions(OUT CONST PWCHAR **OptionsArray, BlGetEditableOptions(OUT PCWSTR **OptionsArray,
OUT PULONG OptionsCount); OUT PULONG OptionsCount);
XTCDECL XTCDECL
@@ -171,7 +171,7 @@ BlGetEfiPath(IN PWCHAR SystemPath,
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
BlGetEfiVariable(IN PEFI_GUID Vendor, BlGetEfiVariable(IN PEFI_GUID Vendor,
IN PWCHAR VariableName, IN PCWSTR VariableName,
OUT PVOID *VariableValue); OUT PVOID *VariableValue);
XTCDECL XTCDECL
@@ -323,7 +323,7 @@ BlQueryConsoleMode(OUT PUINT_PTR ResX,
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
BlReadFile(IN PEFI_FILE_HANDLE DirHandle, BlReadFile(IN PEFI_FILE_HANDLE DirHandle,
IN CONST PWCHAR FileName, IN PCWSTR FileName,
OUT PVOID *FileData, OUT PVOID *FileData,
OUT PSIZE_T FileSize); OUT PSIZE_T FileSize);
@@ -341,7 +341,7 @@ BlRegisterBootMenu(PVOID BootMenuRoutine);
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
BlRegisterBootProtocol(IN PWCHAR SystemType, BlRegisterBootProtocol(IN PCWSTR SystemType,
IN PEFI_GUID BootProtocolGuid); IN PEFI_GUID BootProtocolGuid);
XTCDECL XTCDECL
@@ -351,13 +351,13 @@ BlResetConsoleInputBuffer();
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
BlSetBootOptionValue(IN PLIST_ENTRY Options, BlSetBootOptionValue(IN PLIST_ENTRY Options,
IN CONST PWCHAR OptionName, IN PCWSTR OptionName,
IN CONST PWCHAR OptionValue); IN PCWSTR OptionValue);
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
BlSetConfigValue(IN CONST PWCHAR ConfigName, BlSetConfigValue(IN PCWSTR ConfigName,
IN CONST PWCHAR ConfigValue); IN PCWSTR ConfigValue);
XTCDECL XTCDECL
VOID VOID
@@ -375,7 +375,7 @@ BlSetCursorPosition(IN ULONGLONG PosX,
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
BlSetEfiVariable(IN PEFI_GUID Vendor, BlSetEfiVariable(IN PEFI_GUID Vendor,
IN PWCHAR VariableName, IN PCWSTR VariableName,
IN PVOID VariableValue, IN PVOID VariableValue,
IN UINT_PTR Size); IN UINT_PTR Size);
@@ -403,7 +403,7 @@ BlStartXtLoader(IN EFI_HANDLE ImageHandle,
XTCDECL XTCDECL
VOID VOID
BlUpdateProgressBar(IN PXTBL_DIALOG_HANDLE Handle, BlUpdateProgressBar(IN PXTBL_DIALOG_HANDLE Handle,
IN PWCHAR Message, IN PCWSTR Message,
IN UCHAR Percentage); IN UCHAR Percentage);
XTCDECL XTCDECL
@@ -427,7 +427,7 @@ BlpDebugPutChar(IN WCHAR Character);
XTCDECL XTCDECL
VOID VOID
BlpDetermineDialogBoxSize(IN OUT PXTBL_DIALOG_HANDLE Handle, BlpDetermineDialogBoxSize(IN OUT PXTBL_DIALOG_HANDLE Handle,
IN PWCHAR Message); IN PCWSTR Message);
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
@@ -456,8 +456,8 @@ BlpDrawBootMenuEntry(IN PXTBL_DIALOG_HANDLE Handle,
XTCDECL XTCDECL
VOID VOID
BlpDrawDialogBox(IN OUT PXTBL_DIALOG_HANDLE Handle, BlpDrawDialogBox(IN OUT PXTBL_DIALOG_HANDLE Handle,
IN PWCHAR Caption, IN PCWSTR Caption,
IN PWCHAR Message); IN PCWSTR Message);
XTCDECL XTCDECL
VOID VOID
@@ -471,7 +471,7 @@ BlpDrawDialogInputField(IN PXTBL_DIALOG_HANDLE Handle,
XTCDECL XTCDECL
VOID VOID
BlpDrawDialogMessage(IN PXTBL_DIALOG_HANDLE Handle, BlpDrawDialogMessage(IN PXTBL_DIALOG_HANDLE Handle,
IN PWCHAR Message); IN PCWSTR Message);
XTCDECL XTCDECL
VOID VOID
@@ -485,8 +485,8 @@ BlpDrawEditMenu(OUT PXTBL_DIALOG_HANDLE Handle);
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
BlpDrawEditMenuEntry(IN PXTBL_DIALOG_HANDLE Handle, BlpDrawEditMenuEntry(IN PXTBL_DIALOG_HANDLE Handle,
IN PWCHAR OptionName, IN PCWSTR OptionName,
IN PWCHAR OptionValue, IN PCWSTR OptionValue,
IN UINT Position, IN UINT Position,
IN BOOLEAN Highlighted); IN BOOLEAN Highlighted);
@@ -506,7 +506,7 @@ BlpFindParentBlockDevice(IN PLIST_ENTRY BlockDevices,
OUT PEFI_BLOCK_DEVICE_DATA *ParentNode); OUT PEFI_BLOCK_DEVICE_DATA *ParentNode);
XTCDECL XTCDECL
LONG LOADER_MEMORY_TYPE
BlpGetLoaderMemoryType(IN EFI_MEMORY_TYPE EfiMemoryType); BlpGetLoaderMemoryType(IN EFI_MEMORY_TYPE EfiMemoryType);
XTCDECL XTCDECL
@@ -562,8 +562,8 @@ BlpPrintShellPrompt();
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
BlpReadConfigFile(IN CONST PWCHAR ConfigDirectory, BlpReadConfigFile(IN PCWSTR ConfigDirectory,
IN CONST PWCHAR ConfigFile, IN PCWSTR ConfigFile,
OUT PCHAR *ConfigData); OUT PCHAR *ConfigData);
XTCDECL XTCDECL

View File

@@ -1,7 +1,7 @@
/** /**
* PROJECT: ExectOS * PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory * COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtldr/library/modproto.c * FILE: xtldr/library/modproto.cc
* DESCRIPTION: XT Boot Loader protocol support for XTLDR modules * DESCRIPTION: XT Boot Loader protocol support for XTLDR modules
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org> * DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/ */
@@ -25,6 +25,7 @@
* *
* @since XT 1.0 * @since XT 1.0
*/ */
XTCLINK
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
BlGetXtLdrProtocol(IN PEFI_SYSTEM_TABLE SystemTable, BlGetXtLdrProtocol(IN PEFI_SYSTEM_TABLE SystemTable,

View File

@@ -1,7 +1,7 @@
/** /**
* PROJECT: ExectOS * PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory * COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtldr/memory.c * FILE: xtldr/memory.cc
* DESCRIPTION: XT Boot Loader memory management * DESCRIPTION: XT Boot Loader memory management
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org> * DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/ */
@@ -209,11 +209,11 @@ BlGetVirtualAddress(IN PXTBL_PAGE_MAPPING PageMap,
if(Mapping->VirtualAddress) if(Mapping->VirtualAddress)
{ {
/* Check if provided physical address is in range of this mapping */ /* Check if provided physical address is in range of this mapping */
if((PhysicalAddress >= Mapping->PhysicalAddress) && if(((UINT_PTR)PhysicalAddress >= (UINT_PTR)Mapping->PhysicalAddress) &&
(PhysicalAddress < Mapping->PhysicalAddress + (Mapping->NumberOfPages * EFI_PAGE_SIZE))) ((UINT_PTR)PhysicalAddress < ((UINT_PTR)Mapping->PhysicalAddress + (Mapping->NumberOfPages * EFI_PAGE_SIZE))))
{ {
/* Calculate virtual address based on the mapping and return it */ /* Calculate virtual address based on the mapping and return it */
return PhysicalAddress - Mapping->PhysicalAddress + Mapping->VirtualAddress; return (PVOID)(((UINT_PTR)PhysicalAddress - (UINT_PTR)Mapping->PhysicalAddress) + (UINT_PTR)Mapping->VirtualAddress);
} }
} }
@@ -287,7 +287,7 @@ BlMapEfiMemory(IN OUT PXTBL_PAGE_MAPPING PageMap,
SIZE_T Index; SIZE_T Index;
/* Set virtual address as specified in argument */ /* Set virtual address as specified in argument */
VirtualAddress = *MemoryMapAddress; VirtualAddress = (PUCHAR)*MemoryMapAddress;
/* Check if custom memory type routine is specified */ /* Check if custom memory type routine is specified */
if(GetMemoryTypeRoutine == NULLPTR) if(GetMemoryTypeRoutine == NULLPTR)
@@ -346,7 +346,7 @@ BlMapEfiMemory(IN OUT PXTBL_PAGE_MAPPING PageMap,
} }
/* Convert EFI memory type into XTLDR memory type */ /* Convert EFI memory type into XTLDR memory type */
MemoryType = GetMemoryTypeRoutine(Descriptor->Type); MemoryType = GetMemoryTypeRoutine((EFI_MEMORY_TYPE)Descriptor->Type);
/* Do memory mappings depending on memory type */ /* Do memory mappings depending on memory type */
if(MemoryType == LoaderFirmwareTemporary) if(MemoryType == LoaderFirmwareTemporary)
@@ -663,12 +663,12 @@ BlPhysicalListToVirtual(IN PXTBL_PAGE_MAPPING PageMap,
if(ListEntry->Blink == ListHead) if(ListEntry->Blink == ListHead)
{ {
/* Find virtual address of list head */ /* Find virtual address of list head */
ListEntry->Blink = BlGetVirtualAddress(PageMap, ListEntry->Blink); ListEntry->Blink = (PLIST_ENTRY)BlGetVirtualAddress(PageMap, ListEntry->Blink);
} }
else else
{ {
/* Convert list entry */ /* Convert list entry */
ListEntry->Blink = BlPhysicalAddressToVirtual(ListEntry->Blink, (PVOID)PhysicalBase, VirtualBase); ListEntry->Blink = (PLIST_ENTRY)BlPhysicalAddressToVirtual(ListEntry->Blink, (PVOID)PhysicalBase, VirtualBase);
} }
if(ListEntry->Flink == ListHead) if(ListEntry->Flink == ListHead)
{ {
@@ -678,7 +678,7 @@ BlPhysicalListToVirtual(IN PXTBL_PAGE_MAPPING PageMap,
else else
{ {
/* Convert list entry */ /* Convert list entry */
ListEntry->Flink = BlPhysicalAddressToVirtual(ListEntry->Flink, (PVOID)PhysicalBase, VirtualBase); ListEntry->Flink = (PLIST_ENTRY)BlPhysicalAddressToVirtual(ListEntry->Flink, (PVOID)PhysicalBase, VirtualBase);
} }
/* Get to the next element*/ /* Get to the next element*/
@@ -686,8 +686,8 @@ BlPhysicalListToVirtual(IN PXTBL_PAGE_MAPPING PageMap,
} }
/* Convert list head */ /* Convert list head */
ListHead->Blink = BlPhysicalAddressToVirtual(ListHead->Blink, (PVOID)PhysicalBase, VirtualBase); ListHead->Blink = (PLIST_ENTRY)BlPhysicalAddressToVirtual(ListHead->Blink, (PVOID)PhysicalBase, VirtualBase);
ListHead->Flink = BlPhysicalAddressToVirtual(ListHead->Flink, (PVOID)PhysicalBase, VirtualBase); ListHead->Flink = (PLIST_ENTRY)BlPhysicalAddressToVirtual(ListHead->Flink, (PVOID)PhysicalBase, VirtualBase);
/* Return success */ /* Return success */
return STATUS_EFI_SUCCESS; return STATUS_EFI_SUCCESS;
@@ -704,7 +704,7 @@ BlPhysicalListToVirtual(IN PXTBL_PAGE_MAPPING PageMap,
* @since XT 1.0 * @since XT 1.0
*/ */
XTCDECL XTCDECL
LONG LOADER_MEMORY_TYPE
BlpGetLoaderMemoryType(IN EFI_MEMORY_TYPE EfiMemoryType) BlpGetLoaderMemoryType(IN EFI_MEMORY_TYPE EfiMemoryType)
{ {
LOADER_MEMORY_TYPE MemoryType; LOADER_MEMORY_TYPE MemoryType;

View File

@@ -1,7 +1,7 @@
/** /**
* PROJECT: ExectOS * PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory * COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtldr/protocol.c * FILE: xtldr/protocol.cc
* DESCRIPTION: XT Boot Loader protocol support * DESCRIPTION: XT Boot Loader protocol support
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org> * DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/ */
@@ -45,7 +45,7 @@ BlCloseProtocol(IN PEFI_HANDLE Handle,
*/ */
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
BlFindBootProtocol(IN PWCHAR SystemType, BlFindBootProtocol(IN PCWSTR SystemType,
OUT PEFI_GUID BootProtocolGuid) OUT PEFI_GUID BootProtocolGuid)
{ {
PXTBL_KNOWN_BOOT_PROTOCOL ProtocolEntry; PXTBL_KNOWN_BOOT_PROTOCOL ProtocolEntry;
@@ -167,8 +167,8 @@ BlLoadModule(IN PWCHAR ModuleName)
BlDebugPrint(L"Loading module '%S' ...\n", ModuleName); BlDebugPrint(L"Loading module '%S' ...\n", ModuleName);
/* Set module path */ /* Set module path */
RtlCopyMemory(ModuleFileName, ModuleName, sizeof(ModuleFileName) / sizeof(WCHAR)); RtlCopyMemory(ModuleFileName, ModuleName, (RtlWideStringLength(ModuleName, 0) + 1) * sizeof(WCHAR));
RtlConcatenateWideString(ModuleFileName, L".EFI", 0); RtlConcatenateWideString(ModuleFileName, (PWCHAR)L".EFI", 0);
/* Open EFI volume */ /* Open EFI volume */
Status = BlOpenVolume(NULLPTR, &DiskHandle, &FsHandle); Status = BlOpenVolume(NULLPTR, &DiskHandle, &FsHandle);
@@ -179,11 +179,11 @@ BlLoadModule(IN PWCHAR ModuleName)
} }
/* Open XTLDR modules common directory */ /* Open XTLDR modules common directory */
Status = FsHandle->Open(FsHandle, &DirHandle, XTBL_MODULES_DIRECTORY_PATH, EFI_FILE_MODE_READ, 0); Status = FsHandle->Open(FsHandle, &DirHandle, (PWCHAR)XTBL_MODULES_DIRECTORY_PATH, EFI_FILE_MODE_READ, 0);
if(Status != STATUS_EFI_SUCCESS) if(Status != STATUS_EFI_SUCCESS)
{ {
/* Modules directory not found, attempt to open XTLDR architecture specific modules directory */ /* Modules directory not found, attempt to open XTLDR architecture specific modules directory */
Status = FsHandle->Open(FsHandle, &DirHandle, XTBL_ARCH_MODULES_DIRECTORY_PATH, EFI_FILE_MODE_READ, 0); Status = FsHandle->Open(FsHandle, &DirHandle, (PWCHAR)XTBL_ARCH_MODULES_DIRECTORY_PATH, EFI_FILE_MODE_READ, 0);
} }
/* Close FS handle */ /* Close FS handle */
@@ -193,14 +193,14 @@ BlLoadModule(IN PWCHAR ModuleName)
if(Status != STATUS_EFI_SUCCESS) if(Status != STATUS_EFI_SUCCESS)
{ {
/* Failed to open directory */ /* Failed to open directory */
BlCloseVolume(DiskHandle); BlCloseVolume(&DiskHandle);
return Status; return Status;
} }
/* Read module file from disk and close directory and EFI volume */ /* Read module file from disk and close directory and EFI volume */
Status = BlReadFile(DirHandle, ModuleFileName, &ModuleData, &ModuleSize); Status = BlReadFile(DirHandle, ModuleFileName, &ModuleData, &ModuleSize);
DirHandle->Close(DirHandle); DirHandle->Close(DirHandle);
BlCloseVolume(DiskHandle); BlCloseVolume(&DiskHandle);
/* Make sure module file was read successfully */ /* Make sure module file was read successfully */
if(Status != STATUS_EFI_SUCCESS) if(Status != STATUS_EFI_SUCCESS)
@@ -222,7 +222,7 @@ BlLoadModule(IN PWCHAR ModuleName)
/* Setup PE/COFF EFI image headers */ /* Setup PE/COFF EFI image headers */
DosHeader = (PPECOFF_IMAGE_DOS_HEADER)ModuleData; DosHeader = (PPECOFF_IMAGE_DOS_HEADER)ModuleData;
PeHeader = (PPECOFF_IMAGE_PE_HEADER)(ModuleData + DosHeader->PeHeaderOffset); PeHeader = (PPECOFF_IMAGE_PE_HEADER)((PUCHAR)ModuleData + DosHeader->PeHeaderOffset);
/* Check PE/COFF image type*/ /* Check PE/COFF image type*/
if(PeHeader->OptionalHeader32.Magic == PECOFF_IMAGE_PE_OPTIONAL_HDR64_MAGIC) if(PeHeader->OptionalHeader32.Magic == PECOFF_IMAGE_PE_OPTIONAL_HDR64_MAGIC)
@@ -244,7 +244,7 @@ BlLoadModule(IN PWCHAR ModuleName)
if(RtlCompareString((PCHAR)SectionHeader[SectionIndex].Name, ".modinfo", 8) == 0) if(RtlCompareString((PCHAR)SectionHeader[SectionIndex].Name, ".modinfo", 8) == 0)
{ {
/* Module information section found */ /* Module information section found */
SectionData = ModuleData + SectionHeader[SectionIndex].PointerToRawData; SectionData = (PWCHAR)((PUCHAR)ModuleData + SectionHeader[SectionIndex].PointerToRawData);
/* Get module information */ /* Get module information */
Status = BlpGetModuleInformation(SectionData, SectionHeader[SectionIndex].SizeOfRawData, ModuleInfo); Status = BlpGetModuleInformation(SectionData, SectionHeader[SectionIndex].SizeOfRawData, ModuleInfo);
@@ -543,7 +543,7 @@ VOID
BlRegisterBootMenu(IN PVOID BootMenuRoutine) BlRegisterBootMenu(IN PVOID BootMenuRoutine)
{ {
/* Set boot menu routine */ /* Set boot menu routine */
BlpStatus.BootMenu = BootMenuRoutine; BlpStatus.BootMenu = (PBL_XT_BOOT_MENU)BootMenuRoutine;
} }
/** /**
@@ -561,7 +561,7 @@ BlRegisterBootMenu(IN PVOID BootMenuRoutine)
*/ */
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
BlRegisterBootProtocol(IN PWCHAR SystemType, BlRegisterBootProtocol(IN PCWSTR SystemType,
IN PEFI_GUID BootProtocolGuid) IN PEFI_GUID BootProtocolGuid)
{ {
PXTBL_KNOWN_BOOT_PROTOCOL ProtocolEntry; PXTBL_KNOWN_BOOT_PROTOCOL ProtocolEntry;
@@ -594,7 +594,7 @@ BlRegisterBootProtocol(IN PWCHAR SystemType,
} }
/* Set protocol properties and add it to the list */ /* Set protocol properties and add it to the list */
ProtocolEntry->SystemType = SystemType; ProtocolEntry->SystemType = (PWCHAR)SystemType;
ProtocolEntry->Guid = *BootProtocolGuid; ProtocolEntry->Guid = *BootProtocolGuid;
RtlInsertTailList(&BlpBootProtocols, &ProtocolEntry->Flink); RtlInsertTailList(&BlpBootProtocols, &ProtocolEntry->Flink);

View File

@@ -1,7 +1,7 @@
/** /**
* PROJECT: ExectOS * PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory * COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtldr/shell.c * FILE: xtldr/shell.cc
* DESCRIPTION: XT Boot Loader shell * DESCRIPTION: XT Boot Loader shell
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org> * DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/ */

View File

@@ -1,7 +1,7 @@
/** /**
* PROJECT: ExectOS * PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory * COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtldr/textui.c * FILE: xtldr/textui.cc
* DESCRIPTION: Text console User Interface (TUI) support for XT Boot Loader * DESCRIPTION: Text console User Interface (TUI) support for XT Boot Loader
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org> * DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
* Aiken Harris <harraiken91@gmail.com> * Aiken Harris <harraiken91@gmail.com>
@@ -105,7 +105,7 @@ BlDisplayBootMenu()
{ {
/* Draw menu entry */ /* Draw menu entry */
BlpDrawBootMenuEntry(&Handle, MenuEntries[TopVisibleEntry + Index].EntryName, BlpDrawBootMenuEntry(&Handle, MenuEntries[TopVisibleEntry + Index].EntryName,
Index, (TopVisibleEntry + Index) == HighligtedEntryId); Index, (BOOLEAN)((TopVisibleEntry + Index) == HighligtedEntryId));
} }
/* Clear redraw entries flag */ /* Clear redraw entries flag */
@@ -214,9 +214,9 @@ BlDisplayBootMenu()
/* Redraw new highlighted entry and the old one */ /* Redraw new highlighted entry and the old one */
BlpDrawBootMenuEntry(&Handle, MenuEntries[OldHighligtedEntryId].EntryName, BlpDrawBootMenuEntry(&Handle, MenuEntries[OldHighligtedEntryId].EntryName,
OldHighligtedEntryId - TopVisibleEntry, FALSE); OldHighligtedEntryId - TopVisibleEntry, (BOOLEAN)FALSE);
BlpDrawBootMenuEntry(&Handle, MenuEntries[HighligtedEntryId].EntryName, BlpDrawBootMenuEntry(&Handle, MenuEntries[HighligtedEntryId].EntryName,
HighligtedEntryId - TopVisibleEntry, TRUE); HighligtedEntryId - TopVisibleEntry, (BOOLEAN)TRUE);
} }
} }
else if(Key.ScanCode == 0x02) else if(Key.ScanCode == 0x02)
@@ -239,9 +239,9 @@ BlDisplayBootMenu()
/* Redraw new highlighted entry and the old one */ /* Redraw new highlighted entry and the old one */
BlpDrawBootMenuEntry(&Handle, MenuEntries[OldHighligtedEntryId].EntryName, BlpDrawBootMenuEntry(&Handle, MenuEntries[OldHighligtedEntryId].EntryName,
OldHighligtedEntryId - TopVisibleEntry, FALSE); OldHighligtedEntryId - TopVisibleEntry, (BOOLEAN)FALSE);
BlpDrawBootMenuEntry(&Handle, MenuEntries[HighligtedEntryId].EntryName, BlpDrawBootMenuEntry(&Handle, MenuEntries[HighligtedEntryId].EntryName,
HighligtedEntryId - TopVisibleEntry, TRUE); HighligtedEntryId - TopVisibleEntry, (BOOLEAN)TRUE);
} }
} }
else if(Key.ScanCode == 0x09) else if(Key.ScanCode == 0x09)
@@ -392,9 +392,9 @@ BlDisplayEditMenu(IN PXTBL_BOOTMENU_ITEM MenuEntry)
XTBL_DIALOG_HANDLE Handle; XTBL_DIALOG_HANDLE Handle;
BOOLEAN RedrawEditMenu, RedrawEntries; BOOLEAN RedrawEditMenu, RedrawEntries;
EFI_INPUT_KEY Key; EFI_INPUT_KEY Key;
UINT_PTR EventIndex; UINT_PTR EventIndex;
PWCHAR NewValue, OptionName, OriginalValue, Value, ValueToEdit; PWCHAR NewValue, OriginalValue, Value, ValueToEdit;
CONST PWCHAR *EditableOptions; PCWSTR OptionName, *EditableOptions;
EFI_STATUS Status; EFI_STATUS Status;
/* Draw edit menu */ /* Draw edit menu */
@@ -441,7 +441,7 @@ BlDisplayEditMenu(IN PXTBL_BOOTMENU_ITEM MenuEntry)
/* Draw menu entry */ /* Draw menu entry */
BlGetBootOptionValue(MenuEntry->Options, EditableOptions[TopVisibleEntry + Index], &Value); BlGetBootOptionValue(MenuEntry->Options, EditableOptions[TopVisibleEntry + Index], &Value);
BlpDrawEditMenuEntry(&Handle, EditableOptions[TopVisibleEntry + Index], Value, Index, BlpDrawEditMenuEntry(&Handle, EditableOptions[TopVisibleEntry + Index], Value, Index,
(TopVisibleEntry + Index) == HighligtedOptionId); (BOOLEAN)((TopVisibleEntry + Index) == HighligtedOptionId));
/* Free allocated value string if needed */ /* Free allocated value string if needed */
if(Value != NULLPTR) if(Value != NULLPTR)
@@ -468,7 +468,7 @@ BlDisplayEditMenu(IN PXTBL_BOOTMENU_ITEM MenuEntry)
/* If the original value is NULLPTR, use an empty string for editing */ /* If the original value is NULLPTR, use an empty string for editing */
if(OriginalValue == NULLPTR) if(OriginalValue == NULLPTR)
{ {
ValueToEdit = L""; ValueToEdit = (PWCHAR)L"";
} }
else else
{ {
@@ -516,7 +516,7 @@ BlDisplayEditMenu(IN PXTBL_BOOTMENU_ITEM MenuEntry)
/* Redraw old highlighted entry */ /* Redraw old highlighted entry */
BlGetBootOptionValue(MenuEntry->Options, EditableOptions[OldHighligtedOptionId], &Value); BlGetBootOptionValue(MenuEntry->Options, EditableOptions[OldHighligtedOptionId], &Value);
BlpDrawEditMenuEntry(&Handle, EditableOptions[OldHighligtedOptionId], Value, OldHighligtedOptionId - TopVisibleEntry, FALSE); BlpDrawEditMenuEntry(&Handle, EditableOptions[OldHighligtedOptionId], Value, OldHighligtedOptionId - TopVisibleEntry, (BOOLEAN)FALSE);
/* Free allocated value string if needed */ /* Free allocated value string if needed */
if(Value != NULLPTR) if(Value != NULLPTR)
@@ -526,7 +526,7 @@ BlDisplayEditMenu(IN PXTBL_BOOTMENU_ITEM MenuEntry)
/* Redraw new highlighted entry */ /* Redraw new highlighted entry */
BlGetBootOptionValue(MenuEntry->Options, EditableOptions[HighligtedOptionId], &Value); BlGetBootOptionValue(MenuEntry->Options, EditableOptions[HighligtedOptionId], &Value);
BlpDrawEditMenuEntry(&Handle, EditableOptions[HighligtedOptionId], Value, HighligtedOptionId - TopVisibleEntry, TRUE); BlpDrawEditMenuEntry(&Handle, EditableOptions[HighligtedOptionId], Value, HighligtedOptionId - TopVisibleEntry, (BOOLEAN)TRUE);
/* Free allocated value string if needed */ /* Free allocated value string if needed */
if(Value != NULLPTR) if(Value != NULLPTR)
@@ -555,7 +555,7 @@ BlDisplayEditMenu(IN PXTBL_BOOTMENU_ITEM MenuEntry)
/* Redraw old highlighted entry */ /* Redraw old highlighted entry */
BlGetBootOptionValue(MenuEntry->Options, EditableOptions[OldHighligtedOptionId], &Value); BlGetBootOptionValue(MenuEntry->Options, EditableOptions[OldHighligtedOptionId], &Value);
BlpDrawEditMenuEntry(&Handle, EditableOptions[OldHighligtedOptionId], Value, OldHighligtedOptionId - TopVisibleEntry, FALSE); BlpDrawEditMenuEntry(&Handle, EditableOptions[OldHighligtedOptionId], Value, OldHighligtedOptionId - TopVisibleEntry, (BOOLEAN)FALSE);
/* Free allocated value string if needed */ /* Free allocated value string if needed */
if(Value != NULLPTR) if(Value != NULLPTR)
@@ -565,7 +565,7 @@ BlDisplayEditMenu(IN PXTBL_BOOTMENU_ITEM MenuEntry)
/* Redraw new highlighted entry */ /* Redraw new highlighted entry */
BlGetBootOptionValue(MenuEntry->Options, EditableOptions[HighligtedOptionId], &Value); BlGetBootOptionValue(MenuEntry->Options, EditableOptions[HighligtedOptionId], &Value);
BlpDrawEditMenuEntry(&Handle, EditableOptions[HighligtedOptionId], Value, HighligtedOptionId - TopVisibleEntry, TRUE); BlpDrawEditMenuEntry(&Handle, EditableOptions[HighligtedOptionId], Value, HighligtedOptionId - TopVisibleEntry, (BOOLEAN)TRUE);
/* Free allocated value string if needed */ /* Free allocated value string if needed */
if(Value != NULLPTR) if(Value != NULLPTR)
@@ -640,8 +640,8 @@ BlDisplayEditMenu(IN PXTBL_BOOTMENU_ITEM MenuEntry)
*/ */
XTCDECL XTCDECL
VOID VOID
BlDisplayErrorDialog(IN PWCHAR Caption, BlDisplayErrorDialog(IN PCWSTR Caption,
IN PWCHAR Message) IN PCWSTR Message)
{ {
XTBL_DIALOG_HANDLE Handle; XTBL_DIALOG_HANDLE Handle;
EFI_INPUT_KEY Key; EFI_INPUT_KEY Key;
@@ -693,8 +693,8 @@ BlDisplayErrorDialog(IN PWCHAR Caption,
*/ */
XTCDECL XTCDECL
VOID VOID
BlDisplayInfoDialog(IN PWCHAR Caption, BlDisplayInfoDialog(IN PCWSTR Caption,
IN PWCHAR Message) IN PCWSTR Message)
{ {
XTBL_DIALOG_HANDLE Handle; XTBL_DIALOG_HANDLE Handle;
EFI_INPUT_KEY Key; EFI_INPUT_KEY Key;
@@ -749,8 +749,8 @@ BlDisplayInfoDialog(IN PWCHAR Caption,
*/ */
XTCDECL XTCDECL
VOID VOID
BlDisplayInputDialog(IN PWCHAR Caption, BlDisplayInputDialog(IN PCWSTR Caption,
IN PWCHAR Message, IN PCWSTR Message,
IN OUT PWCHAR *InputFieldText) IN OUT PWCHAR *InputFieldText)
{ {
SIZE_T InputFieldLength, TextCursorPosition, TextIndex, TextPosition; SIZE_T InputFieldLength, TextCursorPosition, TextIndex, TextPosition;
@@ -962,8 +962,8 @@ BlDisplayInputDialog(IN PWCHAR Caption,
*/ */
XTCDECL XTCDECL
XTBL_DIALOG_HANDLE XTBL_DIALOG_HANDLE
BlDisplayProgressDialog(IN PWCHAR Caption, BlDisplayProgressDialog(IN PCWSTR Caption,
IN PWCHAR Message, IN PCWSTR Message,
IN UCHAR Percentage) IN UCHAR Percentage)
{ {
XTBL_DIALOG_HANDLE Handle; XTBL_DIALOG_HANDLE Handle;
@@ -1004,7 +1004,7 @@ BlDisplayProgressDialog(IN PWCHAR Caption,
XTCDECL XTCDECL
VOID VOID
BlUpdateProgressBar(IN PXTBL_DIALOG_HANDLE Handle, BlUpdateProgressBar(IN PXTBL_DIALOG_HANDLE Handle,
IN PWCHAR Message, IN PCWSTR Message,
IN UCHAR Percentage) IN UCHAR Percentage)
{ {
/* Check if message needs an update */ /* Check if message needs an update */
@@ -1034,7 +1034,7 @@ BlUpdateProgressBar(IN PXTBL_DIALOG_HANDLE Handle,
XTCDECL XTCDECL
VOID VOID
BlpDetermineDialogBoxSize(IN OUT PXTBL_DIALOG_HANDLE Handle, BlpDetermineDialogBoxSize(IN OUT PXTBL_DIALOG_HANDLE Handle,
IN PWCHAR Message) IN PCWSTR Message)
{ {
UINT_PTR Width, Height, LineLength; UINT_PTR Width, Height, LineLength;
SIZE_T Index, MessageLength; SIZE_T Index, MessageLength;
@@ -1268,8 +1268,8 @@ BlpDrawBootMenuEntry(IN PXTBL_DIALOG_HANDLE Handle,
XTCDECL XTCDECL
VOID VOID
BlpDrawDialogBox(IN OUT PXTBL_DIALOG_HANDLE Handle, BlpDrawDialogBox(IN OUT PXTBL_DIALOG_HANDLE Handle,
IN PWCHAR Caption, IN PCWSTR Caption,
IN PWCHAR Message) IN PCWSTR Message)
{ {
WCHAR BoxLine[XTBL_TUI_MAX_DIALOG_WIDTH]; WCHAR BoxLine[XTBL_TUI_MAX_DIALOG_WIDTH];
SIZE_T CaptionLength; SIZE_T CaptionLength;
@@ -1545,7 +1545,7 @@ BlpDrawDialogInputField(IN PXTBL_DIALOG_HANDLE Handle,
XTCDECL XTCDECL
VOID VOID
BlpDrawDialogMessage(IN PXTBL_DIALOG_HANDLE Handle, BlpDrawDialogMessage(IN PXTBL_DIALOG_HANDLE Handle,
IN PWCHAR Message) IN PCWSTR Message)
{ {
PWCHAR Msg, MsgLine, LastMsgLine; PWCHAR Msg, MsgLine, LastMsgLine;
SIZE_T Index, Length, LineLength; SIZE_T Index, Length, LineLength;
@@ -1733,13 +1733,13 @@ BlpDrawEditMenu(OUT PXTBL_DIALOG_HANDLE Handle)
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
BlpDrawEditMenuEntry(IN PXTBL_DIALOG_HANDLE Handle, BlpDrawEditMenuEntry(IN PXTBL_DIALOG_HANDLE Handle,
IN PWCHAR OptionName, IN PCWSTR OptionName,
IN PWCHAR OptionValue, IN PCWSTR OptionValue,
IN UINT Position, IN UINT Position,
IN BOOLEAN Highlighted) IN BOOLEAN Highlighted)
{ {
BOOLEAN Allocation; BOOLEAN Allocation;
PWCHAR DisplayValue, ShortValue; PCWSTR DisplayValue, ShortValue;
UINT Index; UINT Index;
ULONG OptionNameLength, OptionValueLength, OptionWidth; ULONG OptionNameLength, OptionValueLength, OptionWidth;
EFI_STATUS Status; EFI_STATUS Status;
@@ -1759,7 +1759,7 @@ BlpDrawEditMenuEntry(IN PXTBL_DIALOG_HANDLE Handle,
if(OptionValueLength > OptionWidth) if(OptionValueLength > OptionWidth)
{ {
/* Allocate buffer for new, shortened value */ /* Allocate buffer for new, shortened value */
Status = BlAllocateMemoryPool((OptionWidth + 1) * sizeof(WCHAR), (PVOID *)&ShortValue); Status = BlAllocateMemoryPool((OptionWidth + 1) * sizeof(WCHAR), (PVOID *)&ShortValue); // This allocates PWCHAR
if(Status != STATUS_EFI_SUCCESS) if(Status != STATUS_EFI_SUCCESS)
{ {
/* Memory allocation failure, print debug message and return */ /* Memory allocation failure, print debug message and return */
@@ -1768,9 +1768,9 @@ BlpDrawEditMenuEntry(IN PXTBL_DIALOG_HANDLE Handle,
} }
/* Copy a desired value length into the allocated buffer and append "..." */ /* Copy a desired value length into the allocated buffer and append "..." */
RtlCopyMemory(ShortValue, DisplayValue, (OptionWidth - 3) * sizeof(WCHAR)); RtlCopyMemory((PWCHAR)ShortValue, DisplayValue, (OptionWidth - 3) * sizeof(WCHAR));
RtlCopyMemory(ShortValue + OptionWidth - 3, L"...", 3 * sizeof(WCHAR)); RtlCopyMemory((PWCHAR)ShortValue + OptionWidth - 3, L"...", 3 * sizeof(WCHAR));
ShortValue[OptionWidth] = L'\0'; ((PWCHAR)ShortValue)[OptionWidth] = L'\0';
/* Mark that allocation was made and set new display value */ /* Mark that allocation was made and set new display value */
Allocation = TRUE; Allocation = TRUE;
@@ -1806,7 +1806,7 @@ BlpDrawEditMenuEntry(IN PXTBL_DIALOG_HANDLE Handle,
if(Allocation) if(Allocation)
{ {
/* Free allocated memory */ /* Free allocated memory */
BlFreeMemoryPool(DisplayValue); BlFreeMemoryPool((PVOID)DisplayValue);
} }
/* Return success */ /* Return success */

View File

@@ -1,7 +1,7 @@
/** /**
* PROJECT: ExectOS * PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory * COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtldr/volume.c * FILE: xtldr/volume.cc
* DESCRIPTION: XTLDR volume support * DESCRIPTION: XTLDR volume support
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org> * DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
* Aiken Harris <harraiken91@gmail.com> * Aiken Harris <harraiken91@gmail.com>
@@ -563,7 +563,7 @@ BlOpenVolume(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath,
if(Status != STATUS_EFI_SUCCESS) if(Status != STATUS_EFI_SUCCESS)
{ {
/* Failed to open the filesystem protocol, close volume */ /* Failed to open the filesystem protocol, close volume */
BlCloseVolume(*DiskHandle); BlCloseVolume(DiskHandle);
return Status; return Status;
} }
@@ -572,7 +572,7 @@ BlOpenVolume(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath,
if(Status != STATUS_EFI_SUCCESS) if(Status != STATUS_EFI_SUCCESS)
{ {
/* Failed to open the filesystem, close volume */ /* Failed to open the filesystem, close volume */
BlCloseVolume(*DiskHandle); BlCloseVolume(DiskHandle);
return Status; return Status;
} }
@@ -602,7 +602,7 @@ BlOpenVolume(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath,
XTCDECL XTCDECL
EFI_STATUS EFI_STATUS
BlReadFile(IN PEFI_FILE_HANDLE DirHandle, BlReadFile(IN PEFI_FILE_HANDLE DirHandle,
IN CONST PWCHAR FileName, IN PCWSTR FileName,
OUT PVOID *FileData, OUT PVOID *FileData,
OUT PSIZE_T FileSize) OUT PSIZE_T FileSize)
{ {
@@ -614,7 +614,7 @@ BlReadFile(IN PEFI_FILE_HANDLE DirHandle,
UINT_PTR ReadSize; UINT_PTR ReadSize;
SIZE_T Pages; SIZE_T Pages;
Status = DirHandle->Open(DirHandle, &FileHandle, FileName, EFI_FILE_MODE_READ, Status = DirHandle->Open(DirHandle, &FileHandle, (PWCHAR)FileName, EFI_FILE_MODE_READ,
EFI_FILE_READ_ONLY | EFI_FILE_HIDDEN | EFI_FILE_SYSTEM); EFI_FILE_READ_ONLY | EFI_FILE_HIDDEN | EFI_FILE_SYSTEM);
if(Status != STATUS_EFI_SUCCESS) if(Status != STATUS_EFI_SUCCESS)
{ {

View File

@@ -1,7 +1,7 @@
/** /**
* PROJECT: ExectOS * PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory * COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtldr/xtldr.c * FILE: xtldr/xtldr.cc
* DESCRIPTION: XTOS UEFI Boot Loader * DESCRIPTION: XTOS UEFI Boot Loader
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org> * DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/ */
@@ -55,15 +55,17 @@ BlInitializeBootLoader()
{ {
/* Protocol opened successfully, print useful debug information */ /* Protocol opened successfully, print useful debug information */
BlConsolePrint(L"\n---------- BOOTLOADER DEBUG ----------\n" BlConsolePrint(L"\n---------- BOOTLOADER DEBUG ----------\n"
L"Pointer Size : %d\n" L"Pointer Size : %d\n"
L"Image Base Address: %P\n" L"Image Base Address : %P\n"
L"Image Base Size : 0x%lX\n" L"Image Base Size : 0x%lX\n"
L"Image Revision : 0x%lX\n" L"Image Revision : 0x%lX\n"
L"Secure Boot Status : %zd\n"
L"--------------------------------------\n", L"--------------------------------------\n",
sizeof(PVOID), sizeof(PVOID),
LoadedImage->ImageBase, LoadedImage->ImageBase,
LoadedImage->ImageSize, LoadedImage->ImageSize,
LoadedImage->Revision); LoadedImage->Revision,
BlpStatus.SecureBoot);
BlSleepExecution(3000); BlSleepExecution(3000);
} }