11 Apr, 2014

1 commit

  • In some use cases, SPL linker script was not updated even when
    it should be.

    For instance,

    $ make tricoder_config all
    [ build complete ]
    ... modify include/configs/tricoder.h
    $ make

    spl/u-boot-spl.lds should be updated in this case, but it wasn't.

    To fix this problem, linker scripts generation should be handled
    by $(call if_changed_dep,...) rather than by $(call if_changed,...).

    Signed-off-by: Masahiro Yamada
    Reported-by: Andreas Bießmann
    Tested-by: Andreas Bießmann

    Masahiro Yamada
     

29 Mar, 2014

1 commit

  • U-Boot uses the 'mkimage' tool to produce various image types,
    not only uImage image type. Rename the invocation name from
    UIMAGE to MKIMAGE.

    The following command was used to do the replacement:
    git grep 'quiet_cmd_mkimage.* = UIMAGE' | cut -d : -f 1 | \
    xargs -i sed -i "s@\(quiet_cmd_mkimage\)\(.*\) = UIMAGE @\1\2 = MKIMAGE@" {}

    Signed-off-by: Marek Vasut
    Cc: Tom Rini
    Cc: Masahiro Yamada
    Acked-by: Masahiro Yamada

    Marek Vasut
     

13 Mar, 2014

3 commits

  • Prior to Kbuild, $(OBJTREE) was used for pointing to the
    top of build directory with absolute path.

    In Kbuild style, $(objtree) is used instead.
    This commit renames OBJTREE to objtree and delete the
    defition of OBJTREE.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Prior to Kbuild, $(TOPDIR) or $(SRCTREE) was used for
    pointing to the top of source directory.
    (No difference between the two.)

    In Kbuild style, $(srctree) is used for instead.
    This commit renames SRCTREE to srctree and deletes the
    defition of SRCTREE.

    Note that SRCTREE in scripts/kernel-doc, scripts/docproc.c,
    doc/DocBook/Makefile should be keep.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Prior to Kbuild, $(TOPDIR) or $(SRCTREE) was used for
    pointing to the top of source directory.
    (No difference between the two.)

    In Kbuild style, $(srctree) is used instead.
    This commit renames TOPDIR to srctree and delete the
    defition of TOPDIR.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

07 Mar, 2014

2 commits

  • Kbuild brought about many advantages for us but a significant
    performance regression was reported by Simon Glass.

    After some discussions and analysis, it turned out
    its main cause is in $(call cc-option,...).

    Historically, U-Boot parses all config.mk
    (arch/*/config.mk and board/*/config.mk)
    every time descending into subdirectories.
    That means cc-options are evaluated over and over again.

    $(call cc-option,...) is useful but costly.
    So we want to evaluate them only in ./Makefile
    and spl/Makefile and export compiler flags.

    This commit changes the build system as follows:

    - Modify scripts/Makefile.build to not include config.mk
    Instead, add $(PLATFORM_CPPFLAGS) to asflags-y, ccflags-y,
    cppflags-y.

    - Export many variables
    Going forward, Kbuild will not parse config.mk files
    when it descends into subdirectories.
    If we want to set variables in config.mk and use them
    in subdirectories, they must be exported.

    This is the list of variables to get exported:
    PLATFORM_CPPFLAGS
    CPUDIR
    BOARDDIR
    OBJCOPYFLAGS
    LDFLAGS
    LDFLAGS_FINAL
    (used in nand_spl/board/*/*/Makefile)
    CONFIG_STANDALONE_LOAD_ADDR
    (used in examples/standalone/Makefile)
    SYM_PREFIX
    (used in examples/standalone/Makefile)
    RELFLAGS
    (used in examples/standalone/Makefile)

    - Delete CPPFLAGS
    This variable has been replaced with PLATFORM_CPPFLAGS

    - Copy gcclibdir from example/standalone/Makefile
    to arch/sparc/config.mk
    The reference in CONFIG_STANDALONE_LOAD_ADDR must be
    resolved before it is exported.

    Signed-off-by: Masahiro Yamada
    Reported-by: Simon Glass
    Acked-by: Simon Glass
    Tested-by: Simon Glass [on Sandbox]
    Tested-by: Stephen Warren [on Tegra]

    Masahiro Yamada
     
  • Before this commit, USE_PRIVATE_LIBGCC was defined in
    arch-specific config.mk and referenced in
    arch/$(ARCH)/lib/Makefile.

    We are not happy about parsing config.mk again and again.
    We have to keep the same behavior with a different way.

    By adding "CONFIG_" prefix, this macro appears
    in include/autoconf.mk, include/spl-autoconf.mk.
    (And treating USE_PRIVATE_LIBGCC as CONFIG macro
    is reasonable enough.)

    Tegra SoC family defined USE_PRIVATE_LIBGCC as "yes"
    in arch/arm/cpu/arm720t/tegra*/config.mk,
    whereas did not define it in arch/arm/cpu/armv7/tegra*/config.mk.

    It means Tegra enables PRIVATE_LIBGCC only for SPL.
    We can describe the same behavior by adding

    #ifdef CONFIG_SPL_BUILD
    # define CONFIG_USE_PRIVATE_LIBGCC
    #endif

    to include/configs/tegra-common.h.

    Signed-off-by: Masahiro Yamada
    Cc: Tom Warren
    Cc: Simon Glass
    Acked-by: Stephen Warren

    Masahiro Yamada
     

05 Mar, 2014

1 commit


26 Feb, 2014

7 commits


24 Feb, 2014

1 commit

  • Commit 6825a95 (kbuild: use Linux Kernel build scripts)
    changed the behavior of linkage when USE_PRIAVATE_LIBGCC
    is defined as "yes".
    (It dropped arch/arm/lib/eabi_compat.o from the
    target library.)

    Affected boards are all Tegra boards.

    This commit gets back the same behavior as before Kbuild series.

    Signed-off-by: Masahiro Yamada
    Cc: Tom Warren
    Cc: Tom Rini

    Masahiro Yamada
     

20 Feb, 2014

9 commits

  • This commit refactors rules of directory descending
    and defines u-boot-dirs and u-boot-all-dirs.
    (We will need u-boot-all-dirs when using
    scripts/Makefile.clean)

    Additionally, rename LIBS-y to libs-y.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Before this commit, {spl,tpl}-autoconf.mk was always generated
    at the top Makefile even if SPL(TPL) build was not selected.

    This commit moves the build rule of {spl,tpl}-autoconf.mk
    from the top Makefile to spl/Makefile.
    It prevents unnecessary {spl,tpl}-autoconf.mk from being
    generated.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • This commit changes the location of include directives
    of board configuration files.

    The purpose of this change is:
    - Slim down $(TOPDIR)/config.mk
    - Prevent $(TOPDIR)/Makefile from including the same
    configuration file twice
    - Do not include include/config.mk multiple times
    because ARCH, CPU, BOARD, VENDOR, SOC are exported

    Before this commit:

    - include/autoconf.mk was included from $(TOPDIR)/Makefile
    and $(TOPDIR)/config.mk
    (This means $(TOPDIR)/Makefile included include/autoconf.mk twice)

    - include/{spl,tpl}-autoconf.mk was included from $(TOPDIR)/config.mk

    - include/config.mk was included from $(TOPDIR)/Makefile
    and $(TOPDIR)/config.mk
    (This means $(TOPDIR)/Makefile included include/config.mk twice)

    After this commit:

    - include/autoconf.mk is included from $(TOPDIR)/Makefile
    and $(TOPDIR)/scripts/Makefile.build

    - include/{spl,tpl}-autoconf.mk is included from $(TOPDIR)/spl/Makefile
    and $(TOPDIR)/scripts/Makefile.build

    - include/config.mk is included from $(TOPDIR)/config.mk and
    $(TOPDIR)/spl/Makefile

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Now we are ready to switch over to real Kbuild.

    This commit disables temporary scripts:
    scripts/{Makefile.build.tmp, Makefile.host.tmp}
    and enables real Kbuild scripts:
    scripts/{Makefile.build,Makefile.host,Makefile.lib}.

    This switch is triggered by the line in scripts/Kbuild.include
    -build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build.tmp obj
    +build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj

    We need to adjust some build scripts for U-Boot.
    But smaller amount of modification is preferable.

    Additionally, we need to fix compiler flags which are
    locally added or removed.

    In Kbuild, it is not allowed to change CFLAGS locally.
    Instead, ccflags-y, asflags-y, cppflags-y,
    CFLAGS_$(basetarget).o, CFLAGS_REMOVE_$(basetarget).o
    are prepared for that purpose.

    Signed-off-by: Masahiro Yamada
    Tested-by: Gerhard Sittig

    Masahiro Yamada
     
  • This commit changes the working directory
    where the build process occurs.

    Before this commit, build process occurred under the source
    tree for both in-tree and out-of-tree build.

    That's why we needed to add $(obj) prefix to all generated
    files in makefiles like follows:
    $(obj)u-boot.bin: $(obj)u-boot

    Here, $(obj) is empty for in-tree build, whereas it points
    to the output directory for out-of-tree build.

    And our old build system changes the current working directory
    with "make -C " syntax when descending into the
    sub-directories.

    On the other hand, Kbuild uses a different idea
    to handle out-of-tree build and directory descending.

    The build process of Kbuild always occurs under the output tree.
    When "O=dir/to/store/output/files" is given, the build system
    changes the current working directory to that directory and
    restarts the make.

    Kbuild uses "make -f $(srctree)/scripts/Makefile.build obj="
    syntax for descending into sub-directories.
    (We can write it like "make $(obj)=" with a shorthand.)
    This means the current working directory is always the top
    of the output directory.

    Signed-off-by: Masahiro Yamada
    Tested-by: Gerhard Sittig

    Masahiro Yamada
     
  • Some flags are used for SPL (and TPL) build only.
    This commit moves them from config.mk to spl/Makefile.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • This commit adjusts some files to use Kbuild.include.

    - Use cc-option defined in Kbuild.include
    (Delete cc-option in config.mk)
    - Use cc-version defined in
    (Delete cc-version in config.mk)
    - Move binutils-version and dtc-version to Kbuild.include
    by analogy to cc-version

    This commit also adds srctree (same as SRCTREE)
    to use Kbuild scripts.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Some Samsung boards have their own tools under board/samsung//tools/.
    This commit refactor more makefiles with "hostprogs-y".

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Before this commit, makefiles under tools/ directory
    were implemented with their own way.

    This commit refactors them by using "hostprogs-y" variable.

    Several C sources have been added to wrap other C sources
    to simplify Makefile.
    For example, tools/crc32.c includes lib/crc32.c

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

19 Feb, 2014

1 commit


25 Jan, 2014

1 commit


22 Jan, 2014

1 commit

  • Using the TPL method for nand boot by sram was already
    supported. Here add some code for mpc85xx ifc nand boot.

    - For ifc, elbc, esdhc, espi, all need the SPL without
    section .resetvec.
    - Use a clear function name for nand spl boot.
    - Add CONFIG_SPL_DRIVERS_MISC_SUPPORT to compile the fsl_ifc.c
    in spl/Makefile;

    Signed-off-by: Po Liu
    Acked-by: Scott Wood
    Reviewed-by: York Sun

    Po Liu
     

14 Jan, 2014

1 commit


10 Jan, 2014

1 commit


30 Dec, 2013

1 commit

  • When variable size SPL is used, the BL1 expects the SPL to be
    encapsulated differently: instead of putting the checksum at a fixed
    offset in the SPL blob, prepend the blob with a header including the
    size and the checksum.

    The enhancements include
    - adding a command line option, '--vs' to indicate the need for the
    variable size encapsulation
    - padding the fixed size encapsulated blob with 0xff instead of random
    memory contents
    - do not silently truncate the input file, report error instead
    - no need to explicitly closing files/freeing memory, this all happens
    on exit; removing cleanups it makes code clearer
    - profuse commenting
    - modify Makefile to allow enabling the new feature per board

    Signed-off-by: Vadim Bendebury
    Signed-off-by: Rajeshwari S Shinde
    Acked-by: Simon Glass
    Signed-off-by: Minkyu Kang

    Rajeshwari Birje
     

16 Dec, 2013

1 commit


13 Dec, 2013

4 commits


26 Nov, 2013

1 commit


18 Nov, 2013

3 commits