From cf8e03388b4d67e92c9598cb963b983a3594c7b6 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 8 Oct 2015 13:35:27 +0200 Subject: bsp/qoriq: Add nocache heap --- c/src/lib/libbsp/powerpc/qoriq/startup/bspstart.c | 5 +++++ .../lib/libbsp/powerpc/qoriq/startup/linkcmds.qoriq_t2080rdb | 11 ++++++----- c/src/lib/libbsp/powerpc/qoriq/startup/mmu-config.c | 9 +++++++++ 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), -- cgit v1.2.3