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

Masahiro Yamada yamada.masahiro at socionext.com
Tue Apr 21 06:30:16 CEST 2015


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)



-- 
Best Regards
Masahiro Yamada


More information about the U-Boot mailing list