Hi,
On 09.07.2020 12:15, Heinrich Schuchardt wrote:
On 09.07.20 10:04, Ovidiu Panait wrote:
Factor out mips-specific bdinfo setup from generic init sequence to
arch_setup_bdinfo in arch/mips/lib/boot.c.
Signed-off-by: Ovidiu Panait <ovidiu.pan...@windriver.com>
---
arch/mips/lib/boot.c | 18 ++++++++++++++++++
common/board_f.c | 25 +------------------------
2 files changed, 19 insertions(+), 24 deletions(-)
diff --git a/arch/mips/lib/boot.c b/arch/mips/lib/boot.c
index db862f6379..b3a48ce10f 100644
--- a/arch/mips/lib/boot.c
+++ b/arch/mips/lib/boot.c
@@ -9,6 +9,24 @@
DECLARE_GLOBAL_DATA_PTR;
+int arch_setup_bdinfo(void)
+{
+ bd_t *bd = gd->bd;
+
+ /*
+ * Save local variables to board info struct
+ */
+ bd->bi_memstart = CONFIG_SYS_SDRAM_BASE; /* start of memory */
+ bd->bi_memsize = gd->ram_size; /* size in bytes */
+
+#ifdef CONFIG_SYS_SRAM_BASE
We want to get rid of #ifdef where possible. So it is preferable to write:
if IS_ENABLED(CONFIG_SYS_SRAM_BASE) {
One benefit is that static code analysis will consider the code.
Best regards
Heinrich
My understanding is that IS_ENABLED() only works with with boolean and
tristate options.
In this case, CONFIG_SYS_SRAM_BASE is a hex value:
include/configs/pic32mzdask.h:22:#define CONFIG_SYS_SRAM_BASE 0x80000000
Switching to IS_ENABLED() produces the following build errors for qemu mips:
$ git diff
diff --git a/arch/mips/lib/boot.c b/arch/mips/lib/boot.c
index b3a48ce10f..aa047335ec 100644
--- a/arch/mips/lib/boot.c
+++ b/arch/mips/lib/boot.c
@@ -19,10 +19,10 @@ int arch_setup_bdinfo(void)
bd->bi_memstart = CONFIG_SYS_SDRAM_BASE; /* start of
memory */
bd->bi_memsize = gd->ram_size; /* size in bytes */
-#ifdef CONFIG_SYS_SRAM_BASE
- bd->bi_sramstart = CONFIG_SYS_SRAM_BASE; /* start of SRAM */
- bd->bi_sramsize = CONFIG_SYS_SRAM_SIZE; /* size of SRAM */
-#endif
+ if (IS_ENABLED(CONFIG_SYS_SRAM_BASE)) {
+ bd->bi_sramstart = CONFIG_SYS_SRAM_BASE; /* start of SRAM */
+ bd->bi_sramsize = CONFIG_SYS_SRAM_SIZE; /* size of SRAM */
+ }
return 0;
}
$ make
...
arch/mips/lib/boot.c: In function 'arch_setup_bdinfo':
CC common/init/board_init.o
arch/mips/lib/boot.c:23:22: error: 'CONFIG_SYS_SRAM_BASE' undeclared
(first use in this function); did you mean 'CONFIG_SYS_SDRAM_BASE'?
23 | bd->bi_sramstart = CONFIG_SYS_SRAM_BASE; /* start of SRAM */
| ^~~~~~~~~~~~~~~~~~~~
| CONFIG_SYS_SDRAM_BASE
arch/mips/lib/boot.c:23:22: note: each undeclared identifier is reported
only once for each function it appears in
arch/mips/lib/boot.c:24:21: error: 'CONFIG_SYS_SRAM_SIZE' undeclared
(first use in this function); did you mean 'CONFIG_SYS_SDRAM_BASE'?
24 | bd->bi_sramsize = CONFIG_SYS_SRAM_SIZE; /* size of SRAM */
| ^~~~~~~~~~~~~~~~~~~~
| CONFIG_SYS_SDRAM_BASE
Thanks,
Ovidiu
+ bd->bi_sramstart = CONFIG_SYS_SRAM_BASE; /* start of SRAM */
+ bd->bi_sramsize = CONFIG_SYS_SRAM_SIZE; /* size of SRAM */
+#endif
+
+ return 0;
+}
+
unsigned long do_go_exec(ulong (*entry)(int, char * const []),
int argc, char * const argv[])
{
diff --git a/common/board_f.c b/common/board_f.c
index 9bfcd6b236..fd7e6a17ad 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -602,26 +602,6 @@ __weak int arch_setup_bdinfo(void)
return 0;
}
-#if defined(CONFIG_MIPS)
-static int setup_board_part1(void)
-{
- bd_t *bd = gd->bd;
-
- /*
- * Save local variables to board info struct
- */
- bd->bi_memstart = CONFIG_SYS_SDRAM_BASE; /* start of memory */
- bd->bi_memsize = gd->ram_size; /* size in bytes */
-
-#ifdef CONFIG_SYS_SRAM_BASE
- bd->bi_sramstart = CONFIG_SYS_SRAM_BASE; /* start of SRAM */
- bd->bi_sramsize = CONFIG_SYS_SRAM_SIZE; /* size of SRAM */
-#endif
-
- return 0;
-}
-#endif
-
#ifdef CONFIG_POST
static int init_post(void)
{
@@ -942,11 +922,8 @@ static const init_fnc_t init_sequence_f[] = {
reserve_stacks,
dram_init_banksize,
show_dram_config,
- arch_setup_bdinfo,
-#if defined(CONFIG_MIPS)
- setup_board_part1,
INIT_FUNC_WATCHDOG_RESET
-#endif
+ arch_setup_bdinfo,
display_new_sp,
#ifdef CONFIG_OF_BOARD_FIXUP
fix_fdt,