From c5fd79cd4704a4270ba0114a1009ab8556f997c9 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 29 Jul 2019 07:22:03 +0200 Subject: arm/raspberrypi: Fix linker map Add NULL-pointer protection. Make MMU table read-only. Move vector table to start section. Close #3774. --- bsps/arm/raspberrypi/start/bspstarthooks.c | 2 +- bsps/arm/raspberrypi/start/linkcmds | 34 +++++++----------------------- 2 files changed, 9 insertions(+), 27 deletions(-) (limited to 'bsps') diff --git a/bsps/arm/raspberrypi/start/bspstarthooks.c b/bsps/arm/raspberrypi/start/bspstarthooks.c index b39c8b1959..3f8c680bc0 100644 --- a/bsps/arm/raspberrypi/start/bspstarthooks.c +++ b/bsps/arm/raspberrypi/start/bspstarthooks.c @@ -87,7 +87,7 @@ void BSP_START_TEXT_SECTION bsp_start_hook_0(void) arm_cp15_set_translation_table_base_control_register(0); /* Clear Secure or Non-secure Vector Base Address Register */ - arm_cp15_set_vector_base_address(0); + arm_cp15_set_vector_base_address(bsp_vector_table_begin); #ifdef RTEMS_SMP if (cpu_index_self == 0) { diff --git a/bsps/arm/raspberrypi/start/linkcmds b/bsps/arm/raspberrypi/start/linkcmds index 58423abecb..7a1bcbac73 100644 --- a/bsps/arm/raspberrypi/start/linkcmds +++ b/bsps/arm/raspberrypi/start/linkcmds @@ -14,35 +14,13 @@ * @brief Raspberry Pi memory map. */ -/** - * - * - * - * - *
Region NameRegion BeginRegion Size
VECTOR_RAM0x080000008k
RAM0x80008000128M
- * - * - * - * - * - * - * - * - * - * - * - * - *
Section NameSection Runtime RegionSection Load Region
.startRAM
.vectorVECTOR_RAM
.textRAMRAM_EXT
.rodataRAMRAM_EXT
.dataRAMRAM_EXT
.fastRAMRAM_EXT
.bssRAM
.workRAM
.stackRAM
- */ - MEMORY { - VECTOR_RAM (AIW) : ORIGIN = 0x0 , LENGTH = 16k - RAM_MMU (AIW) : ORIGIN = 0x00004000, LENGTH = 16k - RAM (AIW) : ORIGIN = 0x00008000, LENGTH = 128M - 32k + RAM_MMU (AIW) : ORIGIN = 0x00100000, LENGTH = 16k + RAM (AIW) : ORIGIN = 0x00200000, LENGTH = 128M - 2M } REGION_ALIAS ("REGION_START", RAM); -REGION_ALIAS ("REGION_VECTOR", VECTOR_RAM); +REGION_ALIAS ("REGION_VECTOR", RAM); REGION_ALIAS ("REGION_TEXT", RAM); REGION_ALIAS ("REGION_TEXT_LOAD", RAM); REGION_ALIAS ("REGION_RODATA", RAM); @@ -61,7 +39,11 @@ REGION_ALIAS ("REGION_NOCACHE_LOAD", RAM); bsp_stack_abt_size = DEFINED (bsp_stack_abt_size) ? bsp_stack_abt_size : 1024; -bsp_section_robarrier_align = DEFINED (bsp_section_robarrier_align) ? bsp_section_robarrier_align : 1M; +bsp_section_rwbarrier_align = DEFINED (bsp_section_rwbarrier_align) ? bsp_section_rwbarrier_align : 1M; + +bsp_vector_table_in_start_section = 1; + bsp_translation_table_base = ORIGIN (RAM_MMU); +bsp_translation_table_end = ORIGIN (RAM_MMU) + LENGTH (RAM_MMU); INCLUDE linkcmds.armv4 -- cgit v1.2.3