[Blackfin] arch: handle the most common L1 shrinkage case (L1 does not exist for a part) so that any parts labeled for L1 instead get placed into external memory sections

Signed-off-by: Mike Frysinger <vapier.adi@gmail.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
This commit is contained in:
Mike Frysinger 2008-02-29 11:57:35 +08:00 committed by Bryan Wu
parent 40edad3efa
commit 8b07a2a1e5
1 changed files with 27 additions and 7 deletions

View File

@ -147,44 +147,64 @@ SECTIONS
__l1_lma_start = .; __l1_lma_start = .;
#if L1_CODE_LENGTH
# define LDS_L1_CODE *(.l1.text)
#else
# define LDS_L1_CODE
#endif
.text_l1 L1_CODE_START : AT(LOADADDR(.init.ramfs) + SIZEOF(.init.ramfs)) .text_l1 L1_CODE_START : AT(LOADADDR(.init.ramfs) + SIZEOF(.init.ramfs))
{ {
. = ALIGN(4); . = ALIGN(4);
__stext_l1 = .; __stext_l1 = .;
*(.l1.text) LDS_L1_CODE
. = ALIGN(4); . = ALIGN(4);
__etext_l1 = .; __etext_l1 = .;
} }
#if L1_DATA_A_LENGTH
# define LDS_L1_A_DATA *(.l1.data)
# define LDS_L1_A_BSS *(.l1.bss)
# define LDS_L1_A_CACHE *(.data_l1.cacheline_aligned)
#else
# define LDS_L1_A_DATA
# define LDS_L1_A_BSS
# define LDS_L1_A_CACHE
#endif
.data_l1 L1_DATA_A_START : AT(LOADADDR(.text_l1) + SIZEOF(.text_l1)) .data_l1 L1_DATA_A_START : AT(LOADADDR(.text_l1) + SIZEOF(.text_l1))
{ {
. = ALIGN(4); . = ALIGN(4);
__sdata_l1 = .; __sdata_l1 = .;
*(.l1.data) LDS_L1_A_DATA
__edata_l1 = .; __edata_l1 = .;
. = ALIGN(4); . = ALIGN(4);
__sbss_l1 = .; __sbss_l1 = .;
*(.l1.bss) LDS_L1_A_BSS
. = ALIGN(32); . = ALIGN(32);
*(.data_l1.cacheline_aligned) LDS_L1_A_CACHE
. = ALIGN(4); . = ALIGN(4);
__ebss_l1 = .; __ebss_l1 = .;
} }
#if L1_DATA_B_LENGTH
# define LDS_L1_B_DATA *(.l1.data.B)
# define LDS_L1_B_BSS *(.l1.bss.B)
#else
# define LDS_L1_B_DATA
# define LDS_L1_B_BSS
#endif
.data_b_l1 L1_DATA_B_START : AT(LOADADDR(.data_l1) + SIZEOF(.data_l1)) .data_b_l1 L1_DATA_B_START : AT(LOADADDR(.data_l1) + SIZEOF(.data_l1))
{ {
. = ALIGN(4); . = ALIGN(4);
__sdata_b_l1 = .; __sdata_b_l1 = .;
*(.l1.data.B) LDS_L1_B_DATA
__edata_b_l1 = .; __edata_b_l1 = .;
. = ALIGN(4); . = ALIGN(4);
__sbss_b_l1 = .; __sbss_b_l1 = .;
*(.l1.bss.B) LDS_L1_B_BSS
. = ALIGN(4); . = ALIGN(4);
__ebss_b_l1 = .; __ebss_b_l1 = .;