From 5cf3dbabb0cd1ada0d1ba615c74a21bd5fbda8f1 Mon Sep 17 00:00:00 2001 From: Justin Miller Date: Thu, 12 Oct 2023 18:41:20 -0700 Subject: [PATCH] [FREELOADER] Fix build with full UEFI support --- .../freeldr/freeldr/arch/uefi/arm64/uefiasm.S | 20 +++++++++++++++++++ boot/freeldr/freeldr/arch/uefi/uefihw.c | 8 +++++--- boot/freeldr/freeldr/arch/uefi/uefildr.c | 1 + boot/freeldr/freeldr/uefi.cmake | 2 ++ 4 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 boot/freeldr/freeldr/arch/uefi/arm64/uefiasm.S diff --git a/boot/freeldr/freeldr/arch/uefi/arm64/uefiasm.S b/boot/freeldr/freeldr/arch/uefi/arm64/uefiasm.S new file mode 100644 index 00000000000..7ba4c0796a8 --- /dev/null +++ b/boot/freeldr/freeldr/arch/uefi/arm64/uefiasm.S @@ -0,0 +1,20 @@ + #include + + EXTERN BasicStack + EXTERN UefiExitBootServices + EXTERN ExecuteLoaderCleanly + + NESTED_ENTRY _changestack + PROLOG_END _changestack + ldr x1, =BasicStack + mov sp, x1 + b ExecuteLoaderCleanly + NESTED_END _changestack + + NESTED_ENTRY _exituefi + PROLOG_END _exituefi + b UefiExitBootServices + ret + NESTED_END _exituefi + + END \ No newline at end of file diff --git a/boot/freeldr/freeldr/arch/uefi/uefihw.c b/boot/freeldr/freeldr/arch/uefi/uefihw.c index 8dcf9602274..76a2c30f34b 100644 --- a/boot/freeldr/freeldr/arch/uefi/uefihw.c +++ b/boot/freeldr/freeldr/arch/uefi/uefihw.c @@ -23,7 +23,7 @@ extern UINT32 FreeldrDescCount; BOOLEAN AcpiPresent = FALSE; /* FUNCTIONS *****************************************************************/ - +#if 0 static PRSDP_DESCRIPTOR FindAcpiBios(VOID) @@ -122,11 +122,13 @@ DetectAcpiBios(PCONFIGURATION_COMPONENT_DATA SystemKey, ULONG *BusNumber) } } +#endif + PCONFIGURATION_COMPONENT_DATA UefiHwDetect(VOID) { PCONFIGURATION_COMPONENT_DATA SystemKey; - ULONG BusNumber = 0; + //ULONG BusNumber = 0; TRACE("DetectHardware()\n"); @@ -142,7 +144,7 @@ UefiHwDetect(VOID) #endif /* Detect ACPI */ - DetectAcpiBios(SystemKey, &BusNumber); + // DetectAcpiBios(SystemKey, &BusNumber); TRACE("DetectHardware() Done\n"); return SystemKey; diff --git a/boot/freeldr/freeldr/arch/uefi/uefildr.c b/boot/freeldr/freeldr/arch/uefi/uefildr.c index 9f801d978a8..726e81bde24 100644 --- a/boot/freeldr/freeldr/arch/uefi/uefildr.c +++ b/boot/freeldr/freeldr/arch/uefi/uefildr.c @@ -18,6 +18,7 @@ PVOID UefiServiceStack; PVOID BasicStack; void _changestack(VOID); +VOID __cdecl Reboot(VOID); /* FUNCTIONS ******************************************************************/ diff --git a/boot/freeldr/freeldr/uefi.cmake b/boot/freeldr/freeldr/uefi.cmake index 6586838bb7b..82cb1aedc7c 100644 --- a/boot/freeldr/freeldr/uefi.cmake +++ b/boot/freeldr/freeldr/uefi.cmake @@ -40,6 +40,8 @@ elseif(ARCH STREQUAL "arm") elseif(ARCH STREQUAL "arm64") list(APPEND UEFILDR_ARC_SOURCE arch/arm64/mach.c) + list(APPEND UEFILDR_COMMON_ASM_SOURCE + arch/uefi/arm64/uefiasm.S) #TBD else() #TBD