/*
 * 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
 *
 * @param name name of the generated memory region
 * @param attr region attributes to use (rx, rw, ...)
 * @param node devicetree node with a <reg> property defining region location
 *             and size.
 */
#define DT_REGION_FROM_NODE_STATUS_OKAY(name, attr, node) \
	COND_CODE_1(DT_NODE_HAS_STATUS(node, okay),	  \
		    (_REGION_DECLARE(name, attr, node)),  \
		    ())
