diff options
author | Mike Frysinger <vapier@gentoo.org> | 2009-09-23 20:34:48 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2009-12-15 00:13:55 -0500 |
commit | 5cd82a6d58cb14c3a5d08ed171229de7adc3deac (patch) | |
tree | 3e72b56fef6e99ab2032d88138440b57543e3c02 /arch/blackfin/include/asm/sections.h | |
parent | 13048f8866390a26a7b657e0ca28100e2660063a (diff) | |
download | linux-5cd82a6d58cb14c3a5d08ed171229de7adc3deac.tar.gz linux-5cd82a6d58cb14c3a5d08ed171229de7adc3deac.tar.bz2 linux-5cd82a6d58cb14c3a5d08ed171229de7adc3deac.zip |
Blackfin: calculate on-chip lengths at link time rather than run time
Since the link sizes never change at runtime, push the calculation out to
the linker script to save some useless calculation costs.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'arch/blackfin/include/asm/sections.h')
-rw-r--r-- | arch/blackfin/include/asm/sections.h | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/arch/blackfin/include/asm/sections.h b/arch/blackfin/include/asm/sections.h index 1f5381fbb4a7..42f6c53c59c6 100644 --- a/arch/blackfin/include/asm/sections.h +++ b/arch/blackfin/include/asm/sections.h @@ -13,10 +13,18 @@ extern unsigned long memory_mtd_start, memory_mtd_end, mtd_size; extern unsigned long _ramstart, _ramend, _rambase; extern unsigned long memory_start, memory_end, physical_mem_end; -extern char _stext_l1[], _etext_l1[], _sdata_l1[], _edata_l1[], _sbss_l1[], - _ebss_l1[], _l1_lma_start[], _sdata_b_l1[], _sbss_b_l1[], _ebss_b_l1[], - _stext_l2[], _etext_l2[], _sdata_l2[], _edata_l2[], _sbss_l2[], - _ebss_l2[], _l2_lma_start[]; +/* + * The weak markings on the lengths might seem weird, but this is required + * in order to make gcc accept the fact that these may actually have a value + * of 0 (since they aren't actually addresses, but sizes of sections). + */ +extern char _stext_l1[], _etext_l1[], _text_l1_lma[], __weak _text_l1_len[]; +extern char _sdata_l1[], _edata_l1[], _sbss_l1[], _ebss_l1[], + _data_l1_lma[], __weak _data_l1_len[]; +extern char _sdata_b_l1[], _edata_b_l1[], _sbss_b_l1[], _ebss_b_l1[], + _data_b_l1_lma[], __weak _data_b_l1_len[]; +extern char _stext_l2[], _etext_l2[], _sdata_l2[], _edata_l2[], + _sbss_l2[], _ebss_l2[], _l2_lma[], __weak _l2_len[]; #include <asm/mem_map.h> |