Zephyr Project API 3.7.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
memory-attr.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2023 Carlo Caione <ccaione@baylibre.com>
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_MEM_ATTR_H_
7#define ZEPHYR_INCLUDE_DT_BINDINGS_MEM_ATTR_H_
8
10
11/*
12 * Generic memory attributes.
13 *
14 * Generic memory attributes that should be common to all architectures.
15 */
16#define DT_MEM_ATTR_MASK GENMASK(15, 0)
17#define DT_MEM_ATTR_GET(x) ((x) & DT_MEM_ATTR_MASK)
18#define DT_MEM_ATTR_SHIFT (0)
19
20#define DT_MEM_CACHEABLE BIT(0) /* cacheable */
21#define DT_MEM_NON_VOLATILE BIT(1) /* non-volatile */
22#define DT_MEM_OOO BIT(2) /* out-of-order */
23#define DT_MEM_DMA BIT(3) /* DMA-able */
24#define DT_MEM_UNKNOWN BIT(15) /* must be last */
25/* to be continued */
26
27/*
28 * Software specific memory attributes.
29 *
30 * Software can define their own memory attributes if needed using the
31 * provided mask.
32 */
33#define DT_MEM_SW_ATTR_MASK GENMASK(19, 16)
34#define DT_MEM_SW_ATTR_GET(x) ((x) & DT_MEM_SW_ATTR_MASK)
35#define DT_MEM_SW_ATTR_SHIFT (16)
36#define DT_MEM_SW_ATTR_UNKNOWN BIT(19)
37
38/*
39 * Architecture specific memory attributes.
40 *
41 * Architectures can define their own memory attributes if needed using the
42 * provided mask.
43 *
44 * See for example `include/zephyr/dt-bindings/memory-attr/memory-attr-arm.h`
45 */
46#define DT_MEM_ARCH_ATTR_MASK GENMASK(31, 20)
47#define DT_MEM_ARCH_ATTR_GET(x) ((x) & DT_MEM_ARCH_ATTR_MASK)
48#define DT_MEM_ARCH_ATTR_SHIFT (20)
49#define DT_MEM_ARCH_ATTR_UNKNOWN BIT(31)
50
51#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_MEM_ATTR_H_ */
Macro utilities.