aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoakim Tjernlund2018-12-06 17:20:53 +0100
committerYork Sun2019-01-23 10:48:48 -0800
commit45e81f9ab3e97aec8e8744b23589bc21086cfd43 (patch)
treee0a6f5e5ace301c4731ee49ae04553b2b67ccdc8
parent7794fe2c8c1303d303dbc515955c6c5be706da88 (diff)
mpc85xx: Add support for -msingle-pic-base
-msingle-pic-base is a new gcc(from 4.6) option for ppc and it reduces the size of my u-boot with about 4-5 KB. While at it, add -fno-jump-tables too to save a few more bytes. e5500 core: size u-boot.bef text data bss dec hex filename 473043 23772 307104 803919 c444f u-boot.bef size u-boot.aft text data bss dec hex filename 453195 23772 307104 784071 bf6c7 u-boot.aft e500 core: size u-boot.bef text data bss dec hex filename 292998 17868 24968 335834 51fda u-boot.bef size u-boot.aft text data bss dec hex filename 288002 17868 24968 330838 50c56 u-boot.aft Signed-off-by: Joakim Tjernlund <joakim.tjernlund@infinera.com> Reviewed-by: York Sun <york.sun@nxp.com>
-rw-r--r--arch/powerpc/cpu/mpc85xx/config.mk1
-rw-r--r--arch/powerpc/cpu/mpc85xx/start.S3
2 files changed, 4 insertions, 0 deletions
diff --git a/arch/powerpc/cpu/mpc85xx/config.mk b/arch/powerpc/cpu/mpc85xx/config.mk
index 44d69add680..7a1d81cf2d7 100644
--- a/arch/powerpc/cpu/mpc85xx/config.mk
+++ b/arch/powerpc/cpu/mpc85xx/config.mk
@@ -4,6 +4,7 @@
# Xianghua Xiao, X.Xiao@motorola.com
PLATFORM_CPPFLAGS += -Wa,-me500 -msoft-float -mno-string
+PLATFORM_RELFLAGS += -msingle-pic-base -fno-jump-tables
# -mspe=yes is needed to have -mno-spe accepted by a buggy GCC;
# see "[PATCH,rs6000] make -mno-spe work as expected" on
diff --git a/arch/powerpc/cpu/mpc85xx/start.S b/arch/powerpc/cpu/mpc85xx/start.S
index 932aa08b276..dbc705388c9 100644
--- a/arch/powerpc/cpu/mpc85xx/start.S
+++ b/arch/powerpc/cpu/mpc85xx/start.S
@@ -1216,6 +1216,9 @@ _start_cont:
mr r1,r3 /* Transfer to SP(r1) */
GET_GOT
+ /* Needed for -msingle-pic-base */
+ bl _GLOBAL_OFFSET_TABLE_@local-4
+ mflr r30
/* Pass our potential ePAPR device tree pointer to cpu_init_early_f */
mr r3, r24