On Wed, Jul 25, 2018 at 12:57:01AM +0100, Andre Przywara wrote: > Even though the exception vector table is a fundamental part of the ARM > architecture, U-Boot mostly does not make real use of it, except when > crash dumping. But having it in takes up quite some space, partly due to > the architectural alignment requirement of 2KB. Since we don't take special > care of that, the compiler adds a more or less random amount of padding > space, which increases the image size quite a bit, especially for the SPL. > > On a typical Allwinner build this is around 1.5KB of padding, plus 1KB > for the vector table (mostly padding space again), then some extra code > to do the actual handling. This amounts to almost 10% of the maximum image > size, which is quite a lot for a pure debugging feature. > > Add a Kconfig symbol to allow the exception vector table to be left out > of the build for the SPL. > For now this is "default y" for everyone, but specific defconfigs, > platforms or .config files can opt out here at will, to mitigate the code > size pressure we see for some SPLs. > > Signed-off-by: Andre Przywara <andre.przyw...@arm.com> > --- > arch/arm/cpu/armv8/Kconfig | 11 +++++++++++ > arch/arm/cpu/armv8/Makefile | 4 ++++ > arch/arm/cpu/armv8/start.S | 19 +++++++++++++++---- > 3 files changed, 30 insertions(+), 4 deletions(-) > > diff --git a/arch/arm/cpu/armv8/Kconfig b/arch/arm/cpu/armv8/Kconfig > index 22d2f29548..bd1e759c37 100644 > --- a/arch/arm/cpu/armv8/Kconfig > +++ b/arch/arm/cpu/armv8/Kconfig > @@ -1,5 +1,16 @@ > if ARM64 > > +config ARMV8_SPL_EXCEPTION_VECTORS > + bool "Install crash dump exception vectors" > + depends on SPL > + default y > + help > + The default exception vector table is only used for the crash > + dump, but still takes quite a lot of space in the image size. > + > + Say N here if you are running out of code space in the image > + and want to save some space at the cost of less debugging info. > + > config ARMV8_MULTIENTRY > bool "Enable multiple CPUs to enter into U-Boot" > > diff --git a/arch/arm/cpu/armv8/Makefile b/arch/arm/cpu/armv8/Makefile > index d1d4ffecfd..52c8daa049 100644 > --- a/arch/arm/cpu/armv8/Makefile > +++ b/arch/arm/cpu/armv8/Makefile > @@ -10,7 +10,11 @@ ifndef CONFIG_$(SPL_TPL_)TIMER > obj-$(CONFIG_SYS_ARCH_TIMER) += generic_timer.o > endif > obj-y += cache_v8.o > +ifdef CONFIG_SPL_BUILD > +obj-$(CONFIG_ARMV8_SPL_EXCEPTION_VECTORS) += exceptions.o > +else > obj-y += exceptions.o > +endif
I _think_ we can make the code parts of this read better (and make use of CONFIG_IS_ENABLED() if we add CONFIG_ARMV8_EXCEPTION_VECTORS and don't allow it to be unselected (ie no text on the bool line). -- Tom
signature.asc
Description: PGP signature
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot