
On 28 July 2017 at 13:21, Philipp Tomsich philipp.tomsich@theobroma-systems.com wrote:
TPL builds today don't need to call into firmware or set up the MMU (if this changes, it should be controlled through a config option whether to include this or not), but include the needed support code for this anyway. By moving these unused low-level functions into seperate function-sections, the linker can garbage-collect the unused sections.
Note that (if DM support is enabled), there will be a call to the cache-flushing code from alloc_priv(...) in drivers/core/device.c. This then add 52 bytes of binary size (an increase from 20589 to 20641 bytes) compared to completely removing this code.
Even for a feature-rich TPL (including DM support as for the RK3368), this equates to a size difference of significantly more than 10% in TPL binary size.
Signed-off-by: Philipp Tomsich philipp.tomsich@theobroma-systems.com
Changes in v3:
- change to use function-sections (instead of disabling at the Makefile-level for TPL builds) per Tom's suggestion
Changes in v2: None
arch/arm/cpu/armv8/Makefile | 2 +- arch/arm/cpu/armv8/cache.S | 22 ++++++++++++++++++++++ arch/arm/cpu/armv8/tlb.S | 4 +++- arch/arm/cpu/armv8/transition.S | 6 ++++++ 4 files changed, 32 insertions(+), 2 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org
diff --git a/arch/arm/cpu/armv8/Makefile b/arch/arm/cpu/armv8/Makefile index c447085..64f35f1 100644 --- a/arch/arm/cpu/armv8/Makefile +++ b/arch/arm/cpu/armv8/Makefile @@ -10,11 +10,11 @@ extra-y := start.o obj-y += cpu.o obj-y += generic_timer.o obj-y += cache_v8.o -obj-y += exceptions.o obj-y += cache.o obj-y += tlb.o obj-y += transition.o obj-y += fwcall.o +obj-y += exceptions.o
But what is happened here?
obj-y += cpu-dt.o obj-$(CONFIG_ARM_SMCCC) += smccc-call.o