From f303ce805abe78bcbab81704bc0d4ad4d0fb8d61 Mon Sep 17 00:00:00 2001 From: André Fabian Silva Delgado Date: Wed, 2 Mar 2016 02:22:04 -0300 Subject: uboot-mx6_cubox-i: add new package to [libre] --- .../remove_unnecessary_inits.patch | 818 +++++++++++++++++++++ 1 file changed, 818 insertions(+) create mode 100644 libre/uboot-mx6_cubox-i/remove_unnecessary_inits.patch (limited to 'libre/uboot-mx6_cubox-i/remove_unnecessary_inits.patch') diff --git a/libre/uboot-mx6_cubox-i/remove_unnecessary_inits.patch b/libre/uboot-mx6_cubox-i/remove_unnecessary_inits.patch new file mode 100644 index 000000000..8ab039177 --- /dev/null +++ b/libre/uboot-mx6_cubox-i/remove_unnecessary_inits.patch @@ -0,0 +1,818 @@ +From b60eff31f3bd71a6f14b6c6efc8ad5fb3705de6d Mon Sep 17 00:00:00 2001 +From: Albert ARIBAUD +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 +--- + 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 + #include + +-_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: */ + -- cgit v1.2.3