From bb937c8775cc3cd98767bb7e465459101b163124 Mon Sep 17 00:00:00 2001 From: Subrata Banik Date: Tue, 30 Apr 2024 05:12:21 +0000 Subject: [PATCH] libpayload: Save EAX and EBX only for multiboot payloads When CONFIG_LP_MULTIBOOT is enabled, save the values of EAX and EBX passed from the bootloader. This information can be useful for multiboot payloads feature alone. Change-Id: I98c2cd00206ee48eb0fc67edd9533032bcf3e5eb Signed-off-by: Subrata Banik Reviewed-on: https://review.coreboot.org/c/coreboot/+/82040 Reviewed-by: Kapil Porwal Tested-by: build bot (Jenkins) Reviewed-by: Lean Sheng Tan Reviewed-by: Dinesh Gehlot --- payloads/libpayload/arch/x86/head.S | 2 ++ payloads/libpayload/arch/x86/main.c | 3 --- payloads/libpayload/arch/x86/multiboot.c | 4 ++-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/payloads/libpayload/arch/x86/head.S b/payloads/libpayload/arch/x86/head.S index 1e0e4a0d3d..2bac700bda 100644 --- a/payloads/libpayload/arch/x86/head.S +++ b/payloads/libpayload/arch/x86/head.S @@ -63,9 +63,11 @@ _init: /* No interrupts, please. */ cli +#if CONFIG(LP_MULTIBOOT) /* Store EAX and EBX */ movl %eax, loader_eax movl %ebx, loader_ebx +#endif /* save pointer to coreboot tables */ movl 4(%esp), %eax diff --git a/payloads/libpayload/arch/x86/main.c b/payloads/libpayload/arch/x86/main.c index 288f474dfc..a7c6b0141b 100644 --- a/payloads/libpayload/arch/x86/main.c +++ b/payloads/libpayload/arch/x86/main.c @@ -30,9 +30,6 @@ #include #include -unsigned long loader_eax; /**< The value of EAX passed from the loader */ -unsigned long loader_ebx; /**< The value of EBX passed from the loader */ - int main_argc; /**< The argc value to pass to main() */ /** The argv value to pass to main() */ diff --git a/payloads/libpayload/arch/x86/multiboot.c b/payloads/libpayload/arch/x86/multiboot.c index 26dc4f8cd0..ed7886238e 100644 --- a/payloads/libpayload/arch/x86/multiboot.c +++ b/payloads/libpayload/arch/x86/multiboot.c @@ -30,8 +30,8 @@ #include #include -extern unsigned long loader_eax; -extern unsigned long loader_ebx; +unsigned long loader_eax; /* The value of EAX passed from the loader */ +unsigned long loader_ebx; /* The value of EBX passed from the loader */ static int mb_add_memrange(struct sysinfo_t *info, unsigned long long base, unsigned long long size, unsigned int type)