Blame view
arch/arm/mach-stm32/soc.c
1.42 KB
246771b18 board: Add stm32h... |
1 |
/* |
3bc599c95 stm32: fix STMicr... |
2 3 |
* Copyright (C) 2017, STMicroelectronics - All Rights Reserved * Author(s): Patrice Chotard, <patrice.chotard@st.com> for STMicroelectronics. |
246771b18 board: Add stm32h... |
4 5 6 7 8 9 10 |
* * SPDX-License-Identifier: GPL-2.0+ */ #include <common.h> #include <asm/io.h> #include <asm/armv7m_mpu.h> |
246771b18 board: Add stm32h... |
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
int arch_cpu_init(void) { int i; struct mpu_region_config stm32_region_config[] = { /* * Make all 4GB cacheable & executable. We are overriding it * with next region for any requirement. e.g. below region1, * 2 etc. * In other words, the area not coming in following * regions configuration is the one configured here in region_0 * (cacheable & executable). */ { 0x00000000, REGION_0, XN_DIS, PRIV_RW_USR_RW, O_I_WB_RD_WR_ALLOC, REGION_4GB }, |
c729fb258 mach-stm32: Facto... |
26 27 28 |
/* armv7m code area */ { 0x00000000, REGION_1, XN_DIS, PRIV_RW_USR_RW, STRONG_ORDER, REGION_512MB }, |
246771b18 board: Add stm32h... |
29 |
|
c729fb258 mach-stm32: Facto... |
30 |
/* Device area : Not executable */ |
246771b18 board: Add stm32h... |
31 32 33 34 35 36 37 |
{ 0x40000000, REGION_2, XN_EN, PRIV_RW_USR_RW, DEVICE_NON_SHARED, REGION_512MB }, /* * Armv7m fixed configuration: strongly ordered & not * executable, not cacheable */ |
c729fb258 mach-stm32: Facto... |
38 |
{ 0xE0000000, REGION_3, XN_EN, PRIV_RW_USR_RW, |
246771b18 board: Add stm32h... |
39 |
STRONG_ORDER, REGION_512MB }, |
c729fb258 mach-stm32: Facto... |
40 41 42 43 44 45 |
#if !defined(CONFIG_STM32H7) /* Device area : Not executable */ { 0xA0000000, REGION_4, XN_EN, PRIV_RW_USR_RW, DEVICE_NON_SHARED, REGION_512MB }, #endif |
246771b18 board: Add stm32h... |
46 47 48 49 50 51 52 53 54 |
}; disable_mpu(); for (i = 0; i < ARRAY_SIZE(stm32_region_config); i++) mpu_config(&stm32_region_config[i]); enable_mpu(); return 0; } |