Blame view

arch/arm/mach-stm32/soc.c 1.42 KB
246771b18   Patrice Chotard   board: Add stm32h...
1
  /*
3bc599c95   Patrice Chotard   stm32: fix STMicr...
2
3
   * Copyright (C) 2017, STMicroelectronics - All Rights Reserved
   * Author(s): Patrice Chotard, <patrice.chotard@st.com> for STMicroelectronics.
246771b18   Patrice Chotard   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   Patrice Chotard   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   Patrice Chotard   mach-stm32: Facto...
26
27
28
  		/* armv7m code area */
  		{ 0x00000000, REGION_1, XN_DIS, PRIV_RW_USR_RW,
  		STRONG_ORDER, REGION_512MB },
246771b18   Patrice Chotard   board: Add stm32h...
29

c729fb258   Patrice Chotard   mach-stm32: Facto...
30
  		/* Device area : Not executable */
246771b18   Patrice Chotard   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   Patrice Chotard   mach-stm32: Facto...
38
  		{ 0xE0000000, REGION_3, XN_EN, PRIV_RW_USR_RW,
246771b18   Patrice Chotard   board: Add stm32h...
39
  		STRONG_ORDER, REGION_512MB },
c729fb258   Patrice Chotard   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   Patrice Chotard   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;
  }