arm: lib: fix push/pop-section directives
authorStephen Warren <swarren@nvidia.com>
Fri, 3 Jun 2016 19:05:11 +0000 (13:05 -0600)
committerTom Rini <trini@konsulko.com>
Fri, 3 Jun 2016 19:14:11 +0000 (15:14 -0400)
commitb2f1858455e99a91aeafe59ac73c6c047106d5e8
tree5744d4812e427d526bb55290c49b1d27d82c8251
parentedb697cfcc2dda02c5b2a34b3157b8fa8fc01264
arm: lib: fix push/pop-section directives

With the existing code, function symbols are defined in .text, and the
body is defined in .text.xxx. This causes (at least some version of) the
linker not to emit the function body into the final binary, since it's
part of a different section to the symbols being referenced. This of
course causes a wide variety of failures.

This change moves the push/pop-section directives before the function
symbols, and after any relate ENDPROC macro invocations, so that symbols
and bodies are all in the "pushed" sections, and thus the function bodies
are emitted into the binary.

This solves (at least) the boot problems currently seen on Tegra systems
that use SPL (i.e. all ARMv7 Tegras).

Fixes: 13b0a91a6d48 ("arm: lib: Split asm symbols into different .text subsections")
Cc: Marek Vasut <marex@denx.de>
Cc: Tom Warren <twarren@nvidia.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
arch/arm/lib/ashldi3.S
arch/arm/lib/ashrdi3.S
arch/arm/lib/div64.S
arch/arm/lib/lib1funcs.S
arch/arm/lib/lshrdi3.S
arch/arm/lib/muldi3.S
arch/arm/lib/uldivmod.S