diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-03-22 08:34:16 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-03-31 12:58:19 +0200 |
commit | 0bd49f153538be814cd9333a79f920d94c1b7324 (patch) | |
tree | 9009d13705e48a4a187545782927dab17dc24e66 | |
parent | bsp/atsam: Fix sizes of internal SRAM (diff) | |
download | rtems-0bd49f153538be814cd9333a79f920d94c1b7324.tar.bz2 |
bsp/atsam: Add nocache region support
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 |