[U-Boot] [PATCH 2/4] arm: make __image_copy_{start, end} compiler-generated

Albert ARIBAUD
2013-05-10T21:56:50Z

Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
---
arch/arm/cpu/arm1136/start.S | 7 +++----
arch/arm/cpu/arm1136/u-boot-spl.lds | 3 ++-
arch/arm/cpu/arm720t/start.S | 11 +++++++----
arch/arm/cpu/arm920t/ep93xx/u-boot.lds | 6 +++++-
arch/arm/cpu/arm926ejs/start.S | 7 +++----
arch/arm/cpu/armv7/am33xx/u-boot-spl.lds | 2 --
arch/arm/cpu/armv7/omap-common/u-boot-spl.lds | 2 --
arch/arm/cpu/armv7/socfpga/u-boot-spl.lds | 1 -
arch/arm/cpu/armv7/start.S | 6 ++----
arch/arm/cpu/ixp/u-boot.lds | 6 +++++-
arch/arm/cpu/u-boot-spl.lds | 3 +--
arch/arm/cpu/u-boot.lds | 7 +++++--
arch/arm/lib/sections.c | 4 +++-
13 files changed, 36 insertions(+), 29 deletions(-)

diff --git a/arch/arm/cpu/arm1136/start.S b/arch/arm/cpu/arm1136/start.S
index ccea2d5..ab8fd56 100644
--- a/arch/arm/cpu/arm1136/start.S
+++ b/arch/arm/cpu/arm1136/start.S
@@ -104,10 +104,6 @@ _TEXT_BASE:
_bss_start_ofs:
.word __bss_start - _start

-.globl _image_copy_end_ofs
-_image_copy_end_ofs:
- .word __image_copy_end - _start
-
.globl _bss_end_ofs
_bss_end_ofs:
.word __bss_end - _start
@@ -239,6 +235,9 @@ relocate_done:

bx lr

+_image_copy_end_ofs:
+ .word __image_copy_end - _start
+
#ifndef CONFIG_SPL_BUILD

_rel_dyn_start_ofs:
diff --git a/arch/arm/cpu/arm1136/u-boot-spl.lds b/arch/arm/cpu/arm1136/u-boot-spl.lds
index 8296e5d..04fc881 100644
--- a/arch/arm/cpu/arm1136/u-boot-spl.lds
+++ b/arch/arm/cpu/arm1136/u-boot-spl.lds
@@ -37,7 +37,6 @@ SECTIONS
{
.text :
{
- __start = .;
arch/arm/cpu/arm1136/start.o (.text*)
*(.text*)
} >.sram
@@ -48,7 +47,9 @@ SECTIONS
. = ALIGN(4);
.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
. = ALIGN(4);
+
__image_copy_end = .;
+
_end = .;

.bss :
diff --git a/arch/arm/cpu/arm720t/start.S b/arch/arm/cpu/arm720t/start.S
index 9facc7e..b85509c 100644
--- a/arch/arm/cpu/arm720t/start.S
+++ b/arch/arm/cpu/arm720t/start.S
@@ -101,10 +101,6 @@ _TEXT_BASE:
_bss_start_ofs:
.word __bss_start - _start

-.globl _image_copy_end_ofs
-_image_copy_end_ofs:
- .word __image_copy_end - _start
-
.globl _bss_end_ofs
_bss_end_ofs:
.word __bss_end - _start
@@ -221,6 +217,11 @@ relocate_done:

mov pc, lr

+_image_copy_end_ofs:
+ .word __image_copy_end - _start
+
+#ifndef CONFIG_SPL_BUILD
+
_rel_dyn_start_ofs:
.word __rel_dyn_start - _start
_rel_dyn_end_ofs:
@@ -228,6 +229,8 @@ _rel_dyn_end_ofs:
_dynsym_start_ofs:
.word __dynsym_start - _start

+#endif
+
.globl c_runtime_cpu_setup
c_runtime_cpu_setup:

diff --git a/arch/arm/cpu/arm920t/ep93xx/u-boot.lds b/arch/arm/cpu/arm920t/ep93xx/u-boot.lds
index cf55bf7..2b32c0a 100644
--- a/arch/arm/cpu/arm920t/ep93xx/u-boot.lds
+++ b/arch/arm/cpu/arm920t/ep93xx/u-boot.lds
@@ -31,6 +31,7 @@ SECTIONS
. = ALIGN(4);
.text :
{
+ *(.__image_copy_start)
arch/arm/cpu/arm920t/start.o (.text*)
/* the EP93xx expects to find the pattern 'CRUS' at 0x1000 */
. = 0x1000;
@@ -56,7 +57,10 @@ SECTIONS

. = ALIGN(4);

- __image_copy_end = .;
+ .image_copy_end :
+ {
+ *(.__image_copy_end);
+ }

__bss_start = .;
.bss : { *(.bss*) }
diff --git a/arch/arm/cpu/arm926ejs/start.S b/arch/arm/cpu/arm926ejs/start.S
index 4c56711..736361a 100644
--- a/arch/arm/cpu/arm926ejs/start.S
+++ b/arch/arm/cpu/arm926ejs/start.S
@@ -136,10 +136,6 @@ _TEXT_BASE:
_bss_start_ofs:
.word __bss_start - _start

-.globl _image_copy_end_ofs
-_image_copy_end_ofs:
- .word __image_copy_end - _start
-
.globl _bss_end_ofs
_bss_end_ofs:
.word __bss_end - _start
@@ -256,6 +252,9 @@ relocate_done:

bx lr

+_image_copy_end_ofs:
+ .word __image_copy_end - _start
+
#ifndef CONFIG_SPL_BUILD

_rel_dyn_start_ofs:
diff --git a/arch/arm/cpu/armv7/am33xx/u-boot-spl.lds b/arch/arm/cpu/armv7/am33xx/u-boot-spl.lds
index b6a929f..29cefd0 100644
--- a/arch/arm/cpu/armv7/am33xx/u-boot-spl.lds
+++ b/arch/arm/cpu/armv7/am33xx/u-boot-spl.lds
@@ -37,7 +37,6 @@ SECTIONS
{
.text :
{
- __start = .;
arch/arm/cpu/armv7/start.o (.text)
*(.text*)
} >.sram
@@ -53,7 +52,6 @@ SECTIONS
} >.sram

. = ALIGN(4);
- __image_copy_end = .;
_end = .;

.bss :
diff --git a/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds b/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds
index bd218c0..81cafe1 100644
--- a/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds
+++ b/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds
@@ -37,7 +37,6 @@ SECTIONS
{
.text :
{
- __start = .;
arch/arm/cpu/armv7/start.o (.text*)
*(.text*)
} >.sram
@@ -49,7 +48,6 @@ SECTIONS
.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram

. = ALIGN(4);
- __image_copy_end = .;
_end = .;

.bss :
diff --git a/arch/arm/cpu/armv7/socfpga/u-boot-spl.lds b/arch/arm/cpu/armv7/socfpga/u-boot-spl.lds
index 15f8c01..c0dcfd7 100644
--- a/arch/arm/cpu/armv7/socfpga/u-boot-spl.lds
+++ b/arch/arm/cpu/armv7/socfpga/u-boot-spl.lds
@@ -38,7 +38,6 @@ SECTIONS
.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sdram

. = ALIGN(4);
- __image_copy_end = .;
_end = .;

.bss : {
diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S
index e9e57e6..3ade510 100644
--- a/arch/arm/cpu/armv7/start.S
+++ b/arch/arm/cpu/armv7/start.S
@@ -94,10 +94,6 @@ _TEXT_BASE:
_bss_start_ofs:
.word __bss_start - _start

-.globl _image_copy_end_ofs
-_image_copy_end_ofs:
- .word __image_copy_end - _start
-
.globl _bss_end_ofs
_bss_end_ofs:
.word __bss_end - _start
@@ -231,6 +227,8 @@ relocate_done:

bx lr

+_image_copy_end_ofs:
+ .word __image_copy_end - _start
_rel_dyn_start_ofs:
.word __rel_dyn_start - _start
_rel_dyn_end_ofs:
diff --git a/arch/arm/cpu/ixp/u-boot.lds b/arch/arm/cpu/ixp/u-boot.lds
index 553589c..1a0ba17 100644
--- a/arch/arm/cpu/ixp/u-boot.lds
+++ b/arch/arm/cpu/ixp/u-boot.lds
@@ -31,6 +31,7 @@ SECTIONS
. = ALIGN(4);
.text :
{
+ *(.__image_copy_start)
arch/arm/cpu/ixp/start.o(.text*)
*(.text*)
}
@@ -54,7 +55,10 @@ SECTIONS

. = ALIGN(4);

- __image_copy_end = .;
+ .image_copy_end :
+ {
+ *(.__image_copy_end);
+ }

.rel.dyn : {
__rel_dyn_start = .;
diff --git a/arch/arm/cpu/u-boot-spl.lds b/arch/arm/cpu/u-boot-spl.lds
index 1408f03..87341c1 100644
--- a/arch/arm/cpu/u-boot-spl.lds
+++ b/arch/arm/cpu/u-boot-spl.lds
@@ -33,7 +33,6 @@ SECTIONS
. = ALIGN(4);
.text :
{
- __image_copy_start = .;
CPUDIR/start.o (.text*)
*(.text*)
}
@@ -80,7 +79,7 @@ SECTIONS
}

#if defined(CONFIG_SPL_MAX_SIZE)
-ASSERT(__image_copy_end - __image_copy_start < (CONFIG_SPL_MAX_SIZE), \
+ASSERT(__image_copy_end - _start < (CONFIG_SPL_MAX_SIZE), \
"SPL image too big");
#endif

diff --git a/arch/arm/cpu/u-boot.lds b/arch/arm/cpu/u-boot.lds
index d9bbee3..5b43621 100644
--- a/arch/arm/cpu/u-boot.lds
+++ b/arch/arm/cpu/u-boot.lds
@@ -33,7 +33,7 @@ SECTIONS
. = ALIGN(4);
.text :
{
- __image_copy_start = .;
+ *(.__image_copy_start)
CPUDIR/start.o (.text*)
*(.text*)
}
@@ -57,7 +57,10 @@ SECTIONS

. = ALIGN(4);

- __image_copy_end = .;
+ .image_copy_end :
+ {
+ *(.__image_copy_end);
+ }

.rel.dyn : {
__rel_dyn_start = .;
diff --git a/arch/arm/lib/sections.c b/arch/arm/lib/sections.c
index 99eda59..80a0c38 100644
--- a/arch/arm/lib/sections.c
+++ b/arch/arm/lib/sections.c
@@ -21,7 +21,7 @@
*/

/**
- * These two symbols are declared in a C file so that the linker
+ * The following symbols are declared in a C file so that the linker
* uses R_ARM_RELATIVE relocation, rather than the R_ARM_ABS32 one
* it would use if the symbols were defined in the linker file.
* Using only R_ARM_RELATIVE relocation ensures that references to
@@ -37,3 +37,5 @@

char __bss_start[0] __attribute__((used, section(".__bss_start")));
char __bss_end[0] __attribute__((used, section(".__bss_end")));
+char __image_copy_start[0] __attribute__((used, section(".__image_copy_start")));
+char __image_copy_end[0] __attribute__((used, section(".__image_copy_end")));
--
1.7.10.4