diff options
author | Subrata Banik <subratabanik@google.com> | 2024-04-30 05:12:21 +0000 |
---|---|---|
committer | Subrata Banik <subratabanik@google.com> | 2024-05-04 16:51:44 +0000 |
commit | bb937c8775cc3cd98767bb7e465459101b163124 (patch) | |
tree | 2f93f35b3ddb878d831dd6dff20277af17d2b5b2 | |
parent | e3eeba6aaeccc57a5d554e3ce727ae1b1d99d505 (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.S | 2 | ||||
-rw-r--r-- | payloads/libpayload/arch/x86/main.c | 3 | ||||
-rw-r--r-- | 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 <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) |