summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2015-10-08 13:35:27 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2015-10-08 13:35:27 +0200
commitcf8e03388b4d67e92c9598cb963b983a3594c7b6 (patch)
tree05c16b33cc7dcfd606610a1ffa00c2de08f6a63c
parentbsps: Add .nocacheheap section (diff)
downloadrtems-cf8e03388b4d67e92c9598cb963b983a3594c7b6.tar.bz2
bsp/qoriq: Add nocache heap
-rw-r--r--c/src/lib/libbsp/powerpc/qoriq/startup/bspstart.c5
-rw-r--r--c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_t2080rdb11
-rw-r--r--c/src/lib/libbsp/powerpc/qoriq/startup/mmu-config.c9
3 files changed, 20 insertions, 5 deletions
diff --git a/c/src/lib/libbsp/powerpc/qoriq/startup/bspstart.c b/c/src/lib/libbsp/powerpc/qoriq/startup/bspstart.c
index 6d121eaa0a..5f8f25bf5a 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/startup/bspstart.c
+++ b/c/src/lib/libbsp/powerpc/qoriq/startup/bspstart.c
@@ -141,6 +141,11 @@ void bsp_start(void)
/* Initalize interrupt support */
bsp_interrupt_initialize();
+ rtems_cache_coherent_add_area(
+ bsp_section_nocacheheap_begin,
+ (uintptr_t) bsp_section_nocacheheap_size
+ );
+
/* Disable boot page translation */
#if QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT)
qoriq.lcc.bstar &= ~LCC_BSTAR_EN;
diff --git a/c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_t2080rdb b/c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_t2080rdb
index 951a0ee684..50881a0631 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_t2080rdb
+++ b/c/src/lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_t2080rdb
@@ -5,9 +5,10 @@
*/
MEMORY {
- LOW : ORIGIN = 0x4000, LENGTH = 16M - 16k
- HIGH : ORIGIN = 0x1000000, LENGTH = 2048M - 16M
- EMPTY : ORIGIN = 0x0, LENGTH = 0
+ LOW : ORIGIN = 0x00004000, LENGTH = 16M - 16k
+ NOCACHE : ORIGIN = 0x01000000, LENGTH = 16M
+ HIGH : ORIGIN = 0x02000000, LENGTH = 2048M - 32M
+ EMPTY : ORIGIN = 0x00000000, LENGTH = 0
}
REGION_ALIAS ("REGION_START", LOW);
@@ -25,8 +26,8 @@ REGION_ALIAS ("REGION_BSS", HIGH);
REGION_ALIAS ("REGION_RWEXTRA", HIGH);
REGION_ALIAS ("REGION_WORK", HIGH);
REGION_ALIAS ("REGION_STACK", HIGH);
-REGION_ALIAS ("REGION_NOCACHE", EMPTY);
-REGION_ALIAS ("REGION_NOCACHE_LOAD", EMPTY);
+REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
+REGION_ALIAS ("REGION_NOCACHE_LOAD", LOW);
REGION_ALIAS ("REGION_NVRAM", EMPTY);
bsp_section_robarrier_align = 0x1000000;
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 cab37b9dcc..550202e018 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/startup/mmu-config.c
+++ b/c/src/lib/libbsp/powerpc/qoriq/startup/mmu-config.c
@@ -63,6 +63,13 @@ typedef struct {
.mas3 = FSL_EIS_MAS3_SR | FSL_EIS_MAS3_SW \
}
+#define ENTRY_IO(b, s) { \
+ .begin = (uint32_t) b, \
+ .size = (uint32_t) s, \
+ .mas2 = FSL_EIS_MAS2_I | FSL_EIS_MAS2_G, \
+ .mas3 = FSL_EIS_MAS3_SR | FSL_EIS_MAS3_SW \
+}
+
#define ENTRY_DEV(b, s) { \
.begin = (uint32_t) b, \
.size = (uint32_t) s, \
@@ -103,6 +110,8 @@ static const entry DATA config [] = {
ENTRY_RW(bsp_section_rwextra_begin, bsp_section_rwextra_size),
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),
#if QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT)
/* BMan Portals */
ENTRY_DEV_CACHED(0xf4000000, 0x01000000),