[U-Boot] [PATCH] arm: Don't use printf() in SPL builds

Simon Glass sjg at chromium.org
Thu Mar 15 06:23:50 CET 2012


Hi Heiko,

On Wed, Mar 14, 2012 at 10:13 PM, Heiko Schocher <hs at denx.de> wrote:
> Hello Simon,
>
> Simon Glass wrote:
>> Hi Sughosh,
>>
>> On Sat, Mar 10, 2012 at 12:33 AM, Sughosh Ganu <urwithsughosh at gmail.com> wrote:
>>> hi Simon,
>>>
>>> On Sat Mar 03, 2012 at 12:33:15PM -0800, Simon Glass wrote:
>>>> raise() likes to call printf() if it is available, but in SPL builds it
>>>> either is not available, or adds a large chunk to the resulting image
>>>> size.
>>>>
>>>> So don't call it even if it is available.
>>>>
>>>> This change reduces SPL size from 10KB to 6.3KB on hawkboard, for
>>>> example, using generic relocation.
>>>>
>>>> Signed-off-by: Simon Glass <sjg at chromium.org>
>>>> ---
>>>>  arch/arm/lib/eabi_compat.c |    3 ++-
>>>>  1 files changed, 2 insertions(+), 1 deletions(-)
>>>>
>>>> diff --git a/arch/arm/lib/eabi_compat.c b/arch/arm/lib/eabi_compat.c
>>>> index 2028dbd..44eebe0 100644
>>>> --- a/arch/arm/lib/eabi_compat.c
>>>> +++ b/arch/arm/lib/eabi_compat.c
>>>> @@ -13,7 +13,8 @@
>>>>
>>>>  int raise (int signum)
>>>>  {
>>>> -#if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT)
>>>> +     /* Even if printf() is available, it's large. Punt it for SPL builds */
>>>> +#if !defined(CONFIG_SPL_BUILD)
>>>>       printf("raise: Signal # %d caught\n", signum);
>>>>  #endif
>>>   I tested with this change on hawkboard, and after applying this
>>>   change, the spl size increase is 412 bytes against the 4k increase
>>>   that we get with libcommon changes introduced. So this patch works
>>>   fine.
>>
>> OK good.
>>
>>>   Can you please check if libcommon support is needed for the
>>>   cam_enc_4xx board -- your relocation patch series did not add
>>>   CONFIG_SPL_LIBCOMMON_SUPPORT to this board. This will affect my
>>>   patch to initialise gd and bd objects for hawkboard. Please let me
>>>   know, and i will spin a patch accordingly.
>>
>> Yes I think this board needs both of these:
>>
>> #define CONFIG_SPL_LIBCOMMON_SUPPORT
>> #define CONFIG_SPL_LIBGENERIC_SUPPORT
>
> I posted a patch, which adds CONFIG_SPL_LIBGENERIC_SUPPORT, see
>
> http://patchwork.ozlabs.org/patch/145280/
>
> for this board. Build/works fine without CONFIG_SPL_LIBCOMMON_SUPPORT
> maybe I miss something?
>
> Builded with ELDK-4.2 and ELDK-5.1 based on commit:
>
> commit e37ae40e9dec9af417c19de72f76becebf160730
> Author: Stephen Warren <swarren at nvidia.com>
> Date:   Tue Nov 1 06:28:21 2011 +0000
>
>    image: Support FDTs already loaded at their load address

Yes I am talking about building with the generic relocation series
included, so a slightly different point. With that I get:

$ make -j8 -s
Generating include/generated/asm-offsets.h
arch/arm/cpu/arm926ejs/davinci/libdavinci.o: In function `board_init_f':
/home/sjg/trunk/src/third_party/u-boot/files/arch/arm/cpu/arm926ejs/davinci/spl.c:75:
undefined reference to `relocate_code'
make[1]: *** [/home/sjg/trunk/src/third_party/u-boot/files/spl/u-boot-spl]
Error 1
make: *** [spl/u-boot-spl.bin] Error 2
make: *** Waiting for unfinished jobs....

Regards,
Simon

>
> bye,
> Heiko
> --
> DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany


More information about the U-Boot mailing list