# Kconfig - Memory Protection Unit (MPU) configuration options

#
# Copyright (c) 2017 Linaro Limited
#
# SPDX-License-Identifier: Apache-2.0
#

config ARM_CORE_MPU
	bool "ARM Core MPU functionalities"
	depends on CPU_HAS_MPU
	select THREAD_STACK_INFO
	help
	  ARM Core MPU functionalities

config MPU_STACK_GUARD
	bool "Thread Stack Guards"
	depends on ARM_CORE_MPU
	help
	  Enable Thread Stack Guards via MPU

config ARM_MPU
	bool "ARM MPU Support"
	depends on !CPU_CORTEX_M0
	depends on CPU_HAS_MPU
	depends on SOC_FAMILY_ARM || SOC_FAMILY_STM32 || SOC_FAMILY_NRF || SOC_FAMILY_IMX || SOC_FAMILY_SAM
	select ARM_CORE_MPU
	select ARCH_HAS_EXECUTABLE_PAGE_BIT
	select MPU_REQUIRES_POWER_OF_TWO_ALIGNMENT
	help
	  MCU has ARM MPU

config NXP_MPU
	bool "NXP MPU Support"
	depends on CPU_HAS_MPU
	depends on SOC_FAMILY_KINETIS
	select ARM_CORE_MPU
	select ARCH_HAS_EXECUTABLE_PAGE_BIT
	help
	  MCU has NXP MPU

config MPU_ALLOW_FLASH_WRITE
	bool "Add MPU access to write to flash"
	depends on ARM_MPU || NXP_MPU
	help
	  Enable this to allow MPU RWX access to flash memory
