blob: ff043186fc52dfd23678d21a212b928fbd5d8384 [file] [log] [blame]
/*
* Copyright (c) 2019 - 2020 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/
#if defined(CONFIG_CPU_CORTEX_M_HAS_VTOR)
/*
* In an MCU with VTOR, the VTOR.TBLOFF is set to the start address of the
* vector_relay_table, when building with support for interrupt relaying.
* Therefore, vector_relay_table must respect the alignment requirements
* of VTOR.TBLOFF described below.
*/
/* VTOR bits 0:6 are reserved (RES0). This requires that the base address
* of the vector table is 32-word aligned.
*/
. = ALIGN( 1 << LOG2CEIL(4 * 32) );
/* When setting TBLOFF in VTOR we must align the offset to the number of
* exception entries in the vector table. The minimum alignment of 32 words
* is sufficient for the 16 ARM Core exceptions and up to 16 HW interrupts.
* For more than 16 HW interrupts, we adjust the alignment by rounding up
* to the next power of two; this restriction guarantees a functional VTOR
* setting in any Cortex-M implementation (might not be required in every
* Cortex-M processor).
*/
. = ALIGN( 1 << LOG2CEIL(4 * (16 + CONFIG_NUM_IRQS)) );
#endif
KEEP(*(.vector_relay_table))
KEEP(*(".vector_relay_table.*"))
#include "vector_table_pad.ld"