ARM: head-common.S: speed up startup code
authorNicolas Pitre <nicolas.pitre@linaro.org>
Thu, 24 Aug 2017 19:54:47 +0000 (15:54 -0400)
committerNicolas Pitre <nicolas.pitre@linaro.org>
Sun, 10 Sep 2017 23:34:52 +0000 (19:34 -0400)
commit9520b1a1b5f7a34888e14de3cf2ee0ee5344e9fe
tree08d9c67e778a425d93af10bbaad866f61f447b1f
parent569dbb88e80deb68974ef6fdd6a13edb9d686261
ARM: head-common.S: speed up startup code

Let's use optimized routines such as memcpy to copy .data and memzero
to clear .bss in the startup code instead of doing it one word at a
time. Those routines don't use any global data so they're safe to use
even if .data and .bss segments are not initialized.

In the .data copy case a temporary stack is installed in the .bss area
as the actual kernel stack is located within the copied data area. The
XIP kernel linker script ensures a 8 byte alignment for that purpose.

Finally, make the .data copy and related pointers surrounded by
CONFIG_XIP_KERNEL to make it obvious what it is all about. This will
allow for further cleanups in the non-XIP linker script.

Signed-off-by: Nicolas Pitre <nico@linaro.org>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Tested-by: Chris Brandt <Chris.Brandt@renesas.com>
arch/arm/kernel/head-common.S
arch/arm/kernel/vmlinux-xip.lds.S