Pull request https://github.com/zephyrproject-rtos/zephyr/pull/24873 marked all the struct devices const. However, the linker scripts were never updated to actually allocate the struct devices in ROM. They're still in RAM, so the main benefit of this work has not been realized. Fix it. Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
132 lines
3.8 KiB
Plaintext
132 lines
3.8 KiB
Plaintext
/* SPDX-License-Identifier: Apache-2.0 */
|
|
|
|
#if defined(CONFIG_NETWORKING)
|
|
#ifndef NETWORK_RAM_SECTIONS
|
|
#define NETWORK_RAM_SECTIONS \
|
|
Z_ITERABLE_SECTION_RAM(net_if, 4) \
|
|
Z_ITERABLE_SECTION_RAM(net_if_dev, 4) \
|
|
Z_ITERABLE_SECTION_RAM(net_l2, 4)
|
|
#endif
|
|
#endif /* NETWORKING */
|
|
|
|
#if defined(CONFIG_GEN_SW_ISR_TABLE) && defined(CONFIG_DYNAMIC_INTERRUPTS)
|
|
SECTION_DATA_PROLOGUE(sw_isr_table,,)
|
|
{
|
|
/*
|
|
* Some arch requires an entry to be aligned to arch
|
|
* specific boundary for using double word load
|
|
* instruction. See include/sw_isr_table.h.
|
|
*/
|
|
. = ALIGN(CONFIG_ARCH_SW_ISR_TABLE_ALIGN);
|
|
*(_SW_ISR_TABLE_SECTION_SYMS)
|
|
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
|
#endif
|
|
|
|
#if CONFIG_PM_DEVICE
|
|
SECTION_DATA_PROLOGUE(pm_device_slots, (NOLOAD),)
|
|
{
|
|
__pm_device_slots_start = .;
|
|
KEEP(*(".z_pm_device_slots"));
|
|
__pm_device_slots_end = .;
|
|
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
|
#endif
|
|
|
|
SECTION_DATA_PROLOGUE(initshell,,)
|
|
{
|
|
/* link in shell initialization objects for all modules that
|
|
* use shell and their shell commands are automatically
|
|
* initialized by the kernel.
|
|
*/
|
|
__shell_module_start = .;
|
|
KEEP(*(".shell_module_*"));
|
|
__shell_module_end = .;
|
|
__shell_cmd_start = .;
|
|
KEEP(*(".shell_cmd_*"));
|
|
__shell_cmd_end = .;
|
|
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
|
|
|
SECTION_DATA_PROLOGUE(log_dynamic_sections,,)
|
|
{
|
|
__log_dynamic_start = .;
|
|
KEEP(*(SORT(.log_dynamic_*)));
|
|
__log_dynamic_end = .;
|
|
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
|
|
|
Z_ITERABLE_SECTION_RAM(_static_thread_data, 4)
|
|
|
|
#ifdef CONFIG_USERSPACE
|
|
/* All kernel objects within are assumed to be either completely
|
|
* initialized at build time, or initialized automatically at runtime
|
|
* via iteration before the POST_KERNEL phase.
|
|
*
|
|
* These two symbols only used by gen_kobject_list.py
|
|
*/
|
|
|
|
_static_kernel_objects_begin = .;
|
|
#endif /* CONFIG_USERSPACE */
|
|
|
|
Z_ITERABLE_SECTION_RAM_GC_ALLOWED(k_timer, 4)
|
|
Z_ITERABLE_SECTION_RAM_GC_ALLOWED(k_mem_slab, 4)
|
|
Z_ITERABLE_SECTION_RAM_GC_ALLOWED(k_mem_pool, 4)
|
|
Z_ITERABLE_SECTION_RAM_GC_ALLOWED(k_heap, 4)
|
|
Z_ITERABLE_SECTION_RAM_GC_ALLOWED(k_mutex, 4)
|
|
Z_ITERABLE_SECTION_RAM_GC_ALLOWED(k_stack, 4)
|
|
Z_ITERABLE_SECTION_RAM_GC_ALLOWED(k_msgq, 4)
|
|
Z_ITERABLE_SECTION_RAM_GC_ALLOWED(k_mbox, 4)
|
|
Z_ITERABLE_SECTION_RAM_GC_ALLOWED(k_pipe, 4)
|
|
Z_ITERABLE_SECTION_RAM_GC_ALLOWED(k_sem, 4)
|
|
Z_ITERABLE_SECTION_RAM_GC_ALLOWED(k_queue, 4)
|
|
Z_ITERABLE_SECTION_RAM_GC_ALLOWED(k_condvar, 4)
|
|
|
|
SECTION_DATA_PROLOGUE(_net_buf_pool_area,,SUBALIGN(4))
|
|
{
|
|
_net_buf_pool_list = .;
|
|
KEEP(*(SORT_BY_NAME("._net_buf_pool.static.*")))
|
|
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
|
|
|
#if defined(CONFIG_NETWORKING)
|
|
NETWORK_RAM_SECTIONS
|
|
#endif /* NETWORKING */
|
|
|
|
#if defined(CONFIG_UART_MUX)
|
|
SECTION_DATA_PROLOGUE(uart_mux,,SUBALIGN(4))
|
|
{
|
|
__uart_mux_start = .;
|
|
*(".uart_mux.*")
|
|
KEEP(*(SORT_BY_NAME(".uart_mux.*")))
|
|
__uart_mux_end = .;
|
|
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
|
#endif
|
|
|
|
#if defined(CONFIG_USB_DEVICE_STACK)
|
|
SECTION_DATA_PROLOGUE(usb_descriptor,,SUBALIGN(1))
|
|
{
|
|
__usb_descriptor_start = .;
|
|
*(".usb.descriptor")
|
|
KEEP(*(SORT_BY_NAME(".usb.descriptor*")))
|
|
__usb_descriptor_end = .;
|
|
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
|
|
|
SECTION_DATA_PROLOGUE(usb_data,,SUBALIGN(1))
|
|
{
|
|
__usb_data_start = .;
|
|
*(".usb.data")
|
|
KEEP(*(SORT_BY_NAME(".usb.data*")))
|
|
__usb_data_end = .;
|
|
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
|
#endif /* CONFIG_USB_DEVICE_STACK */
|
|
|
|
#if defined(CONFIG_USB_DEVICE_BOS)
|
|
SECTION_DATA_PROLOGUE(usb_bos_desc,,SUBALIGN(1))
|
|
{
|
|
__usb_bos_desc_start = .;
|
|
*(".usb.bos_desc")
|
|
KEEP(*(SORT_BY_NAME(".usb.bos_desc*")))
|
|
__usb_bos_desc_end = .;
|
|
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
|
|
#endif /* CONFIG_USB_DEVICE_BOS */
|
|
|
|
#ifdef CONFIG_USERSPACE
|
|
_static_kernel_objects_end = .;
|
|
#endif
|