|
@@ -115,61 +115,21 @@
|
|
|
PROVIDE(vector_fiq_offset = vector_fiq - ADDR(.vectors));
|
|
|
|
|
|
#define ARM_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) \
|
|
|
- { \
|
|
|
+ __itcm_start = ALIGN(4); \
|
|
|
+ .text_itcm ITCM_OFFSET : AT(__itcm_start - LOAD_OFFSET) { \
|
|
|
__sitcm_text = .; \
|
|
|
*(.tcm.text) \
|
|
|
*(.tcm.rodata) \
|
|
|
. = ALIGN(4); \
|
|
|
__eitcm_text = .; \
|
|
|
} \
|
|
|
+ . = __itcm_start + SIZEOF(.text_itcm); \
|
|
|
\
|
|
|
- /* \
|
|
|
- * 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); \
|
|
|
+ __dtcm_start = .; \
|
|
|
+ .data_dtcm DTCM_OFFSET : AT(__dtcm_start - LOAD_OFFSET) { \
|
|
|
__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 = .; \
|
|
|
- }
|
|
|
+ . = __dtcm_start + SIZEOF(.data_dtcm);
|