1# Memory Protection Unit (MPU) configuration options
2
3# Copyright (c) 2017 Synopsys
4# SPDX-License-Identifier: Apache-2.0
5
6config ARC_MPU_VER
7	int "ARC MPU version"
8	range 2 8
9	default 2
10	help
11	  ARC MPU has several versions. For MPU v2, the minimum region is 2048 bytes;
12	  For other versions, the minimum region is 32 bytes; v4 has secure features,
13	  v6 supports up to 32 regions. Note: MPU v5 & v7 are not supported.
14
15config ARC_CORE_MPU
16	bool "ARC Core MPU functionalities"
17	help
18	  ARC core MPU functionalities
19
20config MPU_STACK_GUARD
21	bool "Thread Stack Guards"
22	depends on ARC_CORE_MPU && ARC_MPU_VER !=2
23	help
24	  Enable thread stack guards via MPU. ARC supports built-in stack protection.
25	  If your core supports that, it is preferred over MPU stack guard.
26	  For ARC_MPU_VER == 2, it requires 2048 extra bytes and a strong start address
27	  alignment, this will bring big waste of memory, so no support for it.
28
29config ARC_MPU
30	bool "ARC MPU Support"
31	select MPU
32	select SRAM_REGION_PERMISSIONS
33	select ARC_CORE_MPU
34	select THREAD_STACK_INFO
35	select GEN_PRIV_STACKS if !(ARC_MPU_VER = 4 || ARC_MPU_VER = 8)
36	select MPU_REQUIRES_POWER_OF_TWO_ALIGNMENT if !(ARC_MPU_VER = 4 || ARC_MPU_VER = 8)
37	select MPU_REQUIRES_NON_OVERLAPPING_REGIONS if (ARC_MPU_VER = 4 || ARC_MPU_VER = 8)
38	select ARCH_MEM_DOMAIN_SUPPORTS_ISOLATED_STACKS
39	select MEM_DOMAIN_ISOLATED_STACKS
40	help
41	  Target has ARC MPU
42