From bc820946793426dbdc450dc8bba4a15d01006182 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 8 Oct 2015 13:29:56 +0200 Subject: bsps: Add .nocacheheap section This avoids consumption of a loadable address space for the nocache heap. --- c/src/lib/libbsp/arm/altera-cyclone-v/startup/bspstart.c | 6 +++--- c/src/lib/libbsp/arm/shared/include/linker-symbols.h | 10 +++++----- c/src/lib/libbsp/arm/shared/startup/linkcmds.base | 15 +++++++++------ c/src/lib/libbsp/arm/xilinx-zynq/startup/bspstart.c | 6 +++--- c/src/lib/libbsp/powerpc/shared/include/linker-symbols.h | 8 ++++++-- c/src/lib/libbsp/powerpc/shared/startup/linkcmds.base | 13 ++++++++++--- 6 files changed, 36 insertions(+), 22 deletions(-) diff --git a/c/src/lib/libbsp/arm/altera-cyclone-v/startup/bspstart.c b/c/src/lib/libbsp/arm/altera-cyclone-v/startup/bspstart.c index 52e535c21c..c10dad3b45 100644 --- a/c/src/lib/libbsp/arm/altera-cyclone-v/startup/bspstart.c +++ b/c/src/lib/libbsp/arm/altera-cyclone-v/startup/bspstart.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2014 embedded brains GmbH. All rights reserved. + * Copyright (c) 2013-2015 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Dornierstr. 4 @@ -22,7 +22,7 @@ void bsp_start( void ) a9mpcore_clock_initialize_early(); bsp_interrupt_initialize(); rtems_cache_coherent_add_area( - bsp_nocache_heap_begin, - (uintptr_t) bsp_nocache_heap_size + bsp_section_nocacheheap_begin, + (uintptr_t) bsp_section_nocacheheap_size ); } 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 8bfa5d172d..7c966d58c3 100644 --- a/c/src/lib/libbsp/arm/shared/include/linker-symbols.h +++ b/c/src/lib/libbsp/arm/shared/include/linker-symbols.h @@ -7,7 +7,7 @@ */ /* - * Copyright (c) 2008-2014 embedded brains GmbH. All rights reserved. + * Copyright (c) 2008-2015 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Dornierstr. 4 @@ -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_nocacheheap_begin) +LINKER_SYMBOL(bsp_section_nocacheheap_end) +LINKER_SYMBOL(bsp_section_nocacheheap_size) + LINKER_SYMBOL(bsp_vector_table_begin) LINKER_SYMBOL(bsp_vector_table_end) LINKER_SYMBOL(bsp_vector_table_size) @@ -130,10 +134,6 @@ LINKER_SYMBOL(bsp_start_vector_table_size) LINKER_SYMBOL(bsp_translation_table_base) LINKER_SYMBOL(bsp_translation_table_end) -LINKER_SYMBOL(bsp_nocache_heap_begin) -LINKER_SYMBOL(bsp_nocache_heap_end) -LINKER_SYMBOL(bsp_nocache_heap_size) - #define BSP_FAST_TEXT_SECTION __attribute__((section(".bsp_fast_text"))) #define BSP_FAST_DATA_SECTION __attribute__((section(".bsp_fast_data"))) diff --git a/c/src/lib/libbsp/arm/shared/startup/linkcmds.base b/c/src/lib/libbsp/arm/shared/startup/linkcmds.base index 8a653e9337..cfa9073534 100644 --- a/c/src/lib/libbsp/arm/shared/startup/linkcmds.base +++ b/c/src/lib/libbsp/arm/shared/startup/linkcmds.base @@ -7,10 +7,10 @@ */ /* - * Copyright (c) 2008-2014 embedded brains GmbH. All rights reserved. + * Copyright (c) 2008-2015 embedded brains GmbH. All rights reserved. * * embedded brains GmbH - * Obere Lagerstr. 30 + * Dornierstr. 4 * 82178 Puchheim * Germany * @@ -400,16 +400,19 @@ SECTIONS { .nocache : ALIGN_WITH_INPUT { bsp_section_nocache_begin = .; *(SORT(.bsp_nocache*)) - bsp_nocache_heap_begin = .; - . += ORIGIN (REGION_NOCACHE) + LENGTH (REGION_NOCACHE) - ABSOLUTE (.); - bsp_nocache_heap_end = .; bsp_section_nocache_end = .; } > REGION_NOCACHE AT > REGION_NOCACHE_LOAD - bsp_nocache_heap_size = bsp_nocache_heap_end - bsp_nocache_heap_begin; bsp_section_nocache_size = bsp_section_nocache_end - bsp_section_nocache_begin; 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 { + bsp_section_nocacheheap_begin = .; + . += ORIGIN (REGION_NOCACHE) + LENGTH (REGION_NOCACHE) - ABSOLUTE (.); + bsp_section_nocacheheap_end = .; + } > REGION_NOCACHE AT > REGION_NOCACHE + bsp_section_nocacheheap_size = bsp_section_nocacheheap_end - bsp_section_nocacheheap_begin; + /* FIXME */ RamBase = ORIGIN (REGION_WORK); RamSize = LENGTH (REGION_WORK); diff --git a/c/src/lib/libbsp/arm/xilinx-zynq/startup/bspstart.c b/c/src/lib/libbsp/arm/xilinx-zynq/startup/bspstart.c index 62511e77b0..14a20df7ef 100644 --- a/c/src/lib/libbsp/arm/xilinx-zynq/startup/bspstart.c +++ b/c/src/lib/libbsp/arm/xilinx-zynq/startup/bspstart.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2014 embedded brains GmbH. All rights reserved. + * Copyright (c) 2013-2015 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Dornierstr. 4 @@ -28,7 +28,7 @@ void bsp_start(void) a9mpcore_clock_initialize_early(); bsp_interrupt_initialize(); rtems_cache_coherent_add_area( - bsp_nocache_heap_begin, - (uintptr_t) bsp_nocache_heap_size + bsp_section_nocacheheap_begin, + (uintptr_t) bsp_section_nocacheheap_size ); } 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 747457e9aa..4eb83be055 100644 --- a/c/src/lib/libbsp/powerpc/shared/include/linker-symbols.h +++ b/c/src/lib/libbsp/powerpc/shared/include/linker-symbols.h @@ -7,10 +7,10 @@ */ /* - * Copyright (c) 2010-2013 embedded brains GmbH. All rights reserved. + * Copyright (c) 2010-2015 embedded brains GmbH. All rights reserved. * * embedded brains GmbH - * Donrierstr. 4 + * Dornierstr. 4 * 82178 Puchheim * Germany * @@ -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_nocacheheap_begin) +LINKER_SYMBOL(bsp_section_nocacheheap_end) +LINKER_SYMBOL(bsp_section_nocacheheap_size) + LINKER_SYMBOL(bsp_section_nvram_begin) LINKER_SYMBOL(bsp_section_nvram_end) LINKER_SYMBOL(bsp_section_nvram_size) diff --git a/c/src/lib/libbsp/powerpc/shared/startup/linkcmds.base b/c/src/lib/libbsp/powerpc/shared/startup/linkcmds.base index 8d85dbf5af..d4f9007ba0 100644 --- a/c/src/lib/libbsp/powerpc/shared/startup/linkcmds.base +++ b/c/src/lib/libbsp/powerpc/shared/startup/linkcmds.base @@ -7,10 +7,10 @@ */ /* - * Copyright (c) 2011-2013 embedded brains GmbH. All rights reserved. + * Copyright (c) 2011-2015 embedded brains GmbH. All rights reserved. * * embedded brains GmbH - * Obere Lagerstr. 30 + * Dornierstr. 4 * 82178 Puchheim * Germany * @@ -342,11 +342,18 @@ 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 { + bsp_section_nocacheheap_begin = .; + . += ORIGIN (REGION_NOCACHE) + LENGTH (REGION_NOCACHE) - ABSOLUTE (.); + bsp_section_nocacheheap_end = .; + } > REGION_NOCACHE AT > REGION_NOCACHE + bsp_section_nocacheheap_size = bsp_section_nocacheheap_end - bsp_section_nocacheheap_begin; + .nvram (NOLOAD) : ALIGN_WITH_INPUT { bsp_section_nvram_begin = .; *(SORT(.bsp_nvram*)) bsp_section_nvram_end = .; - } > REGION_NVRAM + } > REGION_NVRAM AT > REGION_NVRAM bsp_section_nvram_size = bsp_section_nvram_end - bsp_section_nvram_begin; /* FIXME */ -- cgit v1.2.3