32 lines
1.0 KiB
C
32 lines
1.0 KiB
C
/*
|
|
* Copyright (c) 2021, Commonwealth Scientific and Industrial Research
|
|
* Organisation (CSIRO) ABN 41 687 119 230.
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*
|
|
* Generate memory regions from devicetree nodes.
|
|
*/
|
|
|
|
/* Declare a memory region */
|
|
#define _REGION_DECLARE(name, attr, node) name(attr) : \
|
|
ORIGIN = DT_REG_ADDR(node), \
|
|
LENGTH = DT_REG_SIZE(node)
|
|
|
|
/**
|
|
* @brief Generate a linker memory region from a devicetree node
|
|
*
|
|
* If @p node_id refers to a node with status "okay", then this declares
|
|
* a linker memory region named @p name with attributes from @p attr.
|
|
*
|
|
* Otherwise, it doesn't expand to anything.
|
|
*
|
|
* @param name name of the generated memory region
|
|
* @param attr region attributes to use (rx, rw, ...)
|
|
* @param node_id devicetree node identifier with a \<reg\> property
|
|
* defining region location and size.
|
|
*/
|
|
#define LINKER_DT_REGION_FROM_NODE(name, attr, node_id) \
|
|
COND_CODE_1(DT_NODE_HAS_STATUS(node_id, okay), \
|
|
(_REGION_DECLARE(name, attr, node_id)), \
|
|
())
|