ARM: linker script: factor out TCM bits
This is a plain move with identical results, and therefore still broken in the XIP case. Signed-off-by: Nicolas Pitre <nico@linaro.org> Tested-by: Chris Brandt <Chris.Brandt@renesas.com>
This commit is contained in:
@@ -144,60 +144,7 @@ SECTIONS
|
||||
__init_end = .;
|
||||
|
||||
#ifdef CONFIG_HAVE_TCM
|
||||
/*
|
||||
* We align everything to a page boundary so we can
|
||||
* free it after init has commenced and TCM contents have
|
||||
* been copied to its destination.
|
||||
*/
|
||||
.tcm_start : {
|
||||
. = ALIGN(PAGE_SIZE);
|
||||
__tcm_start = .;
|
||||
__itcm_start = .;
|
||||
}
|
||||
|
||||
/*
|
||||
* Link these to the ITCM RAM
|
||||
* Put VMA to the TCM address and LMA to the common RAM
|
||||
* and we'll upload the contents from RAM to TCM and free
|
||||
* the used RAM after that.
|
||||
*/
|
||||
.text_itcm ITCM_OFFSET : AT(__itcm_start)
|
||||
{
|
||||
__sitcm_text = .;
|
||||
*(.tcm.text)
|
||||
*(.tcm.rodata)
|
||||
. = ALIGN(4);
|
||||
__eitcm_text = .;
|
||||
}
|
||||
|
||||
/*
|
||||
* Reset the dot pointer, this is needed to create the
|
||||
* relative __dtcm_start below (to be used as extern in code).
|
||||
*/
|
||||
. = ADDR(.tcm_start) + SIZEOF(.tcm_start) + SIZEOF(.text_itcm);
|
||||
|
||||
.dtcm_start : {
|
||||
__dtcm_start = .;
|
||||
}
|
||||
|
||||
/* TODO: add remainder of ITCM as well, that can be used for data! */
|
||||
.data_dtcm DTCM_OFFSET : AT(__dtcm_start)
|
||||
{
|
||||
. = ALIGN(4);
|
||||
__sdtcm_data = .;
|
||||
*(.tcm.data)
|
||||
. = ALIGN(4);
|
||||
__edtcm_data = .;
|
||||
}
|
||||
|
||||
/* Reset the dot pointer or the linker gets confused */
|
||||
. = ADDR(.dtcm_start) + SIZEOF(.data_dtcm);
|
||||
|
||||
/* End marker for freeing TCM copy in linked object */
|
||||
.tcm_end : AT(ADDR(.dtcm_start) + SIZEOF(.data_dtcm)){
|
||||
. = ALIGN(PAGE_SIZE);
|
||||
__tcm_end = .;
|
||||
}
|
||||
ARM_TCM
|
||||
#endif
|
||||
|
||||
BSS_SECTION(0, 0, 8)
|
||||
|
Reference in New Issue
Block a user