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 @@ -470,6 +470,7 @@ config ISR_TABLES_LOCAL_DECLARATION
470
470
471
471
config DYNAMIC_INTERRUPTS
472
472
bool "Installation of IRQs at runtime"
473
+ select SRAM_SW_ISR_TABLE
473
474
help
474
475
Enable installation of interrupts at runtime, which will move some
475
476
interrupt-related data structures to RAM instead of ROM, and
@@ -596,6 +597,12 @@ config SRAM_VECTOR_TABLE
596
597
When XiP is enabled, this option will result in the vector table being
597
598
relocated from Flash to SRAM.
598
599
600
+ config SRAM_SW_ISR_TABLE
601
+ bool "Place the software ISR table in SRAM instead of flash"
602
+ help
603
+ The option specifies that the software interrupts vector table will be
604
+ placed inside SRAM instead of the flash.
605
+
599
606
config IRQ_OFFLOAD_NESTED
600
607
bool "irq_offload() supports nested IRQs"
601
608
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 )
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 @@ -760,3 +760,6 @@ Architectures
760
760
of vector table in RAM.
761
761
* Renamed :kconfig:option: `CONFIG_DEBUG_INFO ` to :kconfig:option: `CONFIG_X86_DEBUG_INFO ` to
762
762
better reflect its purpose. This option is now only available for x86 architecture.
763
+
764
+ * The :kconfig:option: `CONFIG_DYNAMIC_INTERRUPTS ` option has a new dependency with
765
+ :kconfig:option: `CONFIG_SRAM_SW_ISR_TABLE `.
Original file line number Diff line number Diff line change @@ -127,6 +127,7 @@ New APIs and options
127
127
* :kconfig:option: `ARCH_HAS_VECTOR_TABLE_RELOCATION `
128
128
* :kconfig:option: `CONFIG_SRAM_VECTOR_TABLE ` moved from ``zephyr/Kconfig.zephyr `` to
129
129
``zephyr/arch/Kconfig `` and added dependencies to it.
130
+ * :kconfig:option: `CONFIG_SRAM_SW_ISR_TABLE `
130
131
131
132
* Kernel
132
133
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