Line data Source code
1 0 : /*
2 : * Copyright (c) 2017 Linaro Limited.
3 : * Copyright 2025 NXP
4 : *
5 : * SPDX-License-Identifier: Apache-2.0
6 : */
7 : #ifndef _ARM_CORTEX_M_MPU_MEM_CFG_H_
8 : #define _ARM_CORTEX_M_MPU_MEM_CFG_H_
9 :
10 : #include <zephyr/arch/arm/mpu/arm_mpu.h>
11 :
12 : #if !defined(CONFIG_ARMV8_M_BASELINE) && !defined(CONFIG_ARMV8_M_MAINLINE)
13 :
14 : /* Flash Region Definitions */
15 : #if CONFIG_FLASH_SIZE <= 64
16 0 : #define REGION_FLASH_SIZE REGION_64K
17 : #elif CONFIG_FLASH_SIZE <= 128
18 : #define REGION_FLASH_SIZE REGION_128K
19 : #elif CONFIG_FLASH_SIZE <= 256
20 : #define REGION_FLASH_SIZE REGION_256K
21 : #elif CONFIG_FLASH_SIZE <= 512
22 : #define REGION_FLASH_SIZE REGION_512K
23 : #elif CONFIG_FLASH_SIZE <= 1024
24 : #define REGION_FLASH_SIZE REGION_1M
25 : #elif CONFIG_FLASH_SIZE <= 2048
26 : #define REGION_FLASH_SIZE REGION_2M
27 : #elif CONFIG_FLASH_SIZE <= 4096
28 : #define REGION_FLASH_SIZE REGION_4M
29 : #elif CONFIG_FLASH_SIZE <= 8192
30 : #define REGION_FLASH_SIZE REGION_8M
31 : #elif CONFIG_FLASH_SIZE <= 16384
32 : #define REGION_FLASH_SIZE REGION_16M
33 : #elif CONFIG_FLASH_SIZE <= 65536
34 : #define REGION_FLASH_SIZE REGION_64M
35 : #elif CONFIG_FLASH_SIZE <= 131072
36 : #define REGION_FLASH_SIZE REGION_128M
37 : #elif CONFIG_FLASH_SIZE <= 262144
38 : #define REGION_FLASH_SIZE REGION_256M
39 : #elif CONFIG_FLASH_SIZE <= 524288
40 : #define REGION_FLASH_SIZE REGION_512M
41 : #elif CONFIG_FLASH_SIZE <= 1048576
42 : #define REGION_FLASH_SIZE REGION_1G
43 : #elif CONFIG_FLASH_SIZE <= 2097152
44 : #define REGION_FLASH_SIZE REGION_2G
45 : #elif CONFIG_FLASH_SIZE <= 4194304
46 : #define REGION_FLASH_SIZE REGION_4G
47 : #else
48 : #error "Unsupported flash size configuration"
49 : #endif
50 :
51 : /* SRAM Region Definitions */
52 : #if CONFIG_SRAM_SIZE <= 16
53 0 : #define REGION_SRAM_SIZE REGION_16K
54 : #elif CONFIG_SRAM_SIZE <= 32
55 : #define REGION_SRAM_SIZE REGION_32K
56 : #elif CONFIG_SRAM_SIZE <= 64
57 : #define REGION_SRAM_SIZE REGION_64K
58 : #elif CONFIG_SRAM_SIZE <= 128
59 : #define REGION_SRAM_SIZE REGION_128K
60 : #elif CONFIG_SRAM_SIZE <= 256
61 : #define REGION_SRAM_SIZE REGION_256K
62 : #elif CONFIG_SRAM_SIZE <= 512
63 : #define REGION_SRAM_SIZE REGION_512K
64 : #elif CONFIG_SRAM_SIZE <= 1024
65 : #define REGION_SRAM_SIZE REGION_1M
66 : #elif CONFIG_SRAM_SIZE <= 2048
67 : #define REGION_SRAM_SIZE REGION_2M
68 : #elif CONFIG_SRAM_SIZE <= 4096
69 : #define REGION_SRAM_SIZE REGION_4M
70 : #elif CONFIG_SRAM_SIZE <= 8192
71 : #define REGION_SRAM_SIZE REGION_8M
72 : #elif CONFIG_SRAM_SIZE <= 16384
73 : #define REGION_SRAM_SIZE REGION_16M
74 : #elif CONFIG_SRAM_SIZE <= 32768
75 : #define REGION_SRAM_SIZE REGION_32M
76 : #elif CONFIG_SRAM_SIZE <= 65536
77 : #define REGION_SRAM_SIZE REGION_64M
78 : #elif CONFIG_SRAM_SIZE <= 131072
79 : #define REGION_SRAM_SIZE REGION_128M
80 : #elif CONFIG_SRAM_SIZE <= 262144
81 : #define REGION_SRAM_SIZE REGION_256M
82 : #elif CONFIG_SRAM_SIZE <= 524288
83 : #define REGION_SRAM_SIZE REGION_512M
84 : #elif CONFIG_SRAM_SIZE <= 1048576
85 : #define REGION_SRAM_SIZE REGION_1G
86 : #elif CONFIG_SRAM_SIZE <= 2097152
87 : #define REGION_SRAM_SIZE REGION_2G
88 : #elif CONFIG_SRAM_SIZE <= 4194304
89 : #define REGION_SRAM_SIZE REGION_4G
90 : #else
91 : #error "Unsupported sram size configuration"
92 : #endif
93 :
94 : /* Define Wrong value */
95 0 : #define REGION_SIZE_UNSUPPORTED -1
96 :
97 : /* Customed Memory Region Definitions */
98 0 : #define REGION_CUSTOMED_MEMORY_SIZE(size_kb) \
99 : ((size_kb) <= 16 ? REGION_16K : \
100 : (size_kb) <= 32 ? REGION_32K : \
101 : (size_kb) <= 64 ? REGION_64K : \
102 : (size_kb) <= 128 ? REGION_128K : \
103 : (size_kb) <= 256 ? REGION_256K : \
104 : (size_kb) <= 512 ? REGION_512K : \
105 : (size_kb) <= 1024 ? REGION_1M : \
106 : (size_kb) <= 2048 ? REGION_2M : \
107 : (size_kb) <= 4096 ? REGION_4M : \
108 : (size_kb) <= 8192 ? REGION_8M : \
109 : (size_kb) <= 16384 ? REGION_16M : \
110 : (size_kb) <= 32768 ? REGION_32M : \
111 : (size_kb) <= 65536 ? REGION_64M : \
112 : (size_kb) <= 131072 ? REGION_128M : \
113 : (size_kb) <= 262144 ? REGION_256M : \
114 : (size_kb) <= 524288 ? REGION_512M : \
115 : (size_kb) <= 1048576 ? REGION_1G : \
116 : (size_kb) <= 2097152 ? REGION_2G : \
117 : (size_kb) <= 4194304 ? REGION_4G : \
118 : REGION_SIZE_UNSUPPORTED)
119 :
120 : #endif /* !ARMV8_M_BASELINE && !ARMV8_M_MAINLINE */
121 :
122 : #endif /* _ARM_CORTEX_M_MPU_MEM_CFG_H_ */
|