summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSubrata Banik <subratabanik@google.com>2024-04-30 05:12:21 +0000
committerSubrata Banik <subratabanik@google.com>2024-05-04 16:51:44 +0000
commitbb937c8775cc3cd98767bb7e465459101b163124 (patch)
tree2f93f35b3ddb878d831dd6dff20277af17d2b5b2
parente3eeba6aaeccc57a5d554e3ce727ae1b1d99d505 (diff)
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 <subratabanik@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/82040 Reviewed-by: Kapil Porwal <kapilporwal@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com> Reviewed-by: Dinesh Gehlot <digehlot@google.com>
-rw-r--r--payloads/libpayload/arch/x86/head.S2
-rw-r--r--payloads/libpayload/arch/x86/main.c3
-rw-r--r--payloads/libpayload/arch/x86/multiboot.c4
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 <libpayload.h>
#include <arch/apic.h>
-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 <libpayload.h>
#include <multiboot_tables.h>
-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)