123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819 |
- From b60eff31f3bd71a6f14b6c6efc8ad5fb3705de6d Mon Sep 17 00:00:00 2001
- From: Albert ARIBAUD <albert.u.boot@aribaud.net>
- Date: Sat, 22 Feb 2014 17:53:43 +0100
- Subject: [PATCH] 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>
- ---
- 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/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/samsung/goni/lowlevel_init.S | 3 ---
- board/samsung/smdk2410/lowlevel_init.S | 5 +----
- board/samsung/smdkc100/lowlevel_init.S | 3 ---
- board/ti/omap5912osk/lowlevel_init.S | 4 ----
- common/board_f.c | 14 +++-----------
- common/board_r.c | 4 ++--
- include/asm-generic/sections.h | 26 +++++++-------------------
- 26 files changed, 24 insertions(+), 369 deletions(-)
- diff --git a/README b/README
- index d4eb099..5b7dec9 100644
- --- a/README
- +++ b/README
- @@ -3707,12 +3707,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 5aac773..ac1e55a 100644
- --- a/arch/arm/cpu/armv7/start.S
- +++ b/arch/arm/cpu/armv7/start.S
- @@ -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
- /* 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 c320a35..1de5812 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/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/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/common/board_f.c b/common/board_f.c
- index 02965b0..5b9ba07 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
- @@ -279,8 +275,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
- @@ -363,11 +359,7 @@ static int setup_fdt(void)
- gd->fdt_blob = __dtb_dt_begin;
- #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 c2d0763..899f377 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: */
-
|