summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-03-22 08:34:16 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-03-31 12:58:19 +0200
commit0bd49f153538be814cd9333a79f920d94c1b7324 (patch)
tree9009d13705e48a4a187545782927dab17dc24e66
parentbsp/atsam: Fix sizes of internal SRAM (diff)
downloadrtems-0bd49f153538be814cd9333a79f920d94c1b7324.tar.bz2
bsp/atsam: Add nocache region support
-rw-r--r--c/src/lib/libbsp/arm/atsam/libraries/libboard/source/board_lowlevel.c1
-rw-r--r--c/src/lib/libbsp/arm/atsam/startup/bspstart.c5
-rw-r--r--c/src/lib/libbsp/arm/atsam/startup/linkcmds2
-rw-r--r--c/src/lib/libbsp/arm/atsam/startup/linkcmds.intsram2
-rw-r--r--c/src/lib/libbsp/arm/atsam/startup/linkcmds.memory.in3
-rw-r--r--c/src/lib/libbsp/arm/atsam/startup/linkcmds.sdram2
6 files changed, 11 insertions, 4 deletions
diff --git a/c/src/lib/libbsp/arm/atsam/libraries/libboard/source/board_lowlevel.c b/c/src/lib/libbsp/arm/atsam/libraries/libboard/source/board_lowlevel.c
index 254e529440..660d54eac2 100644
--- a/c/src/lib/libbsp/arm/atsam/libraries/libboard/source/board_lowlevel.c
+++ b/c/src/lib/libbsp/arm/atsam/libraries/libboard/source/board_lowlevel.c
@@ -40,6 +40,7 @@
#ifndef __rtems__
#include "board.h"
#else /* __rtems__ */
+#define MPU_HAS_NOCACHE_REGION
#include <chip.h>
#include <include/board_lowlevel.h>
#endif /* __rtems__ */
diff --git a/c/src/lib/libbsp/arm/atsam/startup/bspstart.c b/c/src/lib/libbsp/arm/atsam/startup/bspstart.c
index 55b16cfbe9..b463bab696 100644
--- a/c/src/lib/libbsp/arm/atsam/startup/bspstart.c
+++ b/c/src/lib/libbsp/arm/atsam/startup/bspstart.c
@@ -16,6 +16,7 @@
#include <bsp/bootcard.h>
#include <bsp/irq.h>
#include <bsp/irq-generic.h>
+#include <bsp/linker-symbols.h>
#include <chip.h>
@@ -29,4 +30,8 @@ void bsp_start(void)
bsp_interrupt_initialize();
SCB_CleanDCache();
SCB_InvalidateICache();
+ rtems_cache_coherent_add_area(
+ bsp_section_nocacheheap_begin,
+ (uintptr_t) bsp_section_nocacheheap_size
+ );
}
diff --git a/c/src/lib/libbsp/arm/atsam/startup/linkcmds b/c/src/lib/libbsp/arm/atsam/startup/linkcmds
index 61aff87176..79cdfc2b18 100644
--- a/c/src/lib/libbsp/arm/atsam/startup/linkcmds
+++ b/c/src/lib/libbsp/arm/atsam/startup/linkcmds
@@ -15,7 +15,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", INTFLASH);
REGION_ALIAS ("REGION_BSS", INTSRAM);
REGION_ALIAS ("REGION_WORK", INTSRAM);
REGION_ALIAS ("REGION_STACK", INTSRAM);
-REGION_ALIAS ("REGION_NOCACHE", INTSRAM);
+REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
REGION_ALIAS ("REGION_NOCACHE_LOAD", INTFLASH);
INCLUDE linkcmds.armv7m
diff --git a/c/src/lib/libbsp/arm/atsam/startup/linkcmds.intsram b/c/src/lib/libbsp/arm/atsam/startup/linkcmds.intsram
index 1a17ed309a..3e9d07e61c 100644
--- a/c/src/lib/libbsp/arm/atsam/startup/linkcmds.intsram
+++ b/c/src/lib/libbsp/arm/atsam/startup/linkcmds.intsram
@@ -17,7 +17,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", INTSRAM);
REGION_ALIAS ("REGION_BSS", INTSRAM);
REGION_ALIAS ("REGION_WORK", INTSRAM);
REGION_ALIAS ("REGION_STACK", INTSRAM);
-REGION_ALIAS ("REGION_NOCACHE", INTSRAM);
+REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
REGION_ALIAS ("REGION_NOCACHE_LOAD", INTSRAM);
INCLUDE linkcmds.armv7m
diff --git a/c/src/lib/libbsp/arm/atsam/startup/linkcmds.memory.in b/c/src/lib/libbsp/arm/atsam/startup/linkcmds.memory.in
index 2da12844ff..6dd70ca108 100644
--- a/c/src/lib/libbsp/arm/atsam/startup/linkcmds.memory.in
+++ b/c/src/lib/libbsp/arm/atsam/startup/linkcmds.memory.in
@@ -2,6 +2,7 @@ MEMORY {
ITCM : ORIGIN = 0x00000000, LENGTH = @ATSAM_MEMORY_TCM_SIZE@
INTFLASH : ORIGIN = 0x00400000, LENGTH = @ATSAM_MEMORY_INTFLASH_SIZE@
DTCM : ORIGIN = 0x20000000, LENGTH = @ATSAM_MEMORY_TCM_SIZE@
- INTSRAM : ORIGIN = 0x20400000, LENGTH = @ATSAM_MEMORY_INTSRAM_SIZE@ - 2 * @ATSAM_MEMORY_TCM_SIZE@
+ INTSRAM : ORIGIN = 0x20400000, LENGTH = @ATSAM_MEMORY_INTSRAM_SIZE@ - 2 * @ATSAM_MEMORY_TCM_SIZE@ - 4K
+ NOCACHE : ORIGIN = 0x20400000 + @ATSAM_MEMORY_INTSRAM_SIZE@ - 2 * @ATSAM_MEMORY_TCM_SIZE@ - 4K, LENGTH = 4K
SDRAM : ORIGIN = 0x70000000, LENGTH = @ATSAM_MEMORY_SDRAM_SIZE@
}
diff --git a/c/src/lib/libbsp/arm/atsam/startup/linkcmds.sdram b/c/src/lib/libbsp/arm/atsam/startup/linkcmds.sdram
index 675e83747d..958b128c6a 100644
--- a/c/src/lib/libbsp/arm/atsam/startup/linkcmds.sdram
+++ b/c/src/lib/libbsp/arm/atsam/startup/linkcmds.sdram
@@ -15,7 +15,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", SDRAM);
REGION_ALIAS ("REGION_BSS", SDRAM);
REGION_ALIAS ("REGION_WORK", SDRAM);
REGION_ALIAS ("REGION_STACK", SDRAM);
-REGION_ALIAS ("REGION_NOCACHE", SDRAM);
+REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
REGION_ALIAS ("REGION_NOCACHE_LOAD", SDRAM);
INCLUDE linkcmds.armv7m