From: Simon Glass <sjg@chromium.org>
To: U-Boot Mailing List <u-boot@lists.denx.de>
Cc: Tom Rini <trini@konsulko.com>, Marek Vasut <marex@denx.de>,
Simon Glass <sjg@chromium.org>,
Algapally Santosh Sagar <santoshsagar.algapally@amd.com>,
Ashok Reddy Soma <ashok.reddy.soma@amd.com>,
Heinrich Schuchardt <xypron.glpk@gmx.de>,
Mayuresh Chitale <mchitale@ventanamicro.com>,
Nathan Barrett-Morrison <nathan.morrison@timesys.com>,
Nikhil M Jain <n-jain1@ti.com>,
Ovidiu Panait <ovpanait@gmail.com>,
Roger Quadros <rogerq@kernel.org>
Subject: [PATCH 08/32] spl: Drop the switch() statement for OS selection
Date: Wed, 30 Aug 2023 12:04:39 -0600 [thread overview]
Message-ID: <20230830180524.315916-9-sjg@chromium.org> (raw)
In-Reply-To: <20230830180524.315916-1-sjg@chromium.org>
This code is pretty ugly, with many #ifdefs
There are quite a lot of IH_OS_U_BOOT values so the compiler struggles
to create a jump table here. Also, most of the options are normally
disabled.
Change it to an else...if construct instead. Add an accessor for the
spl_image field behind an #ifdef to avoid needing #ifdef in the C code.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
common/spl/spl.c | 36 ++++++++++--------------------------
include/spl.h | 9 +++++++++
2 files changed, 19 insertions(+), 26 deletions(-)
diff --git a/common/spl/spl.c b/common/spl/spl.c
index 2da5bc0c4f5..f0a90c280da 100644
--- a/common/spl/spl.c
+++ b/common/spl/spl.c
@@ -748,7 +748,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
BOOT_DEVICE_NONE,
};
struct spl_image_info spl_image;
- int ret;
+ int ret, os;
debug(">>" SPL_TPL_PROMPT "board_init_r()\n");
@@ -848,32 +848,21 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
ret);
}
- switch (spl_image.os) {
- case IH_OS_U_BOOT:
+ os = spl_image.os;
+ if (os == IH_OS_U_BOOT) {
debug("Jumping to %s...\n", spl_phase_name(spl_next_phase()));
- break;
-#if CONFIG_IS_ENABLED(ATF)
- case IH_OS_ARM_TRUSTED_FIRMWARE:
+ } else if (CONFIG_IS_ENABLED(ATF) && os == IH_OS_ARM_TRUSTED_FIRMWARE) {
debug("Jumping to U-Boot via ARM Trusted Firmware\n");
- spl_fixup_fdt(spl_image.fdt_addr);
+ spl_fixup_fdt(spl_image_fdt_addr(&spl_image));
spl_invoke_atf(&spl_image);
- break;
-#endif
-#if CONFIG_IS_ENABLED(OPTEE_IMAGE)
- case IH_OS_TEE:
+ } else if (CONFIG_IS_ENABLED(OPTEE_IMAGE) && os == IH_OS_TEE) {
debug("Jumping to U-Boot via OP-TEE\n");
- spl_board_prepare_for_optee(spl_image.fdt_addr);
+ spl_board_prepare_for_optee(spl_image_fdt_addr(&spl_image));
jump_to_image_optee(&spl_image);
- break;
-#endif
-#if CONFIG_IS_ENABLED(OPENSBI)
- case IH_OS_OPENSBI:
+ } else if (CONFIG_IS_ENABLED(OPENSBI) && os == IH_OS_OPENSBI) {
debug("Jumping to U-Boot via RISC-V OpenSBI\n");
spl_invoke_opensbi(&spl_image);
- break;
-#endif
-#if CONFIG_IS_ENABLED(OS_BOOT)
- case IH_OS_LINUX:
+ } else if (CONFIG_IS_ENABLED(OS_BOOT) && os == IH_OS_LINUX) {
debug("Jumping to Linux\n");
if (IS_ENABLED(CONFIG_SPL_SYS_ARGS_ADDR)) {
ulong addr;
@@ -882,14 +871,9 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
CONFIG_SPL_SYS_ARGS_ADDR);
spl_fixup_fdt(map_sysmem(addr, 0));
}
- }
-
-#if defined(CONFIG_SPL_SYS_ARGS_ADDR)
-#endif
spl_board_prepare_for_linux();
jump_to_image_linux(&spl_image);
-#endif
- default:
+ } else {
debug("Unsupported OS image.. Jumping nevertheless..\n");
}
#if CONFIG_VAL(SYS_MALLOC_F_LEN) && !defined(CONFIG_SPL_SYS_MALLOC_SIZE)
diff --git a/include/spl.h b/include/spl.h
index d16cea3ea50..60b55b75195 100644
--- a/include/spl.h
+++ b/include/spl.h
@@ -263,6 +263,15 @@ struct spl_image_info {
#endif
};
+static inline void *spl_image_fdt_addr(struct spl_image_info *info)
+{
+#if CONFIG_IS_ENABLED(LOAD_FIT) || CONFIG_IS_ENABLED(LOAD_FIT_FULL)
+ return info->fdt_addr;
+#else
+ return 0;
+#endif
+}
+
/**
* Information required to load data from a device
*
--
2.42.0.rc2.253.gd59a3bf2b4-goog
next prev parent reply other threads:[~2023-08-30 18:06 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-30 18:04 [PATCH 00/32] spl: Preparation for Universal Payload Simon Glass
2023-08-30 18:04 ` [PATCH 01/32] dm: core: support reading a single indexed u64 value Simon Glass
2023-08-30 18:04 ` [PATCH 02/32] spl: Use CONFIG_SPL... instead of CONFIG_..._SPL_ Simon Glass
2023-08-31 7:37 ` Marcel Ziswiler
2023-08-31 8:42 ` Martyn Welch
2023-08-31 9:22 ` Svyatoslav Ryhel
2023-08-30 18:04 ` [PATCH 03/32] spl: Rename SYS_SPL_ARGS_ADDR to SPL_SYS_ARGS_ADDR Simon Glass
2023-08-30 21:37 ` Tom Rini
2023-08-30 18:04 ` [PATCH 04/32] spl: Avoid #ifdef with CONFIG_SPL_SYS_MALLOC Simon Glass
2023-08-30 21:32 ` Tom Rini
2023-08-30 18:04 ` [PATCH 05/32] spl: mx6: powerpc: Drop the condition on timer_init() Simon Glass
2023-08-31 17:50 ` Tom Rini
2023-09-21 1:03 ` Simon Glass
2023-09-26 11:37 ` Simon Glass
2023-09-26 13:38 ` Christophe Leroy
2023-08-30 18:04 ` [PATCH 06/32] spl: Drop #ifdefs for BOARD_INIT and watchdog Simon Glass
2023-08-30 18:04 ` [PATCH 07/32] spl: Avoid #ifdef with CONFIG_SPL_SYS_ARGS_ADDR Simon Glass
2023-08-30 21:34 ` Tom Rini
2023-08-30 18:04 ` Simon Glass [this message]
2023-08-30 18:04 ` [PATCH 09/32] spl: Avoid an #ifdef when printing gd->malloc_ptr Simon Glass
2023-08-30 21:39 ` Tom Rini
2023-09-21 1:03 ` Simon Glass
2023-09-21 15:35 ` Tom Rini
2023-09-22 18:27 ` Simon Glass
2023-09-22 19:28 ` Tom Rini
2023-09-22 23:06 ` Simon Glass
2023-08-30 18:04 ` [PATCH 10/32] spl: Remove #ifdefs with BOOTSTAGE Simon Glass
2023-08-30 18:04 ` [PATCH 11/32] spl: Rename spl_load_fit_image() to load_simple_fit() Simon Glass
2023-08-30 18:04 ` [PATCH 12/32] spl: Move the full FIT code to spl_fit.c Simon Glass
2023-08-30 18:04 ` [PATCH 13/32] spl: Use the correct FIT_..._PROP constants Simon Glass
2023-08-30 18:04 ` [PATCH 14/32] spl: Move bloblist writing until the image is known Simon Glass
2023-08-30 18:04 ` [PATCH 15/32] dm: core: Reverse the argument order in ofnode_copy_props() Simon Glass
2023-08-30 18:04 ` [PATCH 16/32] dm: core: Ensure we run flattree tests on ofnode Simon Glass
2023-08-30 18:04 ` [PATCH 17/32] dm: core: Tidy up comments in the ofnode tests Simon Glass
2023-08-30 18:04 ` [PATCH 18/32] dm: core: Add a function to create an empty tree Simon Glass
2023-08-30 18:04 ` [PATCH 19/32] dm: core: Add a way to copy a node Simon Glass
2023-08-30 18:04 ` [PATCH 20/32] dm: core: Add a way to delete " Simon Glass
2023-08-30 18:04 ` [PATCH 21/32] dm: core: Add a way to convert a devicetree to a dtb Simon Glass
2023-08-30 18:04 ` [PATCH 22/32] dm: core: Support writing a boolean Simon Glass
2023-08-30 18:04 ` [PATCH 23/32] dm: core: Support writing a 64-bit value Simon Glass
2023-08-30 18:04 ` [PATCH 24/32] dm: core: Add tests for oftree_path() Simon Glass
2023-08-30 18:04 ` [PATCH 25/32] sandbox: Move reading the RAM buffer into a better place Simon Glass
2023-08-30 18:04 ` [PATCH 26/32] sandbox: Init the EC properly even if no state file is available Simon Glass
2023-08-30 18:04 ` [PATCH 27/32] sandbox: Only read the state if we have a state file Simon Glass
2023-08-30 18:04 ` [PATCH 28/32] sandbox: Move the bloblist down a little in memory Simon Glass
2023-08-30 18:05 ` [PATCH 29/32] bloblist: Support initing from multiple places Simon Glass
2023-08-30 18:05 ` [PATCH 30/32] fdt: Allow the devicetree to come from a bloblist Simon Glass
2023-08-31 7:06 ` Ilias Apalodimas
2023-08-31 19:02 ` Simon Glass
2023-09-01 7:49 ` Ilias Apalodimas
2023-09-01 15:51 ` Simon Glass
2023-09-04 9:30 ` Ilias Apalodimas
2023-09-10 19:13 ` Simon Glass
2023-09-11 6:17 ` Ilias Apalodimas
2023-09-11 6:38 ` Michal Simek
2023-09-11 7:56 ` Ilias Apalodimas
2023-09-11 10:58 ` Michal Simek
2023-09-11 11:47 ` Ilias Apalodimas
2023-09-21 1:03 ` Simon Glass
2023-09-25 10:18 ` Ilias Apalodimas
2023-10-18 15:26 ` Simon Glass
2023-10-20 8:21 ` Ilias Apalodimas
2023-10-20 13:59 ` Tom Rini
2023-10-20 15:13 ` Simon Glass
2023-08-30 18:05 ` [PATCH 31/32] command: Include a required header in command.h Simon Glass
2023-08-30 18:05 ` [PATCH 32/32] pci: serial: Support reading PCI-register size with base Simon Glass
2023-08-30 18:14 ` Pali Rohár
2023-08-30 18:17 ` Tom Rini
2023-08-30 18:39 ` Pali Rohár
2023-08-30 19:04 ` Tom Rini
2023-08-30 19:10 ` Pali Rohár
2023-08-30 19:41 ` Tom Rini
2023-08-30 19:44 ` Pali Rohár
2023-08-30 20:51 ` Pali Rohár
2023-08-30 21:08 ` Tom Rini
2023-08-30 21:13 ` Pali Rohár
2023-08-30 21:26 ` Tom Rini
2023-08-30 21:29 ` Pali Rohár
2023-08-30 21:42 ` Tom Rini
2023-09-03 20:36 ` Pali Rohár
2023-09-04 19:55 ` Tom Rini
2023-09-04 20:07 ` Pali Rohár
2023-09-03 20:39 ` Pali Rohár
2023-09-04 20:15 ` Pali Rohár
2023-09-04 20:27 ` Tom Rini
2023-09-04 21:07 ` Pali Rohár
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230830180524.315916-9-sjg@chromium.org \
--to=sjg@chromium.org \
--cc=ashok.reddy.soma@amd.com \
--cc=marex@denx.de \
--cc=mchitale@ventanamicro.com \
--cc=n-jain1@ti.com \
--cc=nathan.morrison@timesys.com \
--cc=ovpanait@gmail.com \
--cc=rogerq@kernel.org \
--cc=santoshsagar.algapally@amd.com \
--cc=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
--cc=xypron.glpk@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.