mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-12 14:23:00 +00:00
96b61ab15c
Cortex-M archs support option memory protection unit (MPU). MPU is used to set the memory types, attributes, access permissions for different regions, cache policies of the device. e.g. using MPU it is possible to configure memory region as device memory or strongly ordered, memory attributes like execute never, cache policies like write-back or write-through. Signed-off-by: Vikas Manocha <vikas.manocha@st.com>
67 lines
993 B
C
67 lines
993 B
C
/*
|
|
* (C) Copyright 2017
|
|
* Vikas Manocha, ST Micoelectronics, vikas.manocha@st.com.
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
*/
|
|
|
|
enum region_number {
|
|
REGION_0 = 0,
|
|
REGION_1,
|
|
REGION_2,
|
|
REGION_3,
|
|
REGION_4,
|
|
REGION_5,
|
|
REGION_6,
|
|
REGION_7,
|
|
};
|
|
|
|
enum ap {
|
|
NO_ACCESS = 0,
|
|
PRIV_RW_USR_NO,
|
|
PRIV_RW_USR_RO,
|
|
PRIV_RW_USR_RW,
|
|
UNPREDICTABLE,
|
|
PRIV_RO_USR_NO,
|
|
PRIV_RO_USR_RO,
|
|
};
|
|
|
|
enum mr_attr {
|
|
STRONG_ORDER = 0,
|
|
SHARED_WRITE_BUFFERED,
|
|
O_I_WT_NO_WR_ALLOC,
|
|
O_I_WB_NO_WR_ALLOC,
|
|
O_I_NON_CACHEABLE,
|
|
O_I_WB_RD_WR_ALLOC,
|
|
DEVICE_NON_SHARED,
|
|
};
|
|
enum size {
|
|
REGION_8MB = 22,
|
|
REGION_16MB,
|
|
REGION_32MB,
|
|
REGION_64MB,
|
|
REGION_128MB,
|
|
REGION_256MB,
|
|
REGION_512MB,
|
|
REGION_1GB,
|
|
REGION_2GB,
|
|
REGION_4GB,
|
|
};
|
|
|
|
enum xn {
|
|
XN_DIS = 0,
|
|
XN_EN,
|
|
};
|
|
|
|
struct mpu_region_config {
|
|
uint32_t start_addr;
|
|
enum region_number region_no;
|
|
enum xn xn;
|
|
enum ap ap;
|
|
enum mr_attr mr_attr;
|
|
enum size reg_size;
|
|
};
|
|
|
|
void disable_mpu(void);
|
|
void enable_mpu(void);
|
|
void mpu_config(struct mpu_region_config *reg_config);
|