01 Nov, 2019

1 commit


31 Oct, 2019

1 commit

  • Add a simple implementation of this function, to allow logging to be
    enabled in the SPL or TPL for systems that rely on the tiny printf()
    implementation.

    To keep the code size small,

    - The function is built only when logging is enabled, as it
    (currently) is not needed otherwise; and
    - Like the existing implementation of snprintf(), its buffer-size
    parameter is ignored.

    Signed-off-by: Simon South

    Simon South
     

28 Oct, 2019

3 commits


07 May, 2018

1 commit

  • When U-Boot started using SPDX tags we were among the early adopters and
    there weren't a lot of other examples to borrow from. So we picked the
    area of the file that usually had a full license text and replaced it
    with an appropriate SPDX-License-Identifier: entry. Since then, the
    Linux Kernel has adopted SPDX tags and they place it as the very first
    line in a file (except where shebangs are used, then it's second line)
    and with slightly different comment styles than us.

    In part due to community overlap, in part due to better tag visibility
    and in part for other minor reasons, switch over to that style.

    This commit changes all instances where we have a single declared
    license in the tag as both the before and after are identical in tag
    contents. There's also a few places where I found we did not have a tag
    and have introduced one.

    Signed-off-by: Tom Rini

    Tom Rini
     

29 Apr, 2018

2 commits


13 Apr, 2017

1 commit

  • Add support for %p, %pa[p], %pM, %pm and %pI4 formats to tiny-printf.
    %pM and %pI4 are widely used by SPL networking stack and is required if
    networking support is desired in SPL.
    %p, %pa and %pap are mostly used by debug prints and hence supported
    only when DEBUG is enabled.

    Before this patch:
    $ size spl/u-boot-spl
    text data bss dec hex filename
    99325 4899 218584 322808 4ecf8 spl/u-boot-spl

    After this patch (with CONFIG_SPL_NET_SUPPORT):
    $ size spl/u-boot-spl
    text data bss dec hex filename
    99666 4899 218584 323149 4ee4d spl/u-boot-spl

    So, this patch adds ~350 bytes to code size.

    If CONFIG_SPL_NET_SUPPORT is not enabled, this adds ~25 bytes.

    If CONFIG_USE_TINY_PRINTF is disabled then:
    $ size spl/u-boot-spl
    text data bss dec hex filename
    101116 4899 218584 324599 4f3f7 spl/u-boot-spl

    So, there is still ~1.4K space saved even with support for %pM/%pI4.

    Compiler used is to build is:
    arm-linux-gnueabihf-gcc (Linaro GCC 6.2-2016.11) 6.2.1 20161016

    Signed-off-by: Vignesh R
    Reviewed-by: Tom Rini
    Reviewed-by: Simon Glass

    Vignesh R
     

15 Mar, 2017

1 commit


04 Jan, 2017

2 commits

  • tiny-printf does not know about the "-" modifier, which aligns numbers.
    This is used by some SPL code, but as it's purely cosmetical, we just
    ignore this modifier here to avoid changing correct printf strings.

    Signed-off-by: Andre Przywara
    Reviewed-by: Simon Glass
    Reviewed-by: Jagan Teki

    Andre Przywara
     
  • tiny-printf does not know about the "l" modifier so far, which breaks
    the crash dump on AArch64, because it uses %lx to print the registers.
    Add an easy way of handling longs correctly.

    Using a relatively decent compiler (GCC 5.3.0) this does _not_ increase
    the code size of tiny-printf.o for 32-bit builds (where long and int
    are actually the same), actually it looses three (ARM Thumb2) instructions
    from the actual SPL (numbers for orangepi_plus_defconfig):
    text data bss dec hex filename
    758 0 0 758 2f6 spl/lib/tiny-printf.o before
    18839 488 232 19559 4c67 spl/u-boot-spl before
    758 0 0 758 2f6 spl/lib/tiny-printf.o after
    18833 488 232 19553 4c61 spl/u-boot-spl after

    This adds some substantial amount of code to a 64-bit build, though:
    (taken after a later commit, which enables the ARM64 SPL build for sunxi)
    text data bss dec hex filename
    1542 0 0 1542 606 spl/lib/tiny-printf.o before
    25830 392 360 26582 67d6 spl/u-boot-spl before
    1758 0 0 1758 6de spl/lib/tiny-printf.o after
    26040 392 360 26792 68a8 spl/u-boot-spl after

    Signed-off-by: Andre Przywara
    Reviewed-by: Simon Glass
    Reviewed-by: Jagan Teki

    Andre Przywara
     

09 Aug, 2016

1 commit

  • We can pass all the variables down to the functions that need them, and
    then everything is on the stack. This is safer than using the data section.

    At least on firefly-rk3288, the code size is the same and the data size is
    12 bytes smaller:

    before:
    18865 2636 40 21541 5425 b/firefly-rk3288/spl/u-boot-spl
    after:
    18865 2624 40 21529 5419 b/firefly-rk3288/spl/u-boot-spl

    Signed-off-by: Simon Glass
    Reviewed-by: Tom Rini
    Reviewed-by: Stefan Roese

    Simon Glass
     

15 Jul, 2016

1 commit

  • At present assert() is not supported with tiny-printf, so when DEBUG is
    enabled a build error is generated for each assert().

    Add an __assert_fail() function to correct this. It prints a message and
    then hangs.

    Signed-off-by: Simon Glass

    Simon Glass
     

09 Jul, 2016

1 commit

  • As printf calls may be executed quite early, we should avoid using any
    BSS stored variables, since some boards put BSS in DRAM, which may not
    have been initialised yet.
    Explicitly mark those "static global" variables as belonging to the
    .data section, to keep tiny-printf clear of any BSS usage.

    Signed-off-by: Andre Przywara

    Andre Przywara
     

21 Jun, 2016

1 commit


10 Jun, 2016

1 commit

  • This current code passes the variable arguments list to sprintf(). This is
    not correct. Fix it by calling _vprintf() directly.

    This makes firefly-rk3288 boot again.

    Fixes: abeb272 ("tiny-printf: Support snprintf()")
    Reviewed-by: Stefan Roese
    Acked-by: Marek Vasut
    Signed-off-by: Simon Glass

    Simon Glass
     

03 Jun, 2016

1 commit

  • Add a simple version of this function for SPL. It does not check the buffer
    size as this would add to the code size.

    Signed-off-by: Marek Vasut
    Cc: Simon Glass
    Cc: Stefan Roese
    Cc: Tom Rini
    Cc: lesne@alse-fr.com
    Reviewed-by: Tom Rini
    Reviewed-by: Sylvain Lesne
    Tested-by: Sylvain Lesne

    Marek Vasut
     

27 May, 2016

2 commits


21 Jan, 2016

2 commits


14 Dec, 2015

1 commit


23 Nov, 2015

2 commits

  • With this patch now, the tiny printf() function also supports numbers
    bigger than 0xffff. Additionally the code is simplified a bit and
    some static variables are moved to function parameters. Also the
    upper case hex variable output support is removed, as its not really
    needed in this simple printf version. And removing it reduces the
    complexity and the code size again a bit.

    Here the new numbers, again on the db-mv784mp-gp (Armada XP):

    Without this patch:
    56542 18536 1956 77034 12cea ./spl/u-boot-spl

    With this patch:
    56446 18536 1936 76918 12c76 ./spl/u-boot-spl

    Signed-off-by: Stefan Roese
    Cc: Simon Glass
    Cc: Hans de Goede
    Cc: Tom Rini
    Cc: Albert Aribaud

    Stefan Roese
     
  • This patch adds a small printf() version that supports all basic formats.
    Its intented to be used in U-Boot SPL versions on platforms with very
    limited internal RAM sizes.

    To enable it, just define CONFIG_USE_TINY_PRINTF in your defconfig. This
    will result in the SPL using this tiny function and the main U-Boot
    still using the full-blown printf() function.

    This code was copied from:
    http://www.sparetimelabs.com/printfrevisited
    With mostly only coding style related changes so that its checkpatch
    clean.

    The size reduction is about 2.5KiB. Here a comparison for the db-mv784mp-gp
    (Marvell AXP) SPL:

    Without this patch:
    58963 18536 1928 79427 13643 ./spl/u-boot-spl

    With this patch:
    56542 18536 1956 77034 12cea ./spl/u-boot-spl

    Note:
    To make it possible to compile tiny-printf.c instead of vsprintf.c when
    CONFIG_USE_TINY_PRINTF is defined, the functions printf() and vprintf() are
    moved from common/console.c into vsprintf.c in this patch.

    Signed-off-by: Stefan Roese
    Cc: Simon Glass
    Cc: Hans de Goede
    Cc: Tom Rini
    Cc: Albert Aribaud

    Stefan Roese