10#ifndef ZEPHYR_INCLUDE_LINKER_DEVICETREE_REGIONS_H_
11#define ZEPHYR_INCLUDE_LINKER_DEVICETREE_REGIONS_H_
48#define LINKER_DT_NODE_REGION_NAME_TOKEN(node_id) \
49 DT_STRING_TOKEN(node_id, zephyr_memory_region)
82#define LINKER_DT_NODE_REGION_NAME(node_id) \
83 STRINGIFY(LINKER_DT_NODE_REGION_NAME_TOKEN(node_id))
87#define _DT_COMPATIBLE zephyr_memory_region
89#define _DT_SECTION_PREFIX(node_id) UTIL_CAT(__, LINKER_DT_NODE_REGION_NAME_TOKEN(node_id))
90#define _DT_SECTION_START(node_id) UTIL_CAT(_DT_SECTION_PREFIX(node_id), _start)
91#define _DT_SECTION_END(node_id) UTIL_CAT(_DT_SECTION_PREFIX(node_id), _end)
92#define _DT_SECTION_SIZE(node_id) UTIL_CAT(_DT_SECTION_PREFIX(node_id), _size)
93#define _DT_SECTION_LOAD(node_id) UTIL_CAT(_DT_SECTION_PREFIX(node_id), _load_start)
117#define _REGION_DECLARE(node_id) \
118 LINKER_DT_NODE_REGION_NAME_TOKEN(node_id) : \
119 ORIGIN = DT_REG_ADDR(node_id), \
120 LENGTH = DT_REG_SIZE(node_id)
152#define _SECTION_DECLARE(node_id) \
153 LINKER_DT_NODE_REGION_NAME_TOKEN(node_id) (NOLOAD) : \
155 _DT_SECTION_START(node_id) = .; \
156 KEEP(*(LINKER_DT_NODE_REGION_NAME_TOKEN(node_id))) \
157 KEEP(*(LINKER_DT_NODE_REGION_NAME_TOKEN(node_id).*)) \
158 _DT_SECTION_END(node_id) = .; \
159 } > LINKER_DT_NODE_REGION_NAME_TOKEN(node_id) \
160 _DT_SECTION_SIZE(node_id) = _DT_SECTION_END(node_id) - _DT_SECTION_START(node_id); \
161 _DT_SECTION_LOAD(node_id) = LOADADDR(LINKER_DT_NODE_REGION_NAME_TOKEN(node_id));
173#define LINKER_DT_REGIONS() \
174 DT_FOREACH_STATUS_OKAY(_DT_COMPATIBLE, _REGION_DECLARE)
180#define LINKER_DT_SECTIONS() \
181 DT_FOREACH_STATUS_OKAY(_DT_COMPATIBLE, _SECTION_DECLARE)