bsps: Generalize .nocacheheap to .nocachenoload

Add ability to place data in a non-loadable cache-inhibited area.
This commit is contained in:
Sebastian Huber
2015-10-28 10:18:05 +01:00
parent e96feebdd1
commit 53c99b8ad1
6 changed files with 25 additions and 5 deletions

View File

@@ -85,8 +85,8 @@ typedef struct {
.end = (uint32_t) bsp_section_nocache_end, \
.flags = ARMV7_MMU_DEVICE \
}, { \
.begin = (uint32_t) bsp_section_nocacheheap_begin, \
.end = (uint32_t) bsp_section_nocacheheap_end, \
.begin = (uint32_t) bsp_section_nocachenoload_begin, \
.end = (uint32_t) bsp_section_nocachenoload_end, \
.flags = ARMV7_MMU_DEVICE \
}

View File

@@ -119,6 +119,10 @@ LINKER_SYMBOL(bsp_section_nocache_size)
LINKER_SYMBOL(bsp_section_nocache_load_begin)
LINKER_SYMBOL(bsp_section_nocache_load_end)
LINKER_SYMBOL(bsp_section_nocachenoload_begin)
LINKER_SYMBOL(bsp_section_nocachenoload_end)
LINKER_SYMBOL(bsp_section_nocachenoload_size)
LINKER_SYMBOL(bsp_section_nocacheheap_begin)
LINKER_SYMBOL(bsp_section_nocacheheap_end)
LINKER_SYMBOL(bsp_section_nocacheheap_size)
@@ -140,6 +144,8 @@ LINKER_SYMBOL(bsp_translation_table_end)
#define BSP_NOCACHE_SECTION __attribute__((section(".bsp_nocache")))
#define BSP_NOCACHENOLOAD_SECTION __attribute__((section(".bsp_noload_nocache")))
LINKER_SYMBOL(bsp_processor_count)
/** @} */

View File

@@ -406,12 +406,16 @@ SECTIONS {
bsp_section_nocache_load_begin = LOADADDR (.nocache);
bsp_section_nocache_load_end = bsp_section_nocache_load_begin + bsp_section_nocache_size;
.nocacheheap (NOLOAD) : ALIGN_WITH_INPUT {
.nocachenoload (NOLOAD) : ALIGN_WITH_INPUT {
bsp_section_nocachenoload_begin = .;
*(SORT(.bsp_noload_nocache*))
bsp_section_nocacheheap_begin = .;
. += ORIGIN (REGION_NOCACHE) + LENGTH (REGION_NOCACHE) - ABSOLUTE (.);
bsp_section_nocacheheap_end = .;
bsp_section_nocachenoload_end = .;
} > REGION_NOCACHE AT > REGION_NOCACHE
bsp_section_nocacheheap_size = bsp_section_nocacheheap_end - bsp_section_nocacheheap_begin;
bsp_section_nocachenoload_size = bsp_section_nocachenoload_end - bsp_section_nocachenoload_begin;
/* FIXME */
RamBase = ORIGIN (REGION_WORK);

View File

@@ -111,7 +111,7 @@ static const entry DATA config [] = {
ENTRY_RW(bsp_section_work_begin, bsp_section_work_size),
ENTRY_RW(bsp_section_stack_begin, bsp_section_stack_size),
ENTRY_IO(bsp_section_nocache_begin, bsp_section_nocache_size),
ENTRY_IO(bsp_section_nocacheheap_begin, bsp_section_nocacheheap_size),
ENTRY_IO(bsp_section_nocachenoload_begin, bsp_section_nocachenoload_size),
#if QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT)
/* BMan Portals */
ENTRY_DEV_CACHED(0xf4000000, 0x01000000),

View File

@@ -99,6 +99,10 @@ LINKER_SYMBOL(bsp_section_nocache_size)
LINKER_SYMBOL(bsp_section_nocache_load_begin)
LINKER_SYMBOL(bsp_section_nocache_load_end)
LINKER_SYMBOL(bsp_section_nocachenoload_begin)
LINKER_SYMBOL(bsp_section_nocachenoload_end)
LINKER_SYMBOL(bsp_section_nocachenoload_size)
LINKER_SYMBOL(bsp_section_nocacheheap_begin)
LINKER_SYMBOL(bsp_section_nocacheheap_end)
LINKER_SYMBOL(bsp_section_nocacheheap_size)
@@ -113,6 +117,8 @@ LINKER_SYMBOL(bsp_section_nvram_size)
#define BSP_NOCACHE_SECTION __attribute__((section(".bsp_nocache")))
#define BSP_NOCACHENOLOAD_SECTION __attribute__((section(".bsp_noload_nocache")))
#define BSP_NVRAM_SECTION __attribute__((section(".bsp_nvram")))
/** @} */

View File

@@ -342,12 +342,16 @@ SECTIONS {
bsp_section_nocache_load_begin = LOADADDR (.nocache);
bsp_section_nocache_load_end = bsp_section_nocache_load_begin + bsp_section_nocache_size;
.nocacheheap (NOLOAD) : ALIGN_WITH_INPUT {
.nocachenoload (NOLOAD) : ALIGN_WITH_INPUT {
bsp_section_nocachenoload_begin = .;
*(SORT(.bsp_noload_nocache*))
bsp_section_nocacheheap_begin = .;
. += ORIGIN (REGION_NOCACHE) + LENGTH (REGION_NOCACHE) - ABSOLUTE (.);
bsp_section_nocacheheap_end = .;
bsp_section_nocachenoload_end = .;
} > REGION_NOCACHE AT > REGION_NOCACHE
bsp_section_nocacheheap_size = bsp_section_nocacheheap_end - bsp_section_nocacheheap_begin;
bsp_section_nocachenoload_size = bsp_section_nocachenoload_end - bsp_section_nocachenoload_begin;
.nvram (NOLOAD) : ALIGN_WITH_INPUT {
bsp_section_nvram_begin = .;