From 726c7b545fed8bc842a40c5cbdb424bdf38c2cc3 Mon Sep 17 00:00:00 2001 From: Vincenzo Frascino Date: Wed, 29 Mar 2017 11:29:26 +0100 Subject: [PATCH] arm: core: mpu: Add core MPU implementation This patch adds the arm core MPU implementation. This implementation currently supports the thread stack guard feature. Change-Id: I8b3795ebaf1ebad38aaddc2ed2f05535ead2c09a Signed-off-by: Vincenzo Frascino --- arch/arm/core/cortex_m/mpu/Makefile | 1 + arch/arm/core/cortex_m/mpu/arm_core_mpu.c | 31 +++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 arch/arm/core/cortex_m/mpu/arm_core_mpu.c diff --git a/arch/arm/core/cortex_m/mpu/Makefile b/arch/arm/core/cortex_m/mpu/Makefile index 69556bc0147..b01b5de495f 100644 --- a/arch/arm/core/cortex_m/mpu/Makefile +++ b/arch/arm/core/cortex_m/mpu/Makefile @@ -1,2 +1,3 @@ +obj-$(CONFIG_ARM_CORE_MPU) += arm_core_mpu.o obj-$(CONFIG_ARM_MPU) += arm_mpu.o obj-$(CONFIG_NXP_MPU) += nxp_mpu.o diff --git a/arch/arm/core/cortex_m/mpu/arm_core_mpu.c b/arch/arm/core/cortex_m/mpu/arm_core_mpu.c new file mode 100644 index 00000000000..932ef77734b --- /dev/null +++ b/arch/arm/core/cortex_m/mpu/arm_core_mpu.c @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2017 Linaro Limited. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include +#include +#include +#include + +#if defined(CONFIG_MPU_STACK_GUARD) +/* + * @brief Configure MPU stack guard + * + * This function configures per thread stack guards reprogramming the MPU. + * The functionality is meant to be used during context switch. + * + * @param thread thread info data structure. + */ +void configure_mpu_stack_guard(struct k_thread *thread) +{ + arm_core_mpu_disable(); + arm_core_mpu_configure(THREAD_STACK_GUARD_REGION, + thread->stack_info.start, + thread->stack_info.size); + arm_core_mpu_enable(); +} +#endif