From 7a2aca423e7a8093bc1132ae3a6efb4c7d131ac2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Thu, 9 Mar 2023 17:26:38 +0100 Subject: [PATCH] [FREELDR] Move common x64 runtime-specific ASM helpers to a misc file. Co-authored-by: Justin Miller --- boot/freeldr/freeldr/CMakeLists.txt | 1 + boot/freeldr/freeldr/arch/amd64/entry.S | 34 ---------------------- boot/freeldr/freeldr/arch/amd64/misc.S | 38 +++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 34 deletions(-) create mode 100644 boot/freeldr/freeldr/arch/amd64/misc.S diff --git a/boot/freeldr/freeldr/CMakeLists.txt b/boot/freeldr/freeldr/CMakeLists.txt index a295c481202..ad37aa7d200 100644 --- a/boot/freeldr/freeldr/CMakeLists.txt +++ b/boot/freeldr/freeldr/CMakeLists.txt @@ -163,6 +163,7 @@ elseif(ARCH STREQUAL "amd64") list(APPEND FREELDR_COMMON_ASM_SOURCE arch/amd64/entry.S arch/amd64/int386.S + arch/amd64/misc.S arch/amd64/pnpbios.S arch/amd64/linux.S) diff --git a/boot/freeldr/freeldr/arch/amd64/entry.S b/boot/freeldr/freeldr/arch/amd64/entry.S index 758eae4b677..588307984c5 100644 --- a/boot/freeldr/freeldr/arch/amd64/entry.S +++ b/boot/freeldr/freeldr/arch/amd64/entry.S @@ -212,40 +212,6 @@ CallRealMode_return: ///////////////////////////////////////// - -// void __fastfail(unsigned int Code); -PUBLIC __fastfail -__fastfail: - // mov ecx, [rsp + 4] - int HEX(29) - -// void __lgdt(void *Source); -PUBLIC __lgdt -__lgdt: -#ifdef _USE_ML - lgdt fword ptr [rcx] -#else - lgdt cs:[rcx] -#endif - ret - -// void __ltr(unsigned short Source); -PUBLIC __ltr -__ltr: - ltr cx - ret - -// void _sgdt(void *Destination); -PUBLIC __sgdt -__sgdt: -#ifdef _USE_ML - sgdt fword ptr [rcx] -#else - sgdt cs:[rcx] -#endif - ret - - /* 64-bit stack pointer */ stack64: .quad STACKADDR diff --git a/boot/freeldr/freeldr/arch/amd64/misc.S b/boot/freeldr/freeldr/arch/amd64/misc.S new file mode 100644 index 00000000000..877d5fd75cb --- /dev/null +++ b/boot/freeldr/freeldr/arch/amd64/misc.S @@ -0,0 +1,38 @@ + +#include + +.code64 + +// void __fastfail(unsigned int Code); +PUBLIC __fastfail +__fastfail: + // mov ecx, [rsp + 4] + int HEX(29) + +// void __lgdt(void *Source); +PUBLIC __lgdt +__lgdt: +#ifdef _USE_ML + lgdt fword ptr [rcx] +#else + lgdt cs:[rcx] +#endif + ret + +// void __ltr(unsigned short Source); +PUBLIC __ltr +__ltr: + ltr cx + ret + +// void _sgdt(void *Destination); +PUBLIC __sgdt +__sgdt: +#ifdef _USE_ML + sgdt fword ptr [rcx] +#else + sgdt cs:[rcx] +#endif + ret + +END