]> git.kernelconcepts.de Git - karo-tx-uboot.git/commit
arm: relocation: clear .bss section with arch memset if defined
authorPrzemyslaw Marczak <p.marczak@samsung.com>
Wed, 4 Mar 2015 13:01:22 +0000 (14:01 +0100)
committerLothar Waßmann <LW@KARO-electronics.de>
Tue, 1 Sep 2015 12:28:31 +0000 (14:28 +0200)
commitd1c101c34e0d85a37826517f2c8d359f9e8b172d
tree05118f8634f09fb90de46eb506da56e1bd2855fb
parentc6dec23c91e70ec8317fdb5628833095b5f444c7
arm: relocation: clear .bss section with arch memset if defined

For ARM architecture, enable the CONFIG_USE_ARCH_MEMSET/MEMCPY,
will highly increase the memset/memcpy performance. This is able
thanks to the ARM multiple register instructions.

Unfortunatelly the relocation is done without the cache enabled,
so it takes some time, but zeroing the BSS memory takes much more
longer, especially for the configs with big static buffers.

A quick test confirms, that the boot time improvement after using
the arch memcpy for relocation has no significant meaning.
The same test confirms that enable the memset for zeroing BSS,
reduces the boot time.

So this patch enables the arch memset for zeroing the BSS after
the relocation process. For ARM boards, this can be enabled
in board configs by defining: 'CONFIG_USE_ARCH_MEMSET'.

This was tested on Trats2.
A quick test with trace. Boot time from start to main_loop() entry:
- ~1384ms - before this change
-  ~888ms - after this change

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Cc: Albert Aribaud <albert.u.boot@aribaud.net>
Cc: Tom Rini <trini@konsulko.com>
arch/arm/lib/crt0.S