summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2015-10-28 10:18:05 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2015-10-28 13:04:19 +0100
commit53c99b8ad131160cff9d62f8da6efdc354f364bb (patch)
tree615219db7702b912921b006378523bb4bda13acc
parentpowerpc: Add FSL cache defines (diff)
downloadrtems-53c99b8ad131160cff9d62f8da6efdc354f364bb.tar.bz2
bsps: Generalize .nocacheheap to .nocachenoload
Add ability to place data in a non-loadable cache-inhibited area.
-rw-r--r--c/src/lib/libbsp/arm/shared/include/arm-cp15-start.h4
-rw-r--r--c/src/lib/libbsp/arm/shared/include/linker-symbols.h6
-rw-r--r--c/src/lib/libbsp/arm/shared/startup/linkcmds.base6
-rw-r--r--c/src/lib/libbsp/powerpc/qoriq/startup/mmu-config.c2
-rw-r--r--c/src/lib/libbsp/powerpc/shared/include/linker-symbols.h6
-rw-r--r--c/src/lib/libbsp/powerpc/shared/startup/linkcmds.base6
6 files changed, 25 insertions, 5 deletions
diff --git a/c/src/lib/libbsp/arm/shared/include/arm-cp15-start.h b/c/src/lib/libbsp/arm/shared/include/arm-cp15-start.h
index 4677bf9078..01fdbb3463 100644
--- a/c/src/lib/libbsp/arm/shared/include/arm-cp15-start.h
+++ b/c/src/lib/libbsp/arm/shared/include/arm-cp15-start.h
@@ -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 \
}
diff --git a/c/src/lib/libbsp/arm/shared/include/linker-symbols.h b/c/src/lib/libbsp/arm/shared/include/linker-symbols.h
index 7c966d58c3..a4df81ab71 100644
--- a/c/src/lib/libbsp/arm/shared/include/linker-symbols.h
+++ b/c/src/lib/libbsp/arm/shared/include/linker-symbols.h
@@ -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)
/** @} */
diff --git a/c/src/lib/libbsp/arm/shared/startup/linkcmds.base b/c/src/lib/libbsp/arm/shared/startup/linkcmds.base
index cfa9073534..6c17797e0b 100644
--- a/c/src/lib/libbsp/arm/shared/startup/linkcmds.base
+++ b/c/src/lib/libbsp/arm/shared/startup/linkcmds.base
@@ -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);
diff --git a/c/src/lib/libbsp/powerpc/qoriq/startup/mmu-config.c b/c/src/lib/libbsp/powerpc/qoriq/startup/mmu-config.c
index 550202e018..a0b58451cf 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/startup/mmu-config.c
+++ b/c/src/lib/libbsp/powerpc/qoriq/startup/mmu-config.c
@@ -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),
diff --git a/c/src/lib/libbsp/powerpc/shared/include/linker-symbols.h b/c/src/lib/libbsp/powerpc/shared/include/linker-symbols.h
index 4eb83be055..06f11655f6 100644
--- a/c/src/lib/libbsp/powerpc/shared/include/linker-symbols.h
+++ b/c/src/lib/libbsp/powerpc/shared/include/linker-symbols.h
@@ -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")))
/** @} */
diff --git a/c/src/lib/libbsp/powerpc/shared/startup/linkcmds.base b/c/src/lib/libbsp/powerpc/shared/startup/linkcmds.base
index d4f9007ba0..7070cb09fa 100644
--- a/c/src/lib/libbsp/powerpc/shared/startup/linkcmds.base
+++ b/c/src/lib/libbsp/powerpc/shared/startup/linkcmds.base
@@ -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 = .;