Linux preempt-rt

Check our new training course

Real-Time Linux with PREEMPT_RT

Check our new training course
with Creative Commons CC-BY-SA
lecture and lab materials

Bootlin logo

Elixir Cross Referencer

# 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