riscv: linker.ld: Port vector table to zephyr_linker_sources()
Put it in its own linker file snippet. Signed-off-by: Øyvind Rønningstad <oyvind.ronningstad@nordicsemi.no>
This commit is contained in:
parent
0b2c8e201c
commit
8531c7cb44
3 changed files with 36 additions and 27 deletions
|
@ -18,3 +18,5 @@ zephyr_sources(
|
||||||
wdog.S
|
wdog.S
|
||||||
soc.c
|
soc.c
|
||||||
)
|
)
|
||||||
|
|
||||||
|
zephyr_linker_sources(TEXT_START SORT_KEY 0x0vectors vector_table.ld)
|
||||||
|
|
|
@ -103,39 +103,14 @@ SECTIONS
|
||||||
|
|
||||||
SECTION_PROLOGUE(_TEXT_SECTION_NAME,,)
|
SECTION_PROLOGUE(_TEXT_SECTION_NAME,,)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
* Respect for CONFIG_TEXT_SECTION_OFFSET is mandatory
|
|
||||||
* for MCUboot support, so .reset.* and .exception.*
|
|
||||||
* must come after that offset from ROM_BASE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef CONFIG_BOOTLOADER_MCUBOOT
|
|
||||||
/*
|
|
||||||
* For CONFIG_BOOTLOADER_MCUBOOT, the vector table is located at the
|
|
||||||
* end of the image header of the MCUboot. After the tagert image is
|
|
||||||
* boot, the register Machine Trap-Vector Base Address (MTVEC) is
|
|
||||||
* set with the value of _vector_start in the reset handler.
|
|
||||||
*/
|
|
||||||
_vector_start = .;
|
|
||||||
KEEP(*(.vectors.*))
|
|
||||||
_vector_end = .;
|
|
||||||
. = ALIGN(4);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
KEEP(*(.reset.*))
|
|
||||||
KEEP(*(".exception.entry.*")) /* contains __irq_wrapper */
|
|
||||||
*(".exception.other.*")
|
|
||||||
|
|
||||||
KEEP(*(.openocd_debug))
|
|
||||||
KEEP(*(".openocd_debug.*"))
|
|
||||||
|
|
||||||
_image_text_start = .;
|
|
||||||
|
|
||||||
/* Located in generated directory. This file is populated by the
|
/* Located in generated directory. This file is populated by the
|
||||||
* zephyr_linker_sources() Cmake function.
|
* zephyr_linker_sources() Cmake function.
|
||||||
*/
|
*/
|
||||||
#include <snippets-text-start.ld>
|
#include <snippets-text-start.ld>
|
||||||
|
|
||||||
|
_image_text_start = .;
|
||||||
|
|
||||||
*(.text .text.*)
|
*(.text .text.*)
|
||||||
*(.gnu.linkonce.t.*)
|
*(.gnu.linkonce.t.*)
|
||||||
*(.eh_frame)
|
*(.eh_frame)
|
||||||
|
|
32
soc/riscv/openisa_rv32m1/vector_table.ld
Normal file
32
soc/riscv/openisa_rv32m1/vector_table.ld
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2019 Foundries.io Ltd
|
||||||
|
* Copyright (c) 2019 Nordic Semiconductor ASA
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Respect for CONFIG_TEXT_SECTION_OFFSET is mandatory
|
||||||
|
* for MCUboot support, so .reset.* and .exception.*
|
||||||
|
* must come after that offset from ROM_BASE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef CONFIG_BOOTLOADER_MCUBOOT
|
||||||
|
/*
|
||||||
|
* For CONFIG_BOOTLOADER_MCUBOOT, the vector table is located at the
|
||||||
|
* end of the image header of the MCUboot. After the tagert image is
|
||||||
|
* boot, the register Machine Trap-Vector Base Address (MTVEC) is
|
||||||
|
* set with the value of _vector_start in the reset handler.
|
||||||
|
*/
|
||||||
|
_vector_start = .;
|
||||||
|
KEEP(*(.vectors.*))
|
||||||
|
_vector_end = .;
|
||||||
|
. = ALIGN(4);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
KEEP(*(.reset.*))
|
||||||
|
KEEP(*(".exception.entry.*")) /* contains __irq_wrapper */
|
||||||
|
*(".exception.other.*")
|
||||||
|
|
||||||
|
KEEP(*(.openocd_debug))
|
||||||
|
KEEP(*(".openocd_debug.*"))
|
Loading…
Add table
Add a link
Reference in a new issue