]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
Merge branch 'u-boot-ti/master' into 'u-boot-arm/master'
authorAlbert ARIBAUD <albert.u.boot@aribaud.net>
Wed, 2 Oct 2013 06:10:36 +0000 (08:10 +0200)
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>
Wed, 2 Oct 2013 06:10:36 +0000 (08:10 +0200)
21 files changed:
README
arch/arm/config.mk
arch/arm/cpu/arm1136/config.mk
arch/arm/cpu/arm1176/config.mk
arch/arm/cpu/arm720t/config.mk
arch/arm/cpu/arm920t/config.mk
arch/arm/cpu/arm925t/config.mk
arch/arm/cpu/arm926ejs/config.mk
arch/arm/cpu/arm946es/config.mk
arch/arm/cpu/arm_intcm/config.mk
arch/arm/cpu/armv7/config.mk
arch/arm/cpu/armv7/lowlevel_init.S
arch/arm/cpu/armv7/rmobile/config.mk
arch/arm/cpu/armv7/zynq/timer.c
arch/arm/cpu/ixp/config.mk
arch/arm/cpu/pxa/config.mk
arch/arm/cpu/sa1100/config.mk
arch/arm/include/asm/global_data.h
arch/arm/lib/crt0.S
arch/arm/lib/relocate.S
include/configs/eb_cpux9k2.h

diff --git a/README b/README
index f27e578e7203a48d5f3a85f10affbd2f282933e1..2fcad7ff856f408cc9e0122b4751cb41fb118794 100644 (file)
--- a/README
+++ b/README
@@ -5587,15 +5587,17 @@ On ARM, the following registers are used:
 
        R0:     function argument word/integer result
        R1-R3:  function argument word
-       R9:     GOT pointer
-       R10:    stack limit (used only if stack checking if enabled)
+       R9:     platform specific
+       R10:    stack limit (used only if stack checking is enabled)
        R11:    argument (frame) pointer
        R12:    temporary workspace
        R13:    stack pointer
        R14:    link register
        R15:    program counter
 
-    ==> U-Boot will use R8 to hold a pointer to the global data
+    ==> U-Boot will use R9 to hold a pointer to the global data
+
+    Note: on ARM, only R_ARM_RELATIVE relocations are supported.
 
 On Nios II, the ABI is documented here:
        http://www.altera.com/literature/hb/nios2/n2cpu_nii51016.pdf
index ce3903ba9f5edea75e06ae53efc847309dfa0e1e..d0cf43ff417c996cb9f24313b8620f726fc3f184 100644 (file)
@@ -16,7 +16,8 @@ endif
 endif
 
 LDFLAGS_FINAL += --gc-sections
-PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections
+PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections \
+                     -fno-common -ffixed-r9 -msoft-float
 
 # Support generic board on ARM
 __HAVE_ARCH_GENERIC_BOARD := y
@@ -94,7 +95,11 @@ PLATFORM_RELFLAGS += -fno-optimize-sibling-calls
 endif
 endif
 
-# check that only R_ARM_RELATIVE relocations are generated
 ifneq ($(CONFIG_SPL_BUILD),y)
-ALL-y  += checkarmreloc
+# Check that only R_ARM_RELATIVE relocations are generated.
+ALL-y += checkarmreloc
+# The movt / movw can hardcode 16 bit parts of the addresses in the
+# instruction. Relocation is not supported for that case, so disable
+# such usage by requiring word relocations.
+PLATFORM_CPPFLAGS += $(call cc-option, -mword-relocations)
 endif
index 1ef606136576c708f72795cd72788710315bc213..b4d396de8414ca8b2cd547d20d1c0f9a19aa8fba 100644 (file)
@@ -4,7 +4,6 @@
 #
 # SPDX-License-Identifier:     GPL-2.0+
 #
-PLATFORM_RELFLAGS += -fno-common -ffixed-r8 -msoft-float
 
 # Make ARMv5 to allow more compilers to work, even though its v6.
 PLATFORM_CPPFLAGS += -march=armv5
index 917da030d6cea77d544e06377f1df93eb3b568c3..f4631cb777a6d7c15097c3a1298b9bc0f2c26872 100644 (file)
@@ -4,7 +4,6 @@
 #
 # SPDX-License-Identifier:     GPL-2.0+
 #
-PLATFORM_RELFLAGS += -fno-common -ffixed-r8 -msoft-float
 
 # Make ARMv5 to allow more compilers to work, even though its v6.
 PLATFORM_CPPFLAGS += -march=armv5t
index 56b6280d5abdefeb6c17e87dfe35fbf7fc6a5d6b..2581f0ae67ca1aac8cf7897fd58a94b786675054 100644 (file)
@@ -6,8 +6,6 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-PLATFORM_RELFLAGS +=  -fno-common -ffixed-r8 -msoft-float
-
 PLATFORM_CPPFLAGS += -march=armv4 -mtune=arm7tdmi
 # =========================================================================
 #
index 58fd756586f9cc0ffcf777dec9b3bccc674c5918..67537dcedc991bcca1c8593062381fa85e2e13e4 100644 (file)
@@ -5,8 +5,6 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-PLATFORM_RELFLAGS += -fno-common -ffixed-r8 -msoft-float
-
 PLATFORM_CPPFLAGS += -march=armv4
 # =========================================================================
 #
index 58fd756586f9cc0ffcf777dec9b3bccc674c5918..67537dcedc991bcca1c8593062381fa85e2e13e4 100644 (file)
@@ -5,8 +5,6 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-PLATFORM_RELFLAGS += -fno-common -ffixed-r8 -msoft-float
-
 PLATFORM_CPPFLAGS += -march=armv4
 # =========================================================================
 #
index 917ff7edec671e14db351d69d91e8339eb7ef03f..12b0d09d3725ffd731ead4d46e8a370b562521c6 100644 (file)
@@ -5,8 +5,6 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-PLATFORM_RELFLAGS += -fno-common -ffixed-r8 -msoft-float
-
 PLATFORM_CPPFLAGS += -march=armv5te
 # =========================================================================
 #
index 1e41c1168660ad3d9718e87197ede091e0a539fa..eb81a5708df4a1008efeff03db44211e3ee7aeae 100644 (file)
@@ -5,8 +5,6 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-PLATFORM_RELFLAGS += -fno-common -ffixed-r8 -msoft-float
-
 PLATFORM_CPPFLAGS +=  -march=armv4
 # =========================================================================
 #
index 1e41c1168660ad3d9718e87197ede091e0a539fa..eb81a5708df4a1008efeff03db44211e3ee7aeae 100644 (file)
@@ -5,8 +5,6 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-PLATFORM_RELFLAGS += -fno-common -ffixed-r8 -msoft-float
-
 PLATFORM_CPPFLAGS +=  -march=armv4
 # =========================================================================
 #
index ca4a9e72c090a976903586934236b76471fabb0b..f0d9c04327160dfb6f05ba022b07fc3504e36965 100644 (file)
@@ -4,7 +4,6 @@
 #
 # SPDX-License-Identifier:     GPL-2.0+
 #
-PLATFORM_RELFLAGS += -fno-common -ffixed-r8 -msoft-float
 
 # If armv7-a is not supported by GCC fall-back to armv5, which is
 # supported by more tool-chains
index 82b2b86520eb2b2d63c2478145b625a49f931542..69e3053a4262e7894c165b417c79aeb4e665845d 100644 (file)
@@ -22,11 +22,11 @@ ENTRY(lowlevel_init)
        ldr     sp, =CONFIG_SYS_INIT_SP_ADDR
        bic     sp, sp, #7 /* 8-byte alignment for ABI compliance */
 #ifdef CONFIG_SPL_BUILD
-       ldr     r8, =gdata
+       ldr     r9, =gdata
 #else
        sub     sp, #GD_SIZE
        bic     sp, sp, #7
-       mov     r8, sp
+       mov     r9, sp
 #endif
        /*
         * Save the old lr(passed in ip) and the current lr to stack
index 4f0161086804dda59ba1249d4ff1cd43c7d318c5..3a36ab65e122fb5a120912628f1946a8efebbd4a 100644 (file)
@@ -4,7 +4,6 @@
 #
 # SPDX-License-Identifier:     GPL-2.0+
 #
-PLATFORM_RELFLAGS += -fno-common -ffixed-r8 -msoft-float
 
 # Make ARMv5 to allow more compilers to work, even though its v7a.
 PLATFORM_CPPFLAGS += -march=armv5
index 0133565299fbb89e4c1a96d51edef54eaaebb5a2..3b8d9497a0d2bab665c37b000625d778a0c749e9 100644 (file)
@@ -57,7 +57,7 @@ int timer_init(void)
                        SCUTIMER_CONTROL_ENABLE_MASK;
 
        /* Load the timer counter register */
-       writel(0xFFFFFFFF, &timer_base->counter);
+       writel(0xFFFFFFFF, &timer_base->load);
 
        /*
         * Start the A9Timer device
index 0f12f8b1c755849af25c2148db5a45189895e7e8..fd47c60939aef824e30b3fef4f316fc7ef3c995e 100644 (file)
@@ -8,7 +8,7 @@
 
 BIG_ENDIAN = y
 
-PLATFORM_RELFLAGS += -fno-common -ffixed-r8 -msoft-float -mbig-endian
+PLATFORM_RELFLAGS += -mbig-endian
 
 PLATFORM_CPPFLAGS += -mbig-endian -march=armv5te -mtune=strongarm1100
 
index 535bca3e9f0ba100f5363b5c86dc1c9d533b905b..d8d263d404dbeb1c7b884f8eca22d530722ace09 100644 (file)
@@ -6,8 +6,6 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-PLATFORM_RELFLAGS += -fno-common -ffixed-r8 -msoft-float
-
 PLATFORM_CPPFLAGS += -mcpu=xscale
 # =========================================================================
 #
index 576f685c58dc6a5e9946b9064338b65053f99075..b3026cc50da33b0304ccb893a72130d7c73c72f6 100644 (file)
@@ -6,8 +6,6 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-PLATFORM_RELFLAGS += -fno-common -ffixed-r8 -msoft-float
-
 PLATFORM_CPPFLAGS += -march=armv4 -mtune=strongarm1100
 # =========================================================================
 #
index 79a959741945968eca7a21018187b97eb65d70f3..e126436093d43ed408af43bf9d0dd54ffb103840 100644 (file)
@@ -47,6 +47,6 @@ struct arch_global_data {
 
 #include <asm-generic/global_data.h>
 
-#define DECLARE_GLOBAL_DATA_PTR     register volatile gd_t *gd asm ("r8")
+#define DECLARE_GLOBAL_DATA_PTR     register volatile gd_t *gd asm ("r9")
 
 #endif /* __ASM_GBL_DATA_H */
index 960d12e7327cf9d8924496ea6c7b2271bd3f68ad..ac54b9359aea3b4954004e1b7805445ff0508b41 100644 (file)
@@ -69,7 +69,7 @@ ENTRY(_main)
        bic     sp, sp, #7      /* 8-byte alignment for ABI compliance */
        sub     sp, #GD_SIZE    /* allocate one GD above SP */
        bic     sp, sp, #7      /* 8-byte alignment for ABI compliance */
-       mov     r8, sp          /* GD is above SP */
+       mov     r9, sp          /* GD is above SP */
        mov     r0, #0
        bl      board_init_f
 
@@ -81,15 +81,15 @@ ENTRY(_main)
  * 'here' but relocated.
  */
 
-       ldr     sp, [r8, #GD_START_ADDR_SP]     /* sp = gd->start_addr_sp */
+       ldr     sp, [r9, #GD_START_ADDR_SP]     /* sp = gd->start_addr_sp */
        bic     sp, sp, #7      /* 8-byte alignment for ABI compliance */
-       ldr     r8, [r8, #GD_BD]                /* r8 = gd->bd */
-       sub     r8, r8, #GD_SIZE                /* new GD is below bd */
+       ldr     r9, [r9, #GD_BD]                /* r9 = gd->bd */
+       sub     r9, r9, #GD_SIZE                /* new GD is below bd */
 
        adr     lr, here
-       ldr     r0, [r8, #GD_RELOC_OFF]         /* r0 = gd->reloc_off */
+       ldr     r0, [r9, #GD_RELOC_OFF]         /* r0 = gd->reloc_off */
        add     lr, lr, r0
-       ldr     r0, [r8, #GD_RELOCADDR]         /* r0 = gd->relocaddr */
+       ldr     r0, [r9, #GD_RELOCADDR]         /* r0 = gd->relocaddr */
        b       relocate_code
 here:
 
@@ -111,8 +111,8 @@ clbss_l:cmp r0, r1                  /* while not at end of BSS */
        bl red_led_on
 
        /* call board_init_r(gd_t *id, ulong dest_addr) */
-       mov     r0, r8                  /* gd_t */
-       ldr     r1, [r8, #GD_RELOCADDR] /* dest_addr */
+       mov     r0, r9                  /* gd_t */
+       ldr     r1, [r9, #GD_RELOCADDR] /* dest_addr */
        /* call board_init_r */
        ldr     pc, =board_init_r       /* this is auto-relocated! */
 
index ab90430dced64897e60c63cc739bd36a9f4cc52e..a62a55656128077890e23bb3ac170be0f464e6bf 100644 (file)
@@ -22,7 +22,7 @@
 
 ENTRY(relocate_code)
        ldr     r1, =__image_copy_start /* r1 <- SRC &__image_copy_start */
-       subs    r9, r0, r1              /* r9 <- relocation offset */
+       subs    r4, r0, r1              /* r4 <- relocation offset */
        beq     relocate_done           /* skip relocation */
        ldr     r2, =__image_copy_end   /* r2 <- SRC &__image_copy_end */
 
@@ -44,9 +44,9 @@ fixloop:
        bne     fixnext
 
        /* relative fix: increase location by offset */
-       add     r0, r0, r9
+       add     r0, r0, r4
        ldr     r1, [r0]
-       add     r1, r1, r9
+       add     r1, r1, r4
        str     r1, [r0]
 fixnext:
        cmp     r2, r3
index ccc7bd0a8aa70f88750499e83dbb1793c5c2bf19..b8e672f82bf5bd4311e284f54378cb3c76db90b6 100644 (file)
@@ -83,7 +83,7 @@
  * Size of malloc() pool
  */
 
-#define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + 520*1024)
+#define CONFIG_SYS_MALLOC_LEN          (4 * 1024 * 1024)
 
 /*
  * sdram