diff --git a/xtldr/amd64/memory.c b/xtldr/amd64/memory.c index 7c425998..5cce039e 100644 --- a/xtldr/amd64/memory.c +++ b/xtldr/amd64/memory.c @@ -25,6 +25,7 @@ * * @since XT 1.0 */ +XTCDECL VOID BlCreateStack(IN PVOID *StackPtr, IN ULONG StackSize, @@ -71,6 +72,7 @@ BlCreateStack(IN PVOID *StackPtr, * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlEnablePaging(IN PLIST_ENTRY MemoryMappings, IN PVOID VirtualAddress, @@ -199,6 +201,7 @@ BlEnablePaging(IN PLIST_ENTRY MemoryMappings, * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlMapVirtualMemory(IN PLIST_ENTRY MemoryMappings, IN UINT_PTR VirtualAddress, diff --git a/xtldr/blproto.c b/xtldr/blproto.c index 595fa22c..9d274041 100644 --- a/xtldr/blproto.c +++ b/xtldr/blproto.c @@ -20,6 +20,7 @@ * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlGetXtLoaderProtocol(OUT PXT_BOOT_LOADER_PROTOCOL *LdrProtocol) { @@ -42,6 +43,7 @@ BlGetXtLoaderProtocol(OUT PXT_BOOT_LOADER_PROTOCOL *LdrProtocol) * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlLoadXtProtocol(OUT PVOID *ProtocolHandler, IN PEFI_GUID ProtocolGuid) diff --git a/xtldr/console.c b/xtldr/console.c index 54f6443d..52fc096e 100644 --- a/xtldr/console.c +++ b/xtldr/console.c @@ -16,6 +16,7 @@ * * @since XT 1.0 */ +XTCDECL VOID BlConsoleClearScreen() { @@ -29,6 +30,7 @@ BlConsoleClearScreen() * * @since XT 1.0 */ +XTCDECL VOID BlConsoleInitialize() { @@ -54,6 +56,7 @@ BlConsoleInitialize() * * @since XT 1.0 */ +XTCDECL VOID BlConsolePutChar(IN USHORT Character) { diff --git a/xtldr/efiutil.c b/xtldr/efiutil.c index a25f84c8..cd832628 100644 --- a/xtldr/efiutil.c +++ b/xtldr/efiutil.c @@ -16,6 +16,7 @@ * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlComPortInitialize() { @@ -117,6 +118,7 @@ BlComPortInitialize() * * @since XT 1.0 */ +XTCDECL VOID BlComPortPutChar(IN USHORT Character) { @@ -142,6 +144,7 @@ BlComPortPutChar(IN USHORT Character) * * @since XT 1.0 */ +XTCDECL VOID BlDbgPrint(IN PUINT16 Format, IN ...) @@ -177,6 +180,7 @@ BlDbgPrint(IN PUINT16 Format, * * @todo Check if GOP is active and use it instead of default conout protocol */ +XTCDECL VOID BlEfiPrint(IN PUINT16 Format, IN ...) diff --git a/xtldr/i686/memory.c b/xtldr/i686/memory.c index 4ed9f1ac..590dcb19 100644 --- a/xtldr/i686/memory.c +++ b/xtldr/i686/memory.c @@ -25,6 +25,7 @@ * * @since XT 1.0 */ +XTCDECL VOID BlCreateStack(IN PVOID *StackPtr, IN ULONG StackSize, @@ -71,6 +72,7 @@ BlCreateStack(IN PVOID *StackPtr, * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlEnablePaging(IN PLIST_ENTRY MemoryMappings, IN PVOID VirtualAddress, @@ -316,6 +318,7 @@ BlEnablePaging(IN PLIST_ENTRY MemoryMappings, * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlMapVirtualMemory(IN PLIST_ENTRY MemoryMappings, IN UINT_PTR VirtualAddress, diff --git a/xtldr/includes/blproto.h b/xtldr/includes/blproto.h index dc4c4378..df0c0447 100644 --- a/xtldr/includes/blproto.h +++ b/xtldr/includes/blproto.h @@ -51,9 +51,11 @@ typedef struct _XT_BOOT_LOADER_PROTOCOL } XT_BOOT_LOADER_PROTOCOL, *PXT_BOOT_LOADER_PROTOCOL; /* Loader protocol related routines forward references */ +XTCDECL EFI_STATUS BlGetXtLoaderProtocol(OUT PXT_BOOT_LOADER_PROTOCOL *LdrProtocol); +XTCDECL EFI_STATUS BlLoadXtProtocol(OUT PVOID *ProtocolHandler, IN PEFI_GUID ProtocolGuid); diff --git a/xtldr/includes/xtbl.h b/xtldr/includes/xtbl.h index d72e5395..5147b689 100644 --- a/xtldr/includes/xtbl.h +++ b/xtldr/includes/xtbl.h @@ -32,6 +32,7 @@ EXTERN PVOID EfiLoaderStack; /* Serial port configuration */ EXTERN CPPORT EfiSerialPort; +XTCDECL EFI_STATUS BlAddVirtualMemoryMapping(IN PLIST_ENTRY MemoryMappings, IN PVOID VirtualAddress, @@ -39,103 +40,130 @@ BlAddVirtualMemoryMapping(IN PLIST_ENTRY MemoryMappings, IN UINT NumberOfPages, IN LOADER_MEMORY_TYPE MemoryType); +XTCDECL EFI_STATUS BlCloseVolume(IN PEFI_HANDLE VolumeHandle); +XTCDECL EFI_STATUS BlComPortInitialize(); +XTCDECL VOID BlComPortPutChar(IN USHORT Character); +XTCDECL VOID BlConsoleClearScreen(); +XTCDECL VOID BlConsoleInitialize(); +XTCDECL VOID BlConsolePutChar(IN USHORT Character); +XTCDECL LOADER_MEMORY_TYPE BlConvertEfiMemoryType(IN EFI_MEMORY_TYPE EfiMemoryType); +XTCDECL VOID BlCreateStack(IN PVOID *StackPtr, IN ULONG StackSize, IN PVOID Callback); +XTCDECL VOID BlDbgPrint(IN PUINT16 Format, IN ...); +XTCDECL INT_PTR BlEfiGetSecureBootStatus(); +XTCDECL EFI_STATUS BlEfiGetSystemConfigurationTable(IN PEFI_GUID TableGuid, OUT PVOID *Table); +XTCDECL EFI_STATUS BlEfiMemoryAllocatePages(IN UINT64 Size, OUT PEFI_PHYSICAL_ADDRESS Memory); +XTCDECL EFI_STATUS BlEfiMemoryAllocatePool(IN UINT_PTR Size, OUT PVOID *Memory); +XTCDECL EFI_STATUS BlEfiMemoryFreePages(IN UINT64 Size, IN EFI_PHYSICAL_ADDRESS Memory); +XTCDECL EFI_STATUS BlEfiMemoryFreePool(IN PVOID Memory); +XTCDECL VOID BlEfiPrint(IN PUINT16 Format, IN ...); +XTCDECL EFI_STATUS BlEnablePaging(IN PLIST_ENTRY MemoryMappings, IN PVOID VirtualAddress, IN PEFI_LOADED_IMAGE_PROTOCOL ImageProtocol, IN PVOID *PtePointer); +XTCDECL EFI_STATUS BlEnumerateEfiBlockDevices(); +XTCDECL EFI_STATUS BlFindVolumeDevicePath(IN PEFI_DEVICE_PATH_PROTOCOL FsHandle, IN CONST PWCHAR FileSystemPath, OUT PEFI_DEVICE_PATH_PROTOCOL* DevicePath); +XTCDECL EFI_STATUS BlGetMemoryMap(OUT PEFI_MEMORY_MAP MemoryMap); +XTCDECL VOID BlGetStackPointer(OUT PVOID *Stack); +XTCDECL EFI_STATUS BlGetVirtualAddress(IN PLIST_ENTRY MemoryMappings, IN PVOID PhysicalAddress, OUT PVOID *VirtualAddress); +XTCDECL EFI_STATUS BlGetVolumeDevicePath(IN PUCHAR SystemPath, OUT PEFI_DEVICE_PATH_PROTOCOL *DevicePath, OUT PUCHAR *ArcName, OUT PUCHAR *Path); +XTCDECL EFI_STATUS BlInitializeVirtualMemory(IN OUT PLIST_ENTRY MemoryMappings, IN OUT PVOID *MemoryMapAddress); +XTCDECL EFI_STATUS BlLoadEfiModules(); +XTCDECL EFI_STATUS BlLoadXtSystem(); +XTCDECL EFI_STATUS BlMapVirtualMemory(IN PLIST_ENTRY MemoryMappings, IN UINT_PTR VirtualAddress, @@ -144,33 +172,41 @@ BlMapVirtualMemory(IN PLIST_ENTRY MemoryMappings, IN BOOLEAN PaeExtension, IN OUT PVOID *PtePointer); +XTCDECL EFI_STATUS BlOpenVolume(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, OUT PEFI_HANDLE DiskHandle, OUT PEFI_FILE_HANDLE *FsHandle); +XTCDECL EFI_STATUS BlRegisterXtLoaderProtocol(); +XTCDECL EFI_STATUS BlStartNewStack(); +XTCDECL EFI_STATUS BlStartXtLoader(IN EFI_HANDLE ImageHandle, IN PEFI_SYSTEM_TABLE SystemTable); +XTCDECL INT BlStringCompareInsensitive(IN PUCHAR String1, IN PUCHAR String2); +XTCDECL VOID BlStringPrint(IN VOID PutChar(IN USHORT Character), IN PUINT16 Format, IN VA_LIST Arguments); +XTCDECL EFI_STATUS BlpDiscoverEfiBlockDevices(OUT PLIST_ENTRY BlockDevices); +XTCDECL EFI_STATUS BlpDissectVolumeArcPath(IN PUCHAR SystemPath, OUT PUCHAR *ArcName, @@ -179,45 +215,54 @@ BlpDissectVolumeArcPath(IN PUCHAR SystemPath, OUT PULONG DriveNumber, OUT PULONG PartNumber); +XTCDECL PEFI_DEVICE_PATH_PROTOCOL BlpDuplicateDevicePath(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath); +XTCDECL EFI_STATUS BlpFindLastEfiBlockDeviceNode(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, OUT PEFI_DEVICE_PATH_PROTOCOL *LastNode); +XTCDECL BOOLEAN BlpFindParentEfiBlockDevice(IN PLIST_ENTRY BlockDevices, IN PEFI_BLOCK_DEVICE_DATA ChildNode, OUT PEFI_BLOCK_DEVICE_DATA ParentNode); +XTCDECL VOID BlpStringFormat(IN VOID PutChar(IN USHORT Character), IN PUINT16 Format, IN ...); +XTCDECL VOID BlpStringPrintSigned32(IN VOID PutChar(IN USHORT Character), IN INT32 Number, IN UINT32 Base); +XTCDECL VOID BlpStringPrintSigned64(IN VOID PutChar(IN USHORT Character), IN INT_PTR Number, IN UINT_PTR Base); +XTCDECL VOID BlpStringPrintUnsigned32(IN VOID PutChar(IN USHORT Character), IN UINT32 Number, IN UINT32 Base, IN UINT32 Padding); +XTCDECL VOID BlpStringPrintUnsigned64(IN VOID PutChar(IN USHORT Character), IN UINT_PTR Number, IN UINT_PTR Base, IN UINT_PTR Padding); +XTCDECL UINT64 BlpStringReadPadding(IN PUINT16 *Format); diff --git a/xtldr/memory.c b/xtldr/memory.c index fd3f5776..afb9860c 100644 --- a/xtldr/memory.c +++ b/xtldr/memory.c @@ -31,6 +31,7 @@ * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlAddVirtualMemoryMapping(IN PLIST_ENTRY MemoryMappings, IN PVOID VirtualAddress, @@ -191,6 +192,7 @@ BlAddVirtualMemoryMapping(IN PLIST_ENTRY MemoryMappings, * * @since XT 1.0 */ +XTCDECL LOADER_MEMORY_TYPE BlConvertEfiMemoryType(IN EFI_MEMORY_TYPE EfiMemoryType) { @@ -239,6 +241,7 @@ BlConvertEfiMemoryType(IN EFI_MEMORY_TYPE EfiMemoryType) * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlEfiMemoryAllocatePages(IN UINT64 Pages, OUT PEFI_PHYSICAL_ADDRESS Memory) @@ -259,6 +262,7 @@ BlEfiMemoryAllocatePages(IN UINT64 Pages, * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlEfiMemoryAllocatePool(IN UINT_PTR Size, OUT PVOID *Memory) @@ -280,6 +284,7 @@ BlEfiMemoryAllocatePool(IN UINT_PTR Size, * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlEfiMemoryFreePages(IN UINT64 Pages, IN EFI_PHYSICAL_ADDRESS Memory) @@ -297,6 +302,7 @@ BlEfiMemoryFreePages(IN UINT64 Pages, * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlEfiMemoryFreePool(IN PVOID Memory) { @@ -314,6 +320,7 @@ BlEfiMemoryFreePool(IN PVOID Memory) * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlGetMemoryMap(OUT PEFI_MEMORY_MAP MemoryMap) { @@ -382,6 +389,7 @@ BlGetMemoryMap(OUT PEFI_MEMORY_MAP MemoryMap) * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlGetVirtualAddress(IN PLIST_ENTRY MemoryMappings, IN PVOID PhysicalAddress, @@ -440,6 +448,7 @@ BlGetVirtualAddress(IN PLIST_ENTRY MemoryMappings, * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlInitializeVirtualMemory(IN OUT PLIST_ENTRY MemoryMappings, IN OUT PVOID *MemoryMapAddress) diff --git a/xtldr/modules/dummy/dummy.c b/xtldr/modules/dummy/dummy.c index f01d86ae..a3f70c15 100644 --- a/xtldr/modules/dummy/dummy.c +++ b/xtldr/modules/dummy/dummy.c @@ -31,6 +31,7 @@ PXT_BOOT_LOADER_PROTOCOL XtLdrProtocol; * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlXtLdrModuleMain(IN EFI_HANDLE ImageHandle, IN PEFI_SYSTEM_TABLE SystemTable) diff --git a/xtldr/modules/dummy/includes/dummy.h b/xtldr/modules/dummy/includes/dummy.h index 02b7e749..fbdcee9f 100644 --- a/xtldr/modules/dummy/includes/dummy.h +++ b/xtldr/modules/dummy/includes/dummy.h @@ -13,6 +13,7 @@ /* Dummy module related routines forward references */ +XTCDECL EFI_STATUS BlXtLdrModuleMain(IN EFI_HANDLE ImageHandle, IN PEFI_SYSTEM_TABLE SystemTable); diff --git a/xtldr/modules/pecoff/includes/pecoff.h b/xtldr/modules/pecoff/includes/pecoff.h index dfb05ab7..b026fc04 100644 --- a/xtldr/modules/pecoff/includes/pecoff.h +++ b/xtldr/modules/pecoff/includes/pecoff.h @@ -13,36 +13,44 @@ /* PE/COFF image protocol related routines forward references */ +XTCDECL EFI_STATUS PeGetEntryPoint(IN PPECOFF_IMAGE_CONTEXT Image, OUT PVOID *EntryPoint); +XTCDECL EFI_STATUS PeGetMachineType(IN PPECOFF_IMAGE_CONTEXT Image, OUT PUSHORT MachineType); +XTCDECL EFI_STATUS PeGetSubSystem(IN PPECOFF_IMAGE_CONTEXT Image, OUT PUSHORT SubSystem); +XTCDECL EFI_STATUS PeLoadImage(IN PEFI_FILE_HANDLE FileHandle, IN LOADER_MEMORY_TYPE MemoryType, IN PVOID VirtualAddress, OUT PPECOFF_IMAGE_CONTEXT *Image); +XTCDECL EFI_STATUS PeRelocateImage(IN PPECOFF_IMAGE_CONTEXT Image, IN EFI_VIRTUAL_ADDRESS Address); +XTCDECL EFI_STATUS PepRelocateLoadedImage(IN PPECOFF_IMAGE_CONTEXT Image); +XTCDECL EFI_STATUS PepValidateImageHeaders(IN PPECOFF_IMAGE_DOS_HEADER DosHeader, IN PPECOFF_IMAGE_PE_HEADER PeHeader, IN SIZE_T FileSize); +XTCDECL EFI_STATUS BlXtLdrModuleMain(IN EFI_HANDLE ImageHandle, IN PEFI_SYSTEM_TABLE SystemTable); diff --git a/xtldr/modules/pecoff/pecoff.c b/xtldr/modules/pecoff/pecoff.c index 334109e4..61258d66 100644 --- a/xtldr/modules/pecoff/pecoff.c +++ b/xtldr/modules/pecoff/pecoff.c @@ -34,6 +34,7 @@ XT_PECOFF_IMAGE_PROTOCOL XtPeCoffProtocol; * * @since XT 1.0 */ +XTCDECL EFI_STATUS PeGetEntryPoint(IN PPECOFF_IMAGE_CONTEXT Image, OUT PVOID *EntryPoint) @@ -63,6 +64,7 @@ PeGetEntryPoint(IN PPECOFF_IMAGE_CONTEXT Image, * * @since XT 1.0 */ +XTCDECL EFI_STATUS PeGetMachineType(IN PPECOFF_IMAGE_CONTEXT Image, OUT PUSHORT MachineType) @@ -92,6 +94,7 @@ PeGetMachineType(IN PPECOFF_IMAGE_CONTEXT Image, * * @since XT 1.0 */ +XTCDECL EFI_STATUS PeGetSubSystem(IN PPECOFF_IMAGE_CONTEXT Image, OUT PUSHORT SubSystem) @@ -127,6 +130,7 @@ PeGetSubSystem(IN PPECOFF_IMAGE_CONTEXT Image, * * @since XT 1.0 */ +XTCDECL EFI_STATUS PeLoadImage(IN PEFI_FILE_HANDLE FileHandle, IN LOADER_MEMORY_TYPE MemoryType, @@ -346,6 +350,7 @@ PeLoadImage(IN PEFI_FILE_HANDLE FileHandle, * * @since XT 1.0 */ +XTCDECL EFI_STATUS PeRelocateImage(IN PPECOFF_IMAGE_CONTEXT Image, IN EFI_VIRTUAL_ADDRESS Address) @@ -394,6 +399,7 @@ PeRelocateImage(IN PPECOFF_IMAGE_CONTEXT Image, * * @since XT 1.0 */ +XTCDECL EFI_STATUS PepRelocateLoadedImage(IN PPECOFF_IMAGE_CONTEXT Image) { @@ -514,6 +520,7 @@ PepRelocateLoadedImage(IN PPECOFF_IMAGE_CONTEXT Image) * * @since XT 1.0 */ +XTCDECL EFI_STATUS PepValidateImageHeaders(IN PPECOFF_IMAGE_DOS_HEADER DosHeader, IN PPECOFF_IMAGE_PE_HEADER PeHeader, @@ -565,6 +572,7 @@ PepValidateImageHeaders(IN PPECOFF_IMAGE_DOS_HEADER DosHeader, * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlXtLdrModuleMain(IN EFI_HANDLE ImageHandle, IN PEFI_SYSTEM_TABLE SystemTable) diff --git a/xtldr/modules/xtos/includes/xtos.h b/xtldr/modules/xtos/includes/xtos.h index 477b490a..c7cc3c94 100644 --- a/xtldr/modules/xtos/includes/xtos.h +++ b/xtldr/modules/xtos/includes/xtos.h @@ -16,17 +16,21 @@ typedef VOID (XTAPI *PXT_ENTRY_POINT)(IN PKERNEL_INITIALIZATION_BLOCK BootParameters); /* XTOS boot protocol related routines forward references */ +XTCDECL EFI_STATUS XtBootSystem(IN PXT_BOOT_PROTOCOL_PARAMETERS Parameters); +XTCDECL EFI_STATUS XtpBootSequence(IN PEFI_FILE_HANDLE BootDir, IN PXT_BOOT_PROTOCOL_PARAMETERS Parameters); +XTCDECL EFI_STATUS XtpInitializeLoaderBlock(IN PLIST_ENTRY MemoryMappings, IN PVOID *VirtualAddress); +XTCDECL EFI_STATUS XtpLoadModule(IN PEFI_FILE_HANDLE BootDir, IN PWCHAR FileName, @@ -34,6 +38,7 @@ XtpLoadModule(IN PEFI_FILE_HANDLE BootDir, IN LOADER_MEMORY_TYPE MemoryType, OUT PPECOFF_IMAGE_CONTEXT *ImageContext); +XTCDECL EFI_STATUS BlXtLdrModuleMain(IN EFI_HANDLE ImageHandle, IN PEFI_SYSTEM_TABLE SystemTable); diff --git a/xtldr/modules/xtos/xtos.c b/xtldr/modules/xtos/xtos.c index b5bb602d..d1d5f879 100644 --- a/xtldr/modules/xtos/xtos.c +++ b/xtldr/modules/xtos/xtos.c @@ -37,6 +37,7 @@ PVOID XtPageMap; * * @since XT 1.0 */ +XTCDECL EFI_STATUS XtBootSystem(IN PXT_BOOT_PROTOCOL_PARAMETERS Parameters) { @@ -164,6 +165,7 @@ XtBootSystem(IN PXT_BOOT_PROTOCOL_PARAMETERS Parameters) * * @since XT 1.0 */ +XTCDECL EFI_STATUS XtpBootSequence(IN PEFI_FILE_HANDLE BootDir, IN PXT_BOOT_PROTOCOL_PARAMETERS Parameters) @@ -251,6 +253,7 @@ XtpBootSequence(IN PEFI_FILE_HANDLE BootDir, * * @since XT 1.0 */ +XTCDECL EFI_STATUS XtpInitializeLoaderBlock(IN PLIST_ENTRY MemoryMappings, IN PVOID *VirtualAddress) @@ -334,6 +337,7 @@ XtpInitializeLoaderBlock(IN PLIST_ENTRY MemoryMappings, * * @since XT 1.0 */ +XTCDECL EFI_STATUS XtpLoadModule(IN PEFI_FILE_HANDLE SystemDir, IN PWCHAR FileName, @@ -407,6 +411,7 @@ XtpLoadModule(IN PEFI_FILE_HANDLE SystemDir, * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlXtLdrModuleMain(IN EFI_HANDLE ImageHandle, IN PEFI_SYSTEM_TABLE SystemTable) diff --git a/xtldr/string.c b/xtldr/string.c index b3a7b81c..be4815fd 100644 --- a/xtldr/string.c +++ b/xtldr/string.c @@ -11,6 +11,7 @@ STATIC PUINT16 HexTable = L"0123456789abcdef"; +XTCDECL INT BlStringCompareInsensitive(IN PUCHAR String1, IN PUCHAR String2) @@ -69,6 +70,7 @@ BlStringCompareInsensitive(IN PUCHAR String1, * * @since XT 1.0 */ +XTCDECL VOID BlStringPrint(IN VOID PutChar(IN USHORT Character), IN PUINT16 Format, @@ -243,6 +245,7 @@ BlStringPrint(IN VOID PutChar(IN USHORT Character), * * @since XT 1.0 */ +XTCDECL VOID BlpStringFormat(IN VOID PutChar(IN USHORT Character), IN PUINT16 Format, @@ -276,6 +279,7 @@ BlpStringFormat(IN VOID PutChar(IN USHORT Character), * * @since XT 1.0 */ +XTCDECL VOID BlpStringPrintSigned32(IN VOID PutChar(IN USHORT Character), IN INT32 Number, @@ -308,6 +312,7 @@ BlpStringPrintSigned32(IN VOID PutChar(IN USHORT Character), * * @since XT 1.0 */ +XTCDECL VOID BlpStringPrintSigned64(IN VOID PutChar(IN USHORT Character), IN INT_PTR Number, @@ -343,6 +348,7 @@ BlpStringPrintSigned64(IN VOID PutChar(IN USHORT Character), * * @since XT 1.0 */ +XTCDECL VOID BlpStringPrintUnsigned32(IN VOID PutChar(IN USHORT Character), IN UINT32 Number, @@ -399,6 +405,7 @@ BlpStringPrintUnsigned32(IN VOID PutChar(IN USHORT Character), * * @since XT 1.0 */ +XTCDECL VOID BlpStringPrintUnsigned64(IN VOID PutChar(IN USHORT Character), IN UINT_PTR Number, @@ -446,6 +453,7 @@ BlpStringPrintUnsigned64(IN VOID PutChar(IN USHORT Character), * * @since XT 1.0 */ +XTCDECL UINT64 BlpStringReadPadding(IN PUINT16 *Format) { diff --git a/xtldr/system.c b/xtldr/system.c index 0d7e1d39..52b83da5 100644 --- a/xtldr/system.c +++ b/xtldr/system.c @@ -16,6 +16,7 @@ * * @since XT 1.0 */ +XTCDECL INT_PTR BlEfiGetSecureBootStatus() { @@ -54,6 +55,7 @@ BlEfiGetSecureBootStatus() * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlEfiGetSystemConfigurationTable(IN PEFI_GUID TableGuid, OUT PVOID *Table) diff --git a/xtldr/volume.c b/xtldr/volume.c index bd2f6665..f84a2400 100644 --- a/xtldr/volume.c +++ b/xtldr/volume.c @@ -22,6 +22,7 @@ LIST_ENTRY BlBlockDevices; * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlCloseVolume(IN PEFI_HANDLE VolumeHandle) { @@ -45,6 +46,7 @@ BlCloseVolume(IN PEFI_HANDLE VolumeHandle) * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlEnumerateEfiBlockDevices() { @@ -209,6 +211,7 @@ BlEnumerateEfiBlockDevices() * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlFindVolumeDevicePath(IN PEFI_DEVICE_PATH_PROTOCOL FsHandle, IN CONST PWCHAR FileSystemPath, @@ -292,6 +295,7 @@ BlFindVolumeDevicePath(IN PEFI_DEVICE_PATH_PROTOCOL FsHandle, * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlGetVolumeDevicePath(IN PUCHAR SystemPath, OUT PEFI_DEVICE_PATH_PROTOCOL *DevicePath, @@ -406,6 +410,7 @@ BlGetVolumeDevicePath(IN PUCHAR SystemPath, * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlOpenVolume(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, OUT PEFI_HANDLE DiskHandle, @@ -478,6 +483,7 @@ BlOpenVolume(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlpDiscoverEfiBlockDevices(OUT PLIST_ENTRY BlockDevices) { @@ -581,6 +587,7 @@ BlpDiscoverEfiBlockDevices(OUT PLIST_ENTRY BlockDevices) * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlpDissectVolumeArcPath(IN PUCHAR SystemPath, OUT PUCHAR *ArcName, @@ -736,6 +743,7 @@ BlpDissectVolumeArcPath(IN PUCHAR SystemPath, * * @since XT 1.0 */ +XTCDECL PEFI_DEVICE_PATH_PROTOCOL BlpDuplicateDevicePath(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath) { @@ -793,6 +801,7 @@ BlpDuplicateDevicePath(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath) * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlpFindLastEfiBlockDeviceNode(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, OUT PEFI_DEVICE_PATH_PROTOCOL *LastNode) @@ -838,6 +847,7 @@ BlpFindLastEfiBlockDeviceNode(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, * * @since XT 1.0 */ +XTCDECL BOOLEAN BlpFindParentEfiBlockDevice(IN PLIST_ENTRY BlockDevices, IN PEFI_BLOCK_DEVICE_DATA ChildNode, diff --git a/xtldr/xtldr.c b/xtldr/xtldr.c index 3bb9a8d1..6284d930 100644 --- a/xtldr/xtldr.c +++ b/xtldr/xtldr.c @@ -38,7 +38,9 @@ CPPORT EfiSerialPort; * * @since XT 1.0 */ -VOID BlGetStackPointer(OUT PVOID *Stack) +XTCDECL +VOID +BlGetStackPointer(OUT PVOID *Stack) { *Stack = EfiLoaderStack; } @@ -50,6 +52,7 @@ VOID BlGetStackPointer(OUT PVOID *Stack) * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlLoadEfiModules() { @@ -273,6 +276,7 @@ BlLoadEfiModules() * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlLoadXtSystem() { @@ -329,6 +333,7 @@ BlLoadXtSystem() * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlRegisterXtLoaderProtocol() { @@ -365,6 +370,7 @@ BlRegisterXtLoaderProtocol() * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlStartNewStack() { @@ -380,8 +386,11 @@ BlStartNewStack() /* Infinite bootloader loop */ BlEfiPrint(L"System halted!"); - HlClearInterruptFlag(); - HlHalt(); + for(;;) + { + HlClearInterruptFlag(); + HlHalt(); + } /* Return success */ return STATUS_EFI_SUCCESS; @@ -400,6 +409,7 @@ BlStartNewStack() * * @since XT 1.0 */ +XTCDECL EFI_STATUS BlStartXtLoader(IN EFI_HANDLE ImageHandle, IN PEFI_SYSTEM_TABLE SystemTable) @@ -462,8 +472,11 @@ BlStartXtLoader(IN EFI_HANDLE ImageHandle, /* Infinite bootloader loop */ BlDbgPrint(L"ERROR: Unexpected exception occurred, probably did not create a new stack\n"); BlEfiPrint(L"System halted!"); - HlClearInterruptFlag(); - HlHalt(); + for(;;) + { + HlClearInterruptFlag(); + HlHalt(); + } /* Return success */ return STATUS_EFI_SUCCESS;