File tree Expand file tree Collapse file tree 9 files changed +17
-6
lines changed
cmake/linker_script/common Expand file tree Collapse file tree 9 files changed +17
-6
lines changed Original file line number Diff line number Diff line change @@ -462,6 +462,7 @@ config ISR_TABLES_LOCAL_DECLARATION
462
462
463
463
config DYNAMIC_INTERRUPTS
464
464
bool "Installation of IRQs at runtime"
465
+ select SRAM_SW_ISR_TABLE
465
466
help
466
467
Enable installation of interrupts at runtime, which will move some
467
468
interrupt-related data structures to RAM instead of ROM, and
@@ -582,6 +583,12 @@ config SRAM_VECTOR_TABLE
582
583
When XiP is enabled, this option will result in the vector table being
583
584
relocated from Flash to SRAM.
584
585
586
+ config SRAM_SW_ISR_TABLE
587
+ bool
588
+ help
589
+ The option specifies that the software interrupts vector table will be
590
+ placed inside SRAM instead of the flash.
591
+
585
592
config IRQ_OFFLOAD_NESTED
586
593
bool "irq_offload() supports nested IRQs"
587
594
depends on IRQ_OFFLOAD
Original file line number Diff line number Diff line change @@ -37,7 +37,7 @@ zephyr_linker_sources(ROM_START SORT_KEY 0x1vectors cortex_m/vector_table_pad.ld
37
37
endif ()
38
38
39
39
if (CONFIG_GEN_SW_ISR_TABLE )
40
- if (CONFIG_DYNAMIC_INTERRUPTS )
40
+ if (CONFIG_SRAM_SW_ISR_TABLE )
41
41
zephyr_linker_sources (RWDATA swi_tables.ld )
42
42
else ()
43
43
zephyr_linker_sources (RODATA swi_tables.ld )
Original file line number Diff line number Diff line change @@ -60,7 +60,7 @@ endif()
60
60
add_subdirectory_ifdef (CONFIG_XEN xen )
61
61
62
62
if (CONFIG_GEN_SW_ISR_TABLE )
63
- if (CONFIG_DYNAMIC_INTERRUPTS )
63
+ if (CONFIG_SRAM_SW_ISR_TABLE )
64
64
zephyr_linker_sources (RWDATA swi_tables.ld )
65
65
else ()
66
66
zephyr_linker_sources (RODATA swi_tables.ld )
Original file line number Diff line number Diff line change 2
2
# The contents of this file is based on include/zephyr/linker/common-ram.ld
3
3
# Please keep in sync
4
4
5
- if (CONFIG_GEN_SW_ISR_TABLE AND CONFIG_DYNAMIC_INTERRUPTS )
5
+ if (CONFIG_GEN_SW_ISR_TABLE AND CONFIG_SRAM_SW_ISR_TABLE )
6
6
# ld align has been changed to subalign to provide identical behavior scatter vs. ld.
7
7
zephyr_linker_section (NAME sw_isr_table
8
8
GROUP DATA_REGION
Original file line number Diff line number Diff line change @@ -13,7 +13,7 @@ zephyr_linker_section_obj_level(SECTION init LEVEL SMP)
13
13
14
14
zephyr_iterable_section (NAME device NUMERIC KVMA RAM_REGION GROUP RODATA_REGION SUBALIGN ${CONFIG_LINKER_ITERABLE_SUBALIGN} )
15
15
16
- if (CONFIG_GEN_SW_ISR_TABLE AND NOT CONFIG_DYNAMIC_INTERRUPTS )
16
+ if (CONFIG_GEN_SW_ISR_TABLE AND NOT CONFIG_SRAM_SW_ISR_TABLE )
17
17
# ld align has been changed to subalign to provide identical behavior scatter vs. ld.
18
18
zephyr_linker_section (NAME sw_isr_table KVMA FLASH GROUP RODATA_REGION SUBALIGN ${CONFIG_ARCH_SW_ISR_TABLE_ALIGN} NOINPUT )
19
19
zephyr_linker_section_configure (
Original file line number Diff line number Diff line change @@ -335,3 +335,6 @@ Architectures
335
335
:kconfig:option: `CONFIG_ARCH_HAS_VECTOR_TABLE_RELOCATION ` and
336
336
:kconfig:option: `CONFIG_ROMSTART_RELOCATION_ROM ` to support relocation
337
337
of vector table in RAM.
338
+
339
+ * The :kconfig:option: `CONFIG_DYNAMIC_INTERRUPTS ` option has a new dependency with
340
+ :kconfig:option: `CONFIG_SRAM_SW_ISR_TABLE `.
Original file line number Diff line number Diff line change @@ -111,6 +111,7 @@ New APIs and options
111
111
* :kconfig:option: `ARCH_HAS_VECTOR_TABLE_RELOCATION `
112
112
* :kconfig:option: `CONFIG_SRAM_VECTOR_TABLE ` moved from ``zephyr/Kconfig.zephyr `` to
113
113
``zephyr/arch/Kconfig `` and added dependencies to it.
114
+ * :kconfig:option: `CONFIG_SRAM_SW_ISR_TABLE `
114
115
115
116
* Kernel
116
117
Original file line number Diff line number Diff line change 17
17
ITERABLE_SECTION_RAM(scmi_protocol, Z_LINK_ITERABLE_SUBALIGN)
18
18
#endif /* CONFIG_ARM_SCMI */
19
19
20
- #if defined(CONFIG_GEN_SW_ISR_TABLE) && defined(CONFIG_DYNAMIC_INTERRUPTS )
20
+ #if defined(CONFIG_GEN_SW_ISR_TABLE) && defined(CONFIG_SRAM_SW_ISR_TABLE )
21
21
SECTION_DATA_PROLOGUE(sw_isr_table,,)
22
22
{
23
23
/*
Original file line number Diff line number Diff line change 42
42
} GROUP_ROM_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
43
43
#endif
44
44
45
- #if defined(CONFIG_GEN_SW_ISR_TABLE) && !defined(CONFIG_DYNAMIC_INTERRUPTS )
45
+ #if defined(CONFIG_GEN_SW_ISR_TABLE) && !defined(CONFIG_SRAM_SW_ISR_TABLE )
46
46
SECTION_PROLOGUE(sw_isr_table,,)
47
47
{
48
48
/*
You can’t perform that action at this time.
0 commit comments