blob: 2dcfad5a336f3c5ec43b0d5c2baccea8540a0f0c [file] [log] [blame]
# Kconfig - Memory Protection Unit (MPU) configuration options
#
# Copyright (c) 2017 Linaro Limited
#
# SPDX-License-Identifier: Apache-2.0
#
if CPU_HAS_MPU
config ARM_MPU
bool "ARM MPU Support"
select MEMORY_PROTECTION
select THREAD_STACK_INFO
select ARCH_HAS_EXECUTABLE_PAGE_BIT
select MPU_REQUIRES_POWER_OF_TWO_ALIGNMENT if !(CPU_HAS_NXP_MPU || ARMV8_M_BASELINE || ARMV8_M_MAINLINE)
select MPU_REQUIRES_NON_OVERLAPPING_REGIONS if CPU_HAS_ARM_MPU && (ARMV8_M_BASELINE || ARMV8_M_MAINLINE)
help
MCU implements Memory Protection Unit.
Note that NXP MPU as well as ARMv8-M MPU does not require MPU regions
to have power-of-two alignment for base address and region size.
In addition to the above, ARMv8-M MPU requires the active MPU regions
be non-overlapping.
config ARM_MPU_REGION_MIN_ALIGN_AND_SIZE
int
default 32 if ARM_MPU
default 4
help
Minimum size (and alignment) of an ARM MPU region. Use this
symbol to guarantee minimum size and alignment of MPU regions.
A minimum 4-byte alignment is enforced in ARM builds without
support for Memory Protection.
config MPU_STACK_GUARD
bool "Thread Stack Guards"
depends on ARM_MPU
help
Enable Thread Stack Guards via MPU
config MPU_ALLOW_FLASH_WRITE
bool "Add MPU access to write to flash"
depends on ARM_MPU
help
Enable this to allow MPU RWX access to flash memory
endif # CPU_HAS_MPU