[PATCH 05/10] board_f: mips: Factor out mips-specific bdinfo setup

Heinrich Schuchardt xypron.debian at gmx.de
Thu Jul 9 14:27:46 CEST 2020


On 09.07.20 12:27, Ovidiu Panait wrote:
> 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.panait at 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:

You could add the following helper macro to include/linux/kconfig.h

#define config_defined(cfg) _config_defined(cfg, #cfg)
#define _config_defined(a1, a2) !!__builtin_strcmp(#a1, a2)

config_defined(cfg) evaluates to true if:
* cfg is defined and
* cfg is not defined as cfg.

As long as optimization is switch on __builtin_strcmp() is evaluated at
compile time.

Best regards

Heinrich

>
> $ 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,
>>>



More information about the U-Boot mailing list