arm: remove unneeded symbol offsets and _TEXT_BASE

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.boot@aribaud.net>
master
Albert ARIBAUD 10 years ago
parent d0b5d9da5d
commit b60eff31f3
  1. 6
      README
  2. 27
      arch/arm/cpu/arm1136/start.S
  3. 27
      arch/arm/cpu/arm1176/start.S
  4. 26
      arch/arm/cpu/arm720t/start.S
  5. 26
      arch/arm/cpu/arm920t/start.S
  6. 14
      arch/arm/cpu/arm926ejs/at91/lowlevel_init.S
  7. 27
      arch/arm/cpu/arm926ejs/mxs/start.S
  8. 27
      arch/arm/cpu/arm926ejs/start.S
  9. 26
      arch/arm/cpu/arm946es/start.S
  10. 26
      arch/arm/cpu/arm_intcm/start.S
  11. 3
      arch/arm/cpu/armv7/omap3/lowlevel_init.S
  12. 23
      arch/arm/cpu/armv7/start.S
  13. 27
      arch/arm/cpu/pxa/start.S
  14. 26
      arch/arm/cpu/sa1100/start.S
  15. 12
      arch/arm/lib/board.c
  16. 2
      board/armltd/integrator/lowlevel_init.S
  17. 2
      board/cm4008/flash.c
  18. 2
      board/cm41xx/flash.c
  19. 5
      board/mpl/vcma9/lowlevel_init.S
  20. 3
      board/samsung/goni/lowlevel_init.S
  21. 5
      board/samsung/smdk2410/lowlevel_init.S
  22. 3
      board/samsung/smdkc100/lowlevel_init.S
  23. 4
      board/ti/omap5912osk/lowlevel_init.S
  24. 14
      common/board_f.c
  25. 4
      common/board_r.c
  26. 26
      include/asm-generic/sections.h

@ -3707,12 +3707,6 @@ Configuration Settings:
its config.mk file). If you find problems enabling this option on its config.mk file). If you find problems enabling this option on
your board please report the problem and send patches! 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) - CONFIG_OMAP_PLATFORM_RESET_TIME_MAX_USEC (OMAP only)
This is set by OMAP boards for the max time that reset should 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 be asserted. See doc/README.omap-reset-time for details on how

@ -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 #ifdef CONFIG_USE_IRQ
/* IRQ stack memory (calculated at run-time) */ /* IRQ stack memory (calculated at run-time) */
.globl IRQ_STACK_START .globl IRQ_STACK_START
@ -295,7 +269,6 @@ cpu_init_crit:
#ifdef CONFIG_SPL_BUILD #ifdef CONFIG_SPL_BUILD
.align 5 .align 5
do_hang: do_hang:
ldr sp, _TEXT_BASE /* use 32 words about stack */
bl hang /* hang and never return */ bl hang /* hang and never return */
#else /* !CONFIG_SPL_BUILD */ #else /* !CONFIG_SPL_BUILD */
.align 5 .align 5

@ -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 */ /* IRQ stack memory (calculated at run-time) + 8 bytes */
.globl IRQ_STACK_START_IN .globl IRQ_STACK_START_IN
IRQ_STACK_START_IN: IRQ_STACK_START_IN:

@ -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 #ifdef CONFIG_USE_IRQ
/* IRQ stack memory (calculated at run-time) */ /* IRQ stack memory (calculated at run-time) */
.globl IRQ_STACK_START .globl IRQ_STACK_START

@ -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 #ifdef CONFIG_USE_IRQ
/* IRQ stack memory (calculated at run-time) */ /* IRQ stack memory (calculated at run-time) */
.globl IRQ_STACK_START .globl IRQ_STACK_START

@ -26,27 +26,18 @@
#define CONFIG_SYS_MATRIX_EBICSA_VAL CONFIG_SYS_MATRIX_EBI0CSA_VAL #define CONFIG_SYS_MATRIX_EBICSA_VAL CONFIG_SYS_MATRIX_EBI0CSA_VAL
#endif #endif
_TEXT_BASE:
.word CONFIG_SYS_TEXT_BASE
.globl lowlevel_init .globl lowlevel_init
.type lowlevel_init,function .type lowlevel_init,function
lowlevel_init: lowlevel_init:
mov r5, pc /* r5 = POS1 + 4 current */
POS1: POS1:
adr r5, POS1 /* r5 = POS1 run time */
ldr r0, =POS1 /* r0 = POS1 compile */ 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, r0 /* r0 = CONFIG_SYS_TEXT_BASE-1 */
sub r5, r5, #4 /* r1 = text base - current */
/* memory control configuration 1 */ /* memory control configuration 1 */
ldr r0, =SMRDATA ldr r0, =SMRDATA
ldr r2, =SMRDATA1 ldr r2, =SMRDATA1
ldr r1, _TEXT_BASE
sub r0, r0, r1
sub r2, r2, r1
add r0, r0, r5 add r0, r0, r5
add r2, r2, r5 add r2, r2, r5
0: 0:
@ -149,9 +140,6 @@ PLL_setup_end:
ldr r0, =SMRDATA1 ldr r0, =SMRDATA1
ldr r2, =SMRDATA2 ldr r2, =SMRDATA2
ldr r1, _TEXT_BASE
sub r0, r0, r1
sub r2, r2, r1
add r0, r0, r5 add r0, r0, r5
add r2, r2, r5 add r2, r2, r5
2: 2:

@ -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 #ifdef CONFIG_USE_IRQ
/* IRQ stack memory (calculated at run-time) */ /* IRQ stack memory (calculated at run-time) */
.globl IRQ_STACK_START .globl IRQ_STACK_START
@ -207,6 +181,5 @@ _reset:
bx lr bx lr
_hang: _hang:
ldr sp, _TEXT_BASE /* switch to abort stack */
1: 1:
bl 1b /* hang and never return */ bl 1b /* hang and never return */

@ -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 #ifdef CONFIG_USE_IRQ
/* IRQ stack memory (calculated at run-time) */ /* IRQ stack memory (calculated at run-time) */
.globl IRQ_STACK_START .globl IRQ_STACK_START
@ -330,7 +304,6 @@ flush_dcache:
#ifdef CONFIG_SPL_BUILD #ifdef CONFIG_SPL_BUILD
.align 5 .align 5
do_hang: do_hang:
ldr sp, _TEXT_BASE /* switch to abort stack */
1: 1:
bl 1b /* hang and never return */ bl 1b /* hang and never return */
#else /* !CONFIG_SPL_BUILD */ #else /* !CONFIG_SPL_BUILD */

@ -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 #ifdef CONFIG_USE_IRQ
/* IRQ stack memory (calculated at run-time) */ /* IRQ stack memory (calculated at run-time) */
.globl IRQ_STACK_START .globl IRQ_STACK_START

@ -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 #ifdef CONFIG_USE_IRQ
/* IRQ stack memory (calculated at run-time) */ /* IRQ stack memory (calculated at run-time) */
.globl IRQ_STACK_START .globl IRQ_STACK_START

@ -17,9 +17,6 @@
#include <asm/arch/clocks_omap3.h> #include <asm/arch/clocks_omap3.h>
#include <linux/linkage.h> #include <linux/linkage.h>
_TEXT_BASE:
.word CONFIG_SYS_TEXT_BASE /* sdram load addr from config.mk */
#ifdef CONFIG_SPL_BUILD #ifdef CONFIG_SPL_BUILD
ENTRY(save_boot_params) ENTRY(save_boot_params)
ldr r4, =omap3_boot_device ldr r4, =omap3_boot_device

@ -70,29 +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.
*/
.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 #ifdef CONFIG_USE_IRQ
/* IRQ stack memory (calculated at run-time) */ /* IRQ stack memory (calculated at run-time) */
.globl IRQ_STACK_START .globl IRQ_STACK_START

@ -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 #ifdef CONFIG_USE_IRQ
/* IRQ stack memory (calculated at run-time) */ /* IRQ stack memory (calculated at run-time) */
.globl IRQ_STACK_START .globl IRQ_STACK_START
@ -316,7 +290,6 @@ cpu_init_crit:
#ifdef CONFIG_SPL_BUILD #ifdef CONFIG_SPL_BUILD
.align 5 .align 5
do_hang: do_hang:
ldr sp, _TEXT_BASE /* use 32 words about stack */
bl hang /* hang and never return */ bl hang /* hang and never return */
#else /* !CONFIG_SPL_BUILD */ #else /* !CONFIG_SPL_BUILD */
.align 5 .align 5

@ -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 #ifdef CONFIG_USE_IRQ
/* IRQ stack memory (calculated at run-time) */ /* IRQ stack memory (calculated at run-time) */
.globl IRQ_STACK_START .globl IRQ_STACK_START

@ -105,8 +105,8 @@ static int display_banner(void)
{ {
printf("\n\n%s\n\n", version_string); printf("\n\n%s\n\n", version_string);
debug("U-Boot code: %08lX -> %08lX BSS: -> %08lX\n", debug("U-Boot code: %08lX -> %08lX BSS: -> %08lX\n",
_TEXT_BASE, (ulong)&_start,
_bss_start_ofs + _TEXT_BASE, _bss_end_ofs + _TEXT_BASE); (ulong)&__bss_start, (ulong)&__bss_end);
#ifdef CONFIG_MODEM_SUPPORT #ifdef CONFIG_MODEM_SUPPORT
debug("Modem Support enabled\n"); debug("Modem Support enabled\n");
#endif #endif
@ -273,13 +273,13 @@ void board_init_f(ulong bootflag)
memset((void *)gd, 0, sizeof(gd_t)); 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 #ifdef CONFIG_OF_EMBED
/* Get a pointer to the FDT */ /* Get a pointer to the FDT */
gd->fdt_blob = __dtb_db_begin; gd->fdt_blob = __dtb_db_begin;
#elif defined CONFIG_OF_SEPARATE #elif defined CONFIG_OF_SEPARATE
/* FDT is at end of image */ /* FDT is at end of image */
gd->fdt_blob = (void *)(_end_ofs + _TEXT_BASE); gd->fdt_blob = &_end;
#endif #endif
/* Allow the early environment to override the fdt address */ /* Allow the early environment to override the fdt address */
gd->fdt_blob = (void *)getenv_ulong("fdtcontroladdr", 16, gd->fdt_blob = (void *)getenv_ulong("fdtcontroladdr", 16,
@ -451,7 +451,7 @@ void board_init_f(ulong bootflag)
gd->relocaddr = addr; gd->relocaddr = addr;
gd->start_addr_sp = addr_sp; 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); debug("relocation Offset is: %08lx\n", gd->reloc_off);
if (new_fdt) { if (new_fdt) {
memcpy(new_fdt, gd->fdt_blob, fdt_size); 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 */ gd->flags |= GD_FLG_RELOC; /* tell others: relocation done */
bootstage_mark_name(BOOTSTAGE_ID_START_UBOOT_R, "board_init_r"); 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 */
enable_caches(); enable_caches();

@ -183,7 +183,7 @@ cm_remap:
/* Now 0x00000000 is writeable, replace the vectors */ /* Now 0x00000000 is writeable, replace the vectors */
ldr r0, =_start /* r0 <- start of 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 */ sub r1,r1,r1 /* destination 0x00000000 */
copy_vec: copy_vec:

@ -57,7 +57,7 @@ unsigned long flash_init (void)
*/ */
flash_protect (FLAG_PROTECT_SET, flash_protect (FLAG_PROTECT_SET,
CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE,
CONFIG_SYS_FLASH_BASE + _bss_start_ofs, CONFIG_SYS_FLASH_BASE + (__bss_end - __bss_start),
&flash_info[0]); &flash_info[0]);
return size; return size;

@ -57,7 +57,7 @@ unsigned long flash_init (void)
*/ */
flash_protect (FLAG_PROTECT_SET, flash_protect (FLAG_PROTECT_SET,
CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE,
CONFIG_SYS_FLASH_BASE + _bss_start_ofs, CONFIG_SYS_FLASH_BASE + (__bss_end - __bss_start),
&flash_info[0]); &flash_info[0]);
return size; return size;

@ -197,13 +197,10 @@
#define REFCNT_266 0 #define REFCNT_266 0
/**************************************/ /**************************************/
_TEXT_BASE:
.word CONFIG_SYS_TEXT_BASE
.globl lowlevel_init .globl lowlevel_init
lowlevel_init: lowlevel_init:
/* use r0 to relocate DATA read/write to flash rather than memory ! */ /* 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 ldr r13, =BWSCON
/* enable minimal access to PLD */ /* enable minimal access to PLD */

@ -22,9 +22,6 @@
* r9 has Mobile DDR size, 1 means 1GiB, 2 means 2GiB and so on * r9 has Mobile DDR size, 1 means 1GiB, 2 means 2GiB and so on
*/ */
_TEXT_BASE:
.word CONFIG_SYS_TEXT_BASE
.globl lowlevel_init .globl lowlevel_init
lowlevel_init: lowlevel_init:
mov r11, lr mov r11, lr

@ -110,16 +110,13 @@
#define REFCNT 1113 /* period=15.6us, HCLK=60Mhz, (2048+1-15.6*60) */ #define REFCNT 1113 /* period=15.6us, HCLK=60Mhz, (2048+1-15.6*60) */
/**************************************/ /**************************************/
_TEXT_BASE:
.word CONFIG_SYS_TEXT_BASE
.globl lowlevel_init .globl lowlevel_init
lowlevel_init: lowlevel_init:
/* memory control configuration */ /* memory control configuration */
/* make r0 relative the current location so that it */ /* make r0 relative the current location so that it */
/* reads SMRDATA out of FLASH rather than memory ! */ /* reads SMRDATA out of FLASH rather than memory ! */
ldr r0, =SMRDATA ldr r0, =SMRDATA
ldr r1, _TEXT_BASE ldr r1, =CONFIG_SYS_TEXT_BASE
sub r0, r0, r1 sub r0, r0, r1
ldr r1, =BWSCON /* Bus Width Status Controller */ ldr r1, =BWSCON /* Bus Width Status Controller */
add r2, r0, #13*4 add r2, r0, #13*4

@ -17,9 +17,6 @@
* r5 has zero always * r5 has zero always
*/ */
_TEXT_BASE:
.word CONFIG_SYS_TEXT_BASE
.globl lowlevel_init .globl lowlevel_init
lowlevel_init: lowlevel_init:
mov r9, lr mov r9, lr

@ -18,10 +18,6 @@
#include <./configs/omap1510.h> #include <./configs/omap1510.h>
#endif #endif
_TEXT_BASE:
.word CONFIG_SYS_TEXT_BASE /* sdram load addr from config.mk */
.globl lowlevel_init .globl lowlevel_init
lowlevel_init: lowlevel_init:

@ -149,13 +149,9 @@ static int display_text_info(void)
#ifndef CONFIG_SANDBOX #ifndef CONFIG_SANDBOX
ulong bss_start, bss_end; 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_start = (ulong)&__bss_start;
bss_end = (ulong)&__bss_end; bss_end = (ulong)&__bss_end;
#endif
debug("U-Boot code: %08X -> %08lX BSS: -> %08lX\n", debug("U-Boot code: %08X -> %08lX BSS: -> %08lX\n",
CONFIG_SYS_TEXT_BASE, bss_start, bss_end); CONFIG_SYS_TEXT_BASE, bss_start, bss_end);
#endif #endif
@ -279,8 +275,8 @@ static int zero_global_data(void)
static int setup_mon_len(void) static int setup_mon_len(void)
{ {
#ifdef CONFIG_SYS_SYM_OFFSETS #ifdef __ARM__
gd->mon_len = _bss_end_ofs; gd->mon_len = (ulong)&__bss_end - (ulong)_start;
#elif defined(CONFIG_SANDBOX) #elif defined(CONFIG_SANDBOX)
gd->mon_len = (ulong)&_end - (ulong)_init; gd->mon_len = (ulong)&_end - (ulong)_init;
#else #else
@ -363,11 +359,7 @@ static int setup_fdt(void)
gd->fdt_blob = __dtb_dt_begin; gd->fdt_blob = __dtb_dt_begin;
#elif defined CONFIG_OF_SEPARATE #elif defined CONFIG_OF_SEPARATE
/* FDT is at end of image */ /* 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; gd->fdt_blob = (ulong *)&_end;
# endif
#elif defined(CONFIG_OF_HOSTFILE) #elif defined(CONFIG_OF_HOSTFILE)
if (read_fdt_from_file()) { if (read_fdt_from_file()) {
puts("Failed to read control FDT\n"); puts("Failed to read control FDT\n");

@ -128,8 +128,8 @@ __weak int fixup_cpu(void)
static int initr_reloc_global_data(void) static int initr_reloc_global_data(void)
{ {
#ifdef CONFIG_SYS_SYM_OFFSETS #ifdef __ARM__
monitor_flash_len = _end_ofs; monitor_flash_len = _end - __image_copy_start;
#elif !defined(CONFIG_SANDBOX) #elif !defined(CONFIG_SANDBOX)
monitor_flash_len = (ulong)&__init_end - gd->relocaddr; monitor_flash_len = (ulong)&__init_end - gd->relocaddr;
#endif #endif

@ -63,28 +63,16 @@ extern char __image_copy_end[];
extern void _start(void); extern void _start(void);
/* /*
* ARM needs to use offsets for symbols, since the values of some symbols * ARM defines its symbols as char[]. Other arches define them as ulongs.
* 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.
*/ */
#ifdef CONFIG_ARM #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 char __bss_start[];
extern ulong _bss_end_ofs; /* BSS end relative to _start */ extern char __bss_end[];
extern ulong _end_ofs; /* end of image relative to _start */ extern char __image_copy_start[];
extern char __image_copy_end[];
extern ulong _TEXT_BASE; /* code start */ extern char __rel_dyn_start[];
extern char __rel_dyn_end[];
#else /* don't use offsets: */ #else /* don't use offsets: */

Loading…
Cancel
Save