mirror of https://github.com/ARMmbed/mbed-os.git
Rework MPU layout for future changes
Create a dedicated MPU directory for standard Arm MPU implementations in preparation for the Arm v8m MPU. Replace MBED_MPU_ENABLED with DEVICE_MPU to align with the porting layer of other HAL APIs.pull/8871/head
parent
c0ff98614a
commit
d00f59fdc8
|
@ -23,8 +23,7 @@
|
|||
|
||||
#include "mpu_api.h"
|
||||
|
||||
// Define included by mpu_api.h
|
||||
#if !MBED_MPU_ENABLED
|
||||
#if !DEVICE_MPU
|
||||
#error [NOT_SUPPORTED] MPU API not supported for this target
|
||||
#endif
|
||||
|
||||
|
|
|
@ -16,6 +16,13 @@
|
|||
#include "hal/mpu_api.h"
|
||||
#include "cmsis.h"
|
||||
|
||||
#if ((__ARM_ARCH_7M__ == 1U) || (__ARM_ARCH_7EM__ == 1U) || (__ARM_ARCH_6M__ == 1U)) && \
|
||||
defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)
|
||||
|
||||
#if !DEVICE_MPU
|
||||
#error "Device has v7m MPU but it is not enabled. Add 'MPU' to device_has in targets.json"
|
||||
#endif
|
||||
|
||||
void mbed_mpu_init()
|
||||
{
|
||||
mbed_mpu_enable_ram_xn(false);
|
||||
|
@ -28,7 +35,6 @@ void mbed_mpu_free()
|
|||
|
||||
void mbed_mpu_enable_ram_xn(bool enable)
|
||||
{
|
||||
#if MBED_MPU_ENABLED
|
||||
// Flush memory writes before configuring the MPU.
|
||||
__DSB();
|
||||
|
||||
|
@ -145,5 +151,6 @@ void mbed_mpu_enable_ram_xn(bool enable)
|
|||
// Ensure changes take effect
|
||||
__ISB();
|
||||
__DSB();
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
|
@ -19,33 +19,15 @@
|
|||
#ifndef MBED_MPU_API_H
|
||||
#define MBED_MPU_API_H
|
||||
|
||||
#include "device.h"
|
||||
#include <stdbool.h>
|
||||
#include "cmsis.h"
|
||||
|
||||
#ifndef MBED_MPU_ENABLED
|
||||
|
||||
#if ((__ARM_ARCH_7M__ == 1U) || \
|
||||
(__ARM_ARCH_7EM__ == 1U) || \
|
||||
(__ARM_ARCH_6M__ == 1U))
|
||||
#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U)
|
||||
#define MBED_MPU_ENABLED 1U
|
||||
#else
|
||||
#define MBED_MPU_ENABLED 0U
|
||||
#endif
|
||||
#elif ((__ARM_ARCH_7A__ == 1U) || \
|
||||
(__ARM_ARCH_8M_BASE__ == 1U) || \
|
||||
(__ARM_ARCH_8M_MAIN__ == 1U))
|
||||
#define MBED_MPU_ENABLED 0U
|
||||
#else
|
||||
#error "Unknown architecture for MPU"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if DEVICE_MPU
|
||||
|
||||
/**
|
||||
* Initialize the MPU
|
||||
*
|
||||
|
@ -71,6 +53,16 @@ void mbed_mpu_enable_ram_xn(bool enable);
|
|||
*/
|
||||
void mbed_mpu_free(void);
|
||||
|
||||
#else
|
||||
|
||||
#define mbed_mpu_init()
|
||||
|
||||
#define mbed_mpu_enable_ram_xn(enable) (void)enable
|
||||
|
||||
#define mbed_mpu_free()
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue