[U-Boot] [PATCH 02/10] board_init_f_mem(): Don't require memset()

Simon Glass sjg at chromium.org
Fri Apr 24 06:15:47 CEST 2015


Hi Masahiro,

On 20 April 2015 at 22:30, Masahiro Yamada
<yamada.masahiro at socionext.com> wrote:
> 2015-04-21 12:47 GMT+09:00 Simon Glass <sjg at chromium.org>:
>> Hi Masahiro,
>>
>> On 20 April 2015 at 21:42, Masahiro Yamada
>> <yamada.masahiro at socionext.com> wrote:
>>> Hi Simon,
>>>
>>>
>>>
>>> 2015-04-16 10:14 GMT+09:00 Simon Glass <sjg at chromium.org>:
>>>> Unfortunately memset() is not always available, so provide a substitute when
>>>> needed.
>>>>
>>>> Signed-off-by: Simon Glass <sjg at chromium.org>
>>>> ---
>>>>
>>>>  common/init/global_data.c | 8 ++++++++
>>>>  1 file changed, 8 insertions(+)
>>>>
>>>> diff --git a/common/init/global_data.c b/common/init/global_data.c
>>>> index 2633f0d..ef055c4 100644
>>>> --- a/common/init/global_data.c
>>>> +++ b/common/init/global_data.c
>>>> @@ -21,7 +21,15 @@ ulong board_init_f_mem(ulong top)
>>>>         top -= sizeof(struct global_data);
>>>>         top = ALIGN(top, 16);
>>>>         gd = (struct global_data *)top;
>>>> +#if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBGENERIC_SUPPORT)
>>>>         memset((void *)gd, '\0', sizeof(*gd));
>>>> +#else
>>>> +       int *ptr = (int *)gd;
>>>> +       int *end = (int *)(gd + 1);
>>>> +
>>>> +       while (ptr < end)
>>>> +               *ptr++ = 0;
>>>> +#endif
>>>>
>>>>  #ifdef CONFIG_SYS_MALLOC_F_LEN
>>>>         top -= CONFIG_SYS_MALLOC_F_LEN;
>>>
>>>
>>> This patch implies that all the SPLs should have memset().
>>>
>>> Is it better to build lib/ unconditionally?
>>> I posted a patch to do so.
>>>
>>> Please consider to use it as a prerequisite
>>> for cleaning up 01/10  and 02/10.
>>
>> That would be better I think - how did you manage it? I cannot see the
>> patch you are referring to.
>
> It is under moderation because of too many recipients.
> (I think you have already received it because you were listed in CC.)
>
> Please wait until it is approved.
>
>
>> Although what about if SPL is very close
>> to the maximum size and adding memset() makes it too large? I suppose
>> in that case we would get a build error and notice the problem?
>
> Buildman-test passed, but I am not sure about run-test.
>
> For those boards that define CONFIG_SPL_MAX_SIZE,
> CONFIG_SPL_MAX_FOOTPRINT etc., we should notice the problem at the
> build time.  (and it did not occur.)
>
> I'd like to encourage the board maintainers to do run-test just in case.
> (and also to support such CONFIG options for boards with the limited
> memory footprint)

OK, I tried it out for code size and it looked fine. I will see if I
can test it on some boards, but I imagine it would be fine.

Regards,
Simon


More information about the U-Boot mailing list