Remove the last uses of symbol offsets in ARM U-Boot.
Remove some needless uses of _TEXT_BASE.
Remove all _TEXT_BASE definitions.

Signed-off-by: Albert ARIBAUD <albert.u.b...@aribaud.net>
---
Changes in v2:
- fixed use of _rel_dyn_end instead of _end

 README                                      |  6 ------
 arch/arm/cpu/arm1136/start.S                | 27 ---------------------------
 arch/arm/cpu/arm1176/start.S                | 27 ---------------------------
 arch/arm/cpu/arm720t/start.S                | 26 --------------------------
 arch/arm/cpu/arm920t/start.S                | 26 --------------------------
 arch/arm/cpu/arm926ejs/at91/lowlevel_init.S | 14 +-------------
 arch/arm/cpu/arm926ejs/mxs/start.S          | 27 ---------------------------
 arch/arm/cpu/arm926ejs/start.S              | 27 ---------------------------
 arch/arm/cpu/arm946es/start.S               | 26 --------------------------
 arch/arm/cpu/arm_intcm/start.S              | 26 --------------------------
 arch/arm/cpu/armv7/omap3/lowlevel_init.S    |  3 ---
 arch/arm/cpu/armv7/start.S                  | 23 -----------------------
 arch/arm/cpu/ixp/start.S                    | 26 --------------------------
 arch/arm/cpu/pxa/start.S                    | 27 ---------------------------
 arch/arm/cpu/sa1100/start.S                 | 26 --------------------------
 arch/arm/lib/board.c                        | 12 ++++++------
 board/armltd/integrator/lowlevel_init.S     |  2 +-
 board/cm4008/flash.c                        |  2 +-
 board/cm41xx/flash.c                        |  2 +-
 board/mpl/vcma9/lowlevel_init.S             |  5 +----
 board/mx1ads/lowlevel_init.S                |  4 ----
 board/samsung/goni/lowlevel_init.S          |  3 ---
 board/samsung/smdk2410/lowlevel_init.S      |  5 +----
 board/samsung/smdk5250/lowlevel_init.S      |  5 +----
 board/samsung/smdkc100/lowlevel_init.S      |  3 ---
 board/ti/omap5912osk/lowlevel_init.S        |  4 ----
 board/ti/omap730p2/lowlevel_init.S          |  3 ---
 common/board_f.c                            | 14 +++-----------
 common/board_r.c                            |  4 ++--
 include/asm-generic/sections.h              | 26 +++++++-------------------
 30 files changed, 25 insertions(+), 406 deletions(-)

diff --git a/README b/README
index 09662a4..67bc2aa 100644
--- a/README
+++ b/README
@@ -3532,12 +3532,6 @@ Configuration Settings:
        its config.mk file). If you find problems enabling this option on
        your board please report the problem and send patches!
 
-- CONFIG_SYS_SYM_OFFSETS
-       This is set by architectures that use offsets for link symbols
-       instead of absolute values. So bss_start is obtained using an
-       offset _bss_start_ofs from CONFIG_SYS_TEXT_BASE, rather than
-       directly. You should not need to touch this setting.
-
 - CONFIG_OMAP_PLATFORM_RESET_TIME_MAX_USEC (OMAP only)
        This is set by OMAP boards for the max time that reset should
        be asserted. See doc/README.omap-reset-time for details on how
diff --git a/arch/arm/cpu/arm1136/start.S b/arch/arm/cpu/arm1136/start.S
index 00d1b30..3e2358e 100644
--- a/arch/arm/cpu/arm1136/start.S
+++ b/arch/arm/cpu/arm1136/start.S
@@ -70,32 +70,6 @@ _end_vect:
  *************************************************************************
  */
 
-.globl _TEXT_BASE
-_TEXT_BASE:
-#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_TEXT_BASE)
-       .word   CONFIG_SPL_TEXT_BASE
-#else
-       .word   CONFIG_SYS_TEXT_BASE
-#endif
-
-/*
- * These are defined in the board-specific linker script.
- * Subtracting _start from them lets the linker put their
- * relative position in the executable instead of leaving
- * them null.
- */
-.globl _bss_start_ofs
-_bss_start_ofs:
-       .word __bss_start - _start
-
-.globl _bss_end_ofs
-_bss_end_ofs:
-       .word __bss_end - _start
-
-.globl _end_ofs
-_end_ofs:
-       .word _end - _start
-
 #ifdef CONFIG_USE_IRQ
 /* IRQ stack memory (calculated at run-time) */
 .globl IRQ_STACK_START
@@ -295,7 +269,6 @@ cpu_init_crit:
 #ifdef CONFIG_SPL_BUILD
        .align  5
 do_hang:
-       ldr     sp, _TEXT_BASE                  /* use 32 words about stack */
        bl      hang                            /* hang and never return */
 #else  /* !CONFIG_SPL_BUILD */
        .align  5
diff --git a/arch/arm/cpu/arm1176/start.S b/arch/arm/cpu/arm1176/start.S
index ffd7dd0..ce62011 100644
--- a/arch/arm/cpu/arm1176/start.S
+++ b/arch/arm/cpu/arm1176/start.S
@@ -77,33 +77,6 @@ _end_vect:
  *************************************************************************
  */
 
-.globl _TEXT_BASE
-_TEXT_BASE:
-#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_TEXT_BASE)
-       .word   CONFIG_SPL_TEXT_BASE
-#else
-       .word   CONFIG_SYS_TEXT_BASE
-#endif
-
-/*
- * These are defined in the board-specific linker script.
- * Subtracting _start from them lets the linker put their
- * relative position in the executable instead of leaving
- * them null.
- */
-
-.globl _bss_start_ofs
-_bss_start_ofs:
-       .word __bss_start - _start
-
-.globl _bss_end_ofs
-_bss_end_ofs:
-       .word __bss_end - _start
-
-.globl _end_ofs
-_end_ofs:
-       .word _end - _start
-
 /* IRQ stack memory (calculated at run-time) + 8 bytes */
 .globl IRQ_STACK_START_IN
 IRQ_STACK_START_IN:
diff --git a/arch/arm/cpu/arm720t/start.S b/arch/arm/cpu/arm720t/start.S
index f180eb8..1a34842 100644
--- a/arch/arm/cpu/arm720t/start.S
+++ b/arch/arm/cpu/arm720t/start.S
@@ -67,32 +67,6 @@ _pad:                        .word 0x12345678 /* now 16*4=64 
*/
  *************************************************************************
  */
 
-.globl _TEXT_BASE
-_TEXT_BASE:
-#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_TEXT_BASE)
-       .word   CONFIG_SPL_TEXT_BASE
-#else
-       .word   CONFIG_SYS_TEXT_BASE
-#endif
-
-/*
- * These are defined in the board-specific linker script.
- * Subtracting _start from them lets the linker put their
- * relative position in the executable instead of leaving
- * them null.
- */
-.globl _bss_start_ofs
-_bss_start_ofs:
-       .word __bss_start - _start
-
-.globl _bss_end_ofs
-_bss_end_ofs:
-       .word __bss_end - _start
-
-.globl _end_ofs
-_end_ofs:
-       .word _end - _start
-
 #ifdef CONFIG_USE_IRQ
 /* IRQ stack memory (calculated at run-time) */
 .globl IRQ_STACK_START
diff --git a/arch/arm/cpu/arm920t/start.S b/arch/arm/cpu/arm920t/start.S
index a67b659..7bf094a 100644
--- a/arch/arm/cpu/arm920t/start.S
+++ b/arch/arm/cpu/arm920t/start.S
@@ -55,32 +55,6 @@ _fiq:                        .word fiq
  *************************************************************************
  */
 
-.globl _TEXT_BASE
-_TEXT_BASE:
-#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_TEXT_BASE)
-       .word   CONFIG_SPL_TEXT_BASE
-#else
-       .word   CONFIG_SYS_TEXT_BASE
-#endif
-
-/*
- * These are defined in the board-specific linker script.
- * Subtracting _start from them lets the linker put their
- * relative position in the executable instead of leaving
- * them null.
- */
-.globl _bss_start_ofs
-_bss_start_ofs:
-       .word __bss_start - _start
-
-.globl _bss_end_ofs
-_bss_end_ofs:
-       .word __bss_end - _start
-
-.globl _end_ofs
-_end_ofs:
-       .word _end - _start
-
 #ifdef CONFIG_USE_IRQ
 /* IRQ stack memory (calculated at run-time) */
 .globl IRQ_STACK_START
diff --git a/arch/arm/cpu/arm926ejs/at91/lowlevel_init.S 
b/arch/arm/cpu/arm926ejs/at91/lowlevel_init.S
index e83968f..a9ec81a 100644
--- a/arch/arm/cpu/arm926ejs/at91/lowlevel_init.S
+++ b/arch/arm/cpu/arm926ejs/at91/lowlevel_init.S
@@ -26,27 +26,18 @@
 #define CONFIG_SYS_MATRIX_EBICSA_VAL CONFIG_SYS_MATRIX_EBI0CSA_VAL
 #endif
 
-_TEXT_BASE:
-       .word   CONFIG_SYS_TEXT_BASE
-
 .globl lowlevel_init
 .type lowlevel_init,function
 lowlevel_init:
 
-       mov     r5, pc          /* r5 = POS1 + 4 current */
 POS1:
+       adr     r5, POS1        /* r5 = POS1 run time */
        ldr     r0, =POS1       /* r0 = POS1 compile */
-       ldr     r2, _TEXT_BASE
-       sub     r0, r0, r2      /* r0 = POS1-_TEXT_BASE (POS1 relative) */
        sub     r5, r5, r0      /* r0 = CONFIG_SYS_TEXT_BASE-1 */
-       sub     r5, r5, #4      /* r1 = text base - current */
 
        /* memory control configuration 1 */
        ldr     r0, =SMRDATA
        ldr     r2, =SMRDATA1
-       ldr     r1, _TEXT_BASE
-       sub     r0, r0, r1
-       sub     r2, r2, r1
        add     r0, r0, r5
        add     r2, r2, r5
 0:
@@ -149,9 +140,6 @@ PLL_setup_end:
 
        ldr     r0, =SMRDATA1
        ldr     r2, =SMRDATA2
-       ldr     r1, _TEXT_BASE
-       sub     r0, r0, r1
-       sub     r2, r2, r1
        add     r0, r0, r5
        add     r2, r2, r5
 2:
diff --git a/arch/arm/cpu/arm926ejs/mxs/start.S 
b/arch/arm/cpu/arm926ejs/mxs/start.S
index 5de2bad..34a0fcb 100644
--- a/arch/arm/cpu/arm926ejs/mxs/start.S
+++ b/arch/arm/cpu/arm926ejs/mxs/start.S
@@ -101,32 +101,6 @@ fiq:
  *************************************************************************
  */
 
-.globl _TEXT_BASE
-_TEXT_BASE:
-#ifdef CONFIG_SPL_TEXT_BASE
-       .word   CONFIG_SPL_TEXT_BASE
-#else
-       .word   CONFIG_SYS_TEXT_BASE
-#endif
-
-/*
- * These are defined in the board-specific linker script.
- * Subtracting _start from them lets the linker put their
- * relative position in the executable instead of leaving
- * them null.
- */
-.globl _bss_start_ofs
-_bss_start_ofs:
-       .word __bss_start - _start
-
-.globl _bss_end_ofs
-_bss_end_ofs:
-       .word __bss_end - _start
-
-.globl _end_ofs
-_end_ofs:
-       .word _end - _start
-
 #ifdef CONFIG_USE_IRQ
 /* IRQ stack memory (calculated at run-time) */
 .globl IRQ_STACK_START
@@ -207,6 +181,5 @@ _reset:
        bx      lr
 
 _hang:
-       ldr     sp, _TEXT_BASE                  /* switch to abort stack */
 1:
        bl      1b                              /* hang and never return */
diff --git a/arch/arm/cpu/arm926ejs/start.S b/arch/arm/cpu/arm926ejs/start.S
index 5360f55..0717327 100644
--- a/arch/arm/cpu/arm926ejs/start.S
+++ b/arch/arm/cpu/arm926ejs/start.S
@@ -102,32 +102,6 @@ _fiq:
  *************************************************************************
  */
 
-.globl _TEXT_BASE
-_TEXT_BASE:
-#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_TEXT_BASE)
-       .word   CONFIG_SPL_TEXT_BASE
-#else
-       .word   CONFIG_SYS_TEXT_BASE
-#endif
-
-/*
- * These are defined in the board-specific linker script.
- * Subtracting _start from them lets the linker put their
- * relative position in the executable instead of leaving
- * them null.
- */
-.globl _bss_start_ofs
-_bss_start_ofs:
-       .word __bss_start - _start
-
-.globl _bss_end_ofs
-_bss_end_ofs:
-       .word __bss_end - _start
-
-.globl _end_ofs
-_end_ofs:
-       .word _end - _start
-
 #ifdef CONFIG_USE_IRQ
 /* IRQ stack memory (calculated at run-time) */
 .globl IRQ_STACK_START
@@ -330,7 +304,6 @@ flush_dcache:
 #ifdef CONFIG_SPL_BUILD
        .align  5
 do_hang:
-       ldr     sp, _TEXT_BASE                  /* switch to abort stack */
 1:
        bl      1b                              /* hang and never return */
 #else  /* !CONFIG_SPL_BUILD */
diff --git a/arch/arm/cpu/arm946es/start.S b/arch/arm/cpu/arm946es/start.S
index e16b088..7d50145 100644
--- a/arch/arm/cpu/arm946es/start.S
+++ b/arch/arm/cpu/arm946es/start.S
@@ -71,32 +71,6 @@ _vectors_end:
  *************************************************************************
  */
 
-.globl _TEXT_BASE
-_TEXT_BASE:
-#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_TEXT_BASE)
-       .word   CONFIG_SPL_TEXT_BASE
-#else
-       .word   CONFIG_SYS_TEXT_BASE
-#endif
-
-/*
- * These are defined in the board-specific linker script.
- * Subtracting _start from them lets the linker put their
- * relative position in the executable instead of leaving
- * them null.
- */
-.globl _bss_start_ofs
-_bss_start_ofs:
-       .word __bss_start - _start
-
-.globl _bss_end_ofs
-_bss_end_ofs:
-       .word __bss_end - _start
-
-.globl _end_ofs
-_end_ofs:
-       .word _end - _start
-
 #ifdef CONFIG_USE_IRQ
 /* IRQ stack memory (calculated at run-time) */
 .globl IRQ_STACK_START
diff --git a/arch/arm/cpu/arm_intcm/start.S b/arch/arm/cpu/arm_intcm/start.S
index 5783df1..7404ea7 100644
--- a/arch/arm/cpu/arm_intcm/start.S
+++ b/arch/arm/cpu/arm_intcm/start.S
@@ -67,32 +67,6 @@ _fiq:
  *************************************************************************
  */
 
-.globl _TEXT_BASE
-_TEXT_BASE:
-#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_TEXT_BASE)
-       .word   CONFIG_SPL_TEXT_BASE
-#else
-       .word   CONFIG_SYS_TEXT_BASE
-#endif
-
-/*
- * These are defined in the board-specific linker script.
- * Subtracting _start from them lets the linker put their
- * relative position in the executable instead of leaving
- * them null.
- */
-.globl _bss_start_ofs
-_bss_start_ofs:
-       .word __bss_start - _start
-
-.globl _bss_end_ofs
-_bss_end_ofs:
-       .word __bss_end - _start
-
-.globl _end_ofs
-_end_ofs:
-       .word _end - _start
-
 #ifdef CONFIG_USE_IRQ
 /* IRQ stack memory (calculated at run-time) */
 .globl IRQ_STACK_START
diff --git a/arch/arm/cpu/armv7/omap3/lowlevel_init.S 
b/arch/arm/cpu/armv7/omap3/lowlevel_init.S
index 6f7261b..78577b1 100644
--- a/arch/arm/cpu/armv7/omap3/lowlevel_init.S
+++ b/arch/arm/cpu/armv7/omap3/lowlevel_init.S
@@ -17,9 +17,6 @@
 #include <asm/arch/clocks_omap3.h>
 #include <linux/linkage.h>
 
-_TEXT_BASE:
-       .word   CONFIG_SYS_TEXT_BASE    /* sdram load addr from config.mk */
-
 #ifdef CONFIG_SPL_BUILD
 ENTRY(save_boot_params)
        ldr     r4, =omap3_boot_device
diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S
index 6c9b11a..4ff6268 100644
--- a/arch/arm/cpu/armv7/start.S
+++ b/arch/arm/cpu/armv7/start.S
@@ -63,29 +63,6 @@ _end_vect:
  *
  *************************************************************************/
 
-.globl _TEXT_BASE
-_TEXT_BASE:
-#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_TEXT_BASE)
-       .word   CONFIG_SPL_TEXT_BASE
-#else
-       .word   CONFIG_SYS_TEXT_BASE
-#endif
-
-/*
- * These are defined in the board-specific linker script.
- */
-.globl _bss_start_ofs
-_bss_start_ofs:
-       .word __bss_start - _start
-
-.globl _bss_end_ofs
-_bss_end_ofs:
-       .word __bss_end - _start
-
-.globl _end_ofs
-_end_ofs:
-       .word _end - _start
-
 #ifdef CONFIG_USE_IRQ
 /* IRQ stack memory (calculated at run-time) */
 .globl IRQ_STACK_START
diff --git a/arch/arm/cpu/ixp/start.S b/arch/arm/cpu/ixp/start.S
index 82c868a..80ef443 100644
--- a/arch/arm/cpu/ixp/start.S
+++ b/arch/arm/cpu/ixp/start.S
@@ -80,32 +80,6 @@ _fiq:                        .word fiq
  * - jump to second stage
  */
 
-.globl _TEXT_BASE
-_TEXT_BASE:
-#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_TEXT_BASE)
-       .word   CONFIG_SPL_TEXT_BASE
-#else
-       .word   CONFIG_SYS_TEXT_BASE
-#endif
-
-/*
- * These are defined in the board-specific linker script.
- * Subtracting _start from them lets the linker put their
- * relative position in the executable instead of leaving
- * them null.
- */
-.globl _bss_start_ofs
-_bss_start_ofs:
-       .word __bss_start - _start
-
-.globl _bss_end_ofs
-_bss_end_ofs:
-       .word __bss_end - _start
-
-.globl _end_ofs
-_end_ofs:
-       .word _end - _start
-
 #ifdef CONFIG_USE_IRQ
 /* IRQ stack memory (calculated at run-time) */
 .globl IRQ_STACK_START
diff --git a/arch/arm/cpu/pxa/start.S b/arch/arm/cpu/pxa/start.S
index d8fb812..ae0d13c 100644
--- a/arch/arm/cpu/pxa/start.S
+++ b/arch/arm/cpu/pxa/start.S
@@ -84,32 +84,6 @@ _end_vect:
  *************************************************************************
  */
 
-.globl _TEXT_BASE
-_TEXT_BASE:
-#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_TEXT_BASE)
-       .word   CONFIG_SPL_TEXT_BASE
-#else
-       .word   CONFIG_SYS_TEXT_BASE
-#endif
-
-/*
- * These are defined in the board-specific linker script.
- * Subtracting _start from them lets the linker put their
- * relative position in the executable instead of leaving
- * them null.
- */
-.globl _bss_start_ofs
-_bss_start_ofs:
-       .word __bss_start - _start
-
-.globl _bss_end_ofs
-_bss_end_ofs:
-       .word __bss_end - _start
-
-.globl _end_ofs
-_end_ofs:
-       .word _end - _start
-
 #ifdef CONFIG_USE_IRQ
 /* IRQ stack memory (calculated at run-time) */
 .globl IRQ_STACK_START
@@ -316,7 +290,6 @@ cpu_init_crit:
 #ifdef CONFIG_SPL_BUILD
        .align  5
 do_hang:
-       ldr     sp, _TEXT_BASE                  /* use 32 words about stack */
        bl      hang                            /* hang and never return */
 #else  /* !CONFIG_SPL_BUILD */
        .align  5
diff --git a/arch/arm/cpu/sa1100/start.S b/arch/arm/cpu/sa1100/start.S
index 27bcda5..bf80937 100644
--- a/arch/arm/cpu/sa1100/start.S
+++ b/arch/arm/cpu/sa1100/start.S
@@ -56,32 +56,6 @@ _fiq:                        .word fiq
  *************************************************************************
  */
 
-.globl _TEXT_BASE
-_TEXT_BASE:
-#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_TEXT_BASE)
-       .word   CONFIG_SPL_TEXT_BASE
-#else
-       .word   CONFIG_SYS_TEXT_BASE
-#endif
-
-/*
- * These are defined in the board-specific linker script.
- * Subtracting _start from them lets the linker put their
- * relative position in the executable instead of leaving
- * them null.
- */
-.globl _bss_start_ofs
-_bss_start_ofs:
-       .word __bss_start - _start
-
-.globl _bss_end_ofs
-_bss_end_ofs:
-       .word __bss_end - _start
-
-.globl _end_ofs
-_end_ofs:
-       .word _end - _start
-
 #ifdef CONFIG_USE_IRQ
 /* IRQ stack memory (calculated at run-time) */
 .globl IRQ_STACK_START
diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c
index 34f50b0..f8ac573 100644
--- a/arch/arm/lib/board.c
+++ b/arch/arm/lib/board.c
@@ -105,8 +105,8 @@ static int display_banner(void)
 {
        printf("\n\n%s\n\n", version_string);
        debug("U-Boot code: %08lX -> %08lX  BSS: -> %08lX\n",
-              _TEXT_BASE,
-              _bss_start_ofs + _TEXT_BASE, _bss_end_ofs + _TEXT_BASE);
+              (ulong)&_start,
+              (ulong)&__bss_start, (ulong)&__bss_end);
 #ifdef CONFIG_MODEM_SUPPORT
        debug("Modem Support enabled\n");
 #endif
@@ -277,13 +277,13 @@ void board_init_f(ulong bootflag)
 
        memset((void *)gd, 0, sizeof(gd_t));
 
-       gd->mon_len = _bss_end_ofs;
+       gd->mon_len = (ulong)&__bss_end - (ulong)_start;
 #ifdef CONFIG_OF_EMBED
        /* Get a pointer to the FDT */
        gd->fdt_blob = _binary_dt_dtb_start;
 #elif defined CONFIG_OF_SEPARATE
        /* FDT is at end of image */
-       gd->fdt_blob = (void *)(_end_ofs + _TEXT_BASE);
+       gd->fdt_blob = &_end;
 #endif
        /* Allow the early environment to override the fdt address */
        gd->fdt_blob = (void *)getenv_ulong("fdtcontroladdr", 16,
@@ -451,7 +451,7 @@ void board_init_f(ulong bootflag)
 
        gd->relocaddr = addr;
        gd->start_addr_sp = addr_sp;
-       gd->reloc_off = addr - _TEXT_BASE;
+       gd->reloc_off = addr - (ulong)&_start;
        debug("relocation Offset is: %08lx\n", gd->reloc_off);
        if (new_fdt) {
                memcpy(new_fdt, gd->fdt_blob, fdt_size);
@@ -516,7 +516,7 @@ void board_init_r(gd_t *id, ulong dest_addr)
        gd->flags |= GD_FLG_RELOC;      /* tell others: relocation done */
        bootstage_mark_name(BOOTSTAGE_ID_START_UBOOT_R, "board_init_r");
 
-       monitor_flash_len = _end_ofs;
+       monitor_flash_len = (ulong)&__rel_dyn_end - (ulong)_start;
 
        /* Enable caches */
        enable_caches();
diff --git a/board/armltd/integrator/lowlevel_init.S 
b/board/armltd/integrator/lowlevel_init.S
index 389d5e9..0fb42ad 100644
--- a/board/armltd/integrator/lowlevel_init.S
+++ b/board/armltd/integrator/lowlevel_init.S
@@ -183,7 +183,7 @@ cm_remap:
 
        /* Now 0x00000000 is writeable, replace the vectors     */
        ldr     r0, =_start     /* r0 <- start of vectors       */
-       ldr     r2, =_TEXT_BASE /* r2 <- past vectors   */
+       add     r2, r0, #64     /* r2 <- past vectors   */
        sub     r1,r1,r1                /* destination 0x00000000       */
 
 copy_vec:
diff --git a/board/cm4008/flash.c b/board/cm4008/flash.c
index 2511928..8315a57 100644
--- a/board/cm4008/flash.c
+++ b/board/cm4008/flash.c
@@ -57,7 +57,7 @@ unsigned long flash_init (void)
         */
        flash_protect (FLAG_PROTECT_SET,
                       CONFIG_SYS_FLASH_BASE,
-                      CONFIG_SYS_FLASH_BASE + _bss_start_ofs,
+                      CONFIG_SYS_FLASH_BASE + (__bss_end - __bss_start),
                       &flash_info[0]);
 
        return size;
diff --git a/board/cm41xx/flash.c b/board/cm41xx/flash.c
index 2511928..8315a57 100644
--- a/board/cm41xx/flash.c
+++ b/board/cm41xx/flash.c
@@ -57,7 +57,7 @@ unsigned long flash_init (void)
         */
        flash_protect (FLAG_PROTECT_SET,
                       CONFIG_SYS_FLASH_BASE,
-                      CONFIG_SYS_FLASH_BASE + _bss_start_ofs,
+                      CONFIG_SYS_FLASH_BASE + (__bss_end - __bss_start),
                       &flash_info[0]);
 
        return size;
diff --git a/board/mpl/vcma9/lowlevel_init.S b/board/mpl/vcma9/lowlevel_init.S
index b889cf9..cca9c0c 100644
--- a/board/mpl/vcma9/lowlevel_init.S
+++ b/board/mpl/vcma9/lowlevel_init.S
@@ -197,13 +197,10 @@
 #define REFCNT_266             0
 /**************************************/
 
-_TEXT_BASE:
-       .word   CONFIG_SYS_TEXT_BASE
-
 .globl lowlevel_init
 lowlevel_init:
        /* use r0 to relocate DATA read/write to flash rather than memory ! */
-       ldr     r0, _TEXT_BASE
+       ldr     r0, =CONFIG_SYS_TEXT_BASE
        ldr     r13, =BWSCON
 
        /* enable minimal access to PLD */
diff --git a/board/mx1ads/lowlevel_init.S b/board/mx1ads/lowlevel_init.S
index d1e472a..3e713cc 100644
--- a/board/mx1ads/lowlevel_init.S
+++ b/board/mx1ads/lowlevel_init.S
@@ -16,10 +16,6 @@
 #define SDCTL0                 0x221000
 #define SDCTL1                 0x221004
 
-
-_TEXT_BASE:
-       .word   CONFIG_SYS_TEXT_BASE
-
 .globl lowlevel_init
 lowlevel_init:
 /* memory controller init              */
diff --git a/board/samsung/goni/lowlevel_init.S 
b/board/samsung/goni/lowlevel_init.S
index 726211a..d52bc09 100644
--- a/board/samsung/goni/lowlevel_init.S
+++ b/board/samsung/goni/lowlevel_init.S
@@ -22,9 +22,6 @@
  * r9 has Mobile DDR size, 1 means 1GiB, 2 means 2GiB and so on
  */
 
-_TEXT_BASE:
-       .word   CONFIG_SYS_TEXT_BASE
-
        .globl lowlevel_init
 lowlevel_init:
        mov     r11, lr
diff --git a/board/samsung/smdk2410/lowlevel_init.S 
b/board/samsung/smdk2410/lowlevel_init.S
index c7b78fd..5de04f1 100644
--- a/board/samsung/smdk2410/lowlevel_init.S
+++ b/board/samsung/smdk2410/lowlevel_init.S
@@ -110,16 +110,13 @@
 #define REFCNT                 1113    /* period=15.6us, HCLK=60Mhz, 
(2048+1-15.6*60) */
 /**************************************/
 
-_TEXT_BASE:
-       .word   CONFIG_SYS_TEXT_BASE
-
 .globl lowlevel_init
 lowlevel_init:
        /* memory control configuration */
        /* make r0 relative the current location so that it */
        /* reads SMRDATA out of FLASH rather than memory ! */
        ldr     r0, =SMRDATA
-       ldr     r1, _TEXT_BASE
+       ldr     r1, =CONFIG_SYS_TEXT_BASE
        sub     r0, r0, r1
        ldr     r1, =BWSCON     /* Bus Width Status Controller */
        add     r2, r0, #13*4
diff --git a/board/samsung/smdk5250/lowlevel_init.S 
b/board/samsung/smdk5250/lowlevel_init.S
index 9003e2d..8e389cc 100644
--- a/board/samsung/smdk5250/lowlevel_init.S
+++ b/board/samsung/smdk5250/lowlevel_init.S
@@ -10,9 +10,6 @@
 #include <version.h>
 #include <asm/arch/cpu.h>
 
-_TEXT_BASE:
-       .word   CONFIG_SYS_TEXT_BASE
-
        .globl lowlevel_init
 lowlevel_init:
 
@@ -47,7 +44,7 @@ lowlevel_init:
        ldr     r0, =0x0ffffff          /* r0 <- Mask Bits*/
        bic     r1, pc, r0              /* pc <- current addr of code */
                                        /* r1 <- unmasked bits of pc */
-       ldr     r2, _TEXT_BASE          /* r2 <- original base addr in ram */
+       ldr     r2, =CONFIG_SYS_TEXT_BASE /* r2 <- original base addr in ram */
        bic     r2, r2, r0              /* r2 <- unmasked bits of r2*/
        cmp     r1, r2                  /* compare r1, r2 */
        beq     1f                      /* r0 == r1 then skip sdram init */
diff --git a/board/samsung/smdkc100/lowlevel_init.S 
b/board/samsung/smdkc100/lowlevel_init.S
index 4df0974..65e6b7a 100644
--- a/board/samsung/smdkc100/lowlevel_init.S
+++ b/board/samsung/smdkc100/lowlevel_init.S
@@ -17,9 +17,6 @@
  * r5 has zero always
  */
 
-_TEXT_BASE:
-       .word   CONFIG_SYS_TEXT_BASE
-
        .globl lowlevel_init
 lowlevel_init:
        mov     r9, lr
diff --git a/board/ti/omap5912osk/lowlevel_init.S 
b/board/ti/omap5912osk/lowlevel_init.S
index cad0a5a..e05a1c7 100644
--- a/board/ti/omap5912osk/lowlevel_init.S
+++ b/board/ti/omap5912osk/lowlevel_init.S
@@ -18,10 +18,6 @@
 #include <./configs/omap1510.h>
 #endif
 
-
-_TEXT_BASE:
-       .word   CONFIG_SYS_TEXT_BASE    /* sdram load addr from config.mk */
-
 .globl lowlevel_init
 lowlevel_init:
 
diff --git a/board/ti/omap730p2/lowlevel_init.S 
b/board/ti/omap730p2/lowlevel_init.S
index 795c495..c7ea21b 100644
--- a/board/ti/omap730p2/lowlevel_init.S
+++ b/board/ti/omap730p2/lowlevel_init.S
@@ -24,9 +24,6 @@
 #include <./configs/omap730.h>
 #endif
 
-_TEXT_BASE:
-       .word   CONFIG_SYS_TEXT_BASE    /* sdram load addr from config.mk */
-
 .globl lowlevel_init
 lowlevel_init:
        /* Save callers address in r11 - r11 must never be modified */
diff --git a/common/board_f.c b/common/board_f.c
index 0ada1af..639b3ff 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -149,13 +149,9 @@ static int display_text_info(void)
 #ifndef CONFIG_SANDBOX
        ulong bss_start, bss_end;
 
-#ifdef CONFIG_SYS_SYM_OFFSETS
-       bss_start = _bss_start_ofs + _TEXT_BASE;
-       bss_end = _bss_end_ofs + _TEXT_BASE;
-#else
        bss_start = (ulong)&__bss_start;
        bss_end = (ulong)&__bss_end;
-#endif
+
        debug("U-Boot code: %08X -> %08lX  BSS: -> %08lX\n",
              CONFIG_SYS_TEXT_BASE, bss_start, bss_end);
 #endif
@@ -275,8 +271,8 @@ static int zero_global_data(void)
 
 static int setup_mon_len(void)
 {
-#ifdef CONFIG_SYS_SYM_OFFSETS
-       gd->mon_len = _bss_end_ofs;
+#ifdef __ARM__
+       gd->mon_len = (ulong)&__bss_end - (ulong)_start;
 #elif defined(CONFIG_SANDBOX)
        gd->mon_len = (ulong)&_end - (ulong)_init;
 #else
@@ -358,11 +354,7 @@ static int setup_fdt(void)
        gd->fdt_blob = _binary_dt_dtb_start;
 #elif defined CONFIG_OF_SEPARATE
        /* FDT is at end of image */
-# ifdef CONFIG_SYS_SYM_OFFSETS
-       gd->fdt_blob = (void *)(_end_ofs + CONFIG_SYS_TEXT_BASE);
-# else
        gd->fdt_blob = (ulong *)&_end;
-# endif
 #elif defined(CONFIG_OF_HOSTFILE)
        if (read_fdt_from_file()) {
                puts("Failed to read control FDT\n");
diff --git a/common/board_r.c b/common/board_r.c
index 86ca1cb..9d84d14 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -128,8 +128,8 @@ __weak int fixup_cpu(void)
 
 static int initr_reloc_global_data(void)
 {
-#ifdef CONFIG_SYS_SYM_OFFSETS
-       monitor_flash_len = _end_ofs;
+#ifdef __ARM__
+       monitor_flash_len = _end - __image_copy_start;
 #elif !defined(CONFIG_SANDBOX)
        monitor_flash_len = (ulong)&__init_end - gd->relocaddr;
 #endif
diff --git a/include/asm-generic/sections.h b/include/asm-generic/sections.h
index 7e1eb4b..458952f 100644
--- a/include/asm-generic/sections.h
+++ b/include/asm-generic/sections.h
@@ -63,28 +63,16 @@ extern char __image_copy_end[];
 extern void _start(void);
 
 /*
- * ARM needs to use offsets for symbols, since the values of some symbols
- * are not resolved prior to relocation (and are just 0). Maybe this can be
- * resolved, or maybe other architectures are similar, iwc this should be
- * promoted to an architecture option.
+ * ARM defines its symbols as char[]. Other arches define them as ulongs.
  */
 #ifdef CONFIG_ARM
-#define CONFIG_SYS_SYM_OFFSETS
-#endif
-
-#ifdef CONFIG_SYS_SYM_OFFSETS
-/* Start/end of the relocation entries, as an offset from _start */
-extern ulong _rel_dyn_start_ofs;
-extern ulong _rel_dyn_end_ofs;
-
-/* End of the region to be relocated, as an offset form _start */
-extern ulong _image_copy_end_ofs;
 
-extern ulong _bss_start_ofs;   /* BSS start relative to _start */
-extern ulong _bss_end_ofs;             /* BSS end relative to _start */
-extern ulong _end_ofs;         /* end of image relative to _start */
-
-extern ulong _TEXT_BASE;       /* code start */
+extern char __bss_start[];
+extern char __bss_end[];
+extern char __image_copy_start[];
+extern char __image_copy_end[];
+extern char __rel_dyn_start[];
+extern char __rel_dyn_end[];
 
 #else /* don't use offsets: */
 
-- 
1.8.3.2

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to