1 /*
2  * Arm SCP/MCP Software
3  * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  */
7 
8 #include "morello_scp_mmap.h"
9 #include "morello_scp_system_mmap.h"
10 
11 #include <mod_armv7m_mpu.h>
12 
13 #include <fwk_macros.h>
14 #include <fwk_module.h>
15 
16 #include <fmw_cmsis.h>
17 
18 static const ARM_MPU_Region_t regions[] = {
19     {
20         /* 0x0000_0000 - 0xFFFF_FFFF */
21         .RBAR = ARM_MPU_RBAR(0, 0x00000000),
22         .RASR = ARM_MPU_RASR(
23             1,
24             ARM_MPU_AP_PRIV,
25             0,
26             1,
27             0,
28             1,
29             0,
30             ARM_MPU_REGION_SIZE_4GB),
31     },
32     {
33         /* 0x0080_0000 - 0x0088_0000 */
34         .RBAR = ARM_MPU_RBAR(1, SCP_RAM0_BASE),
35         .RASR = ARM_MPU_RASR(
36             0,
37             ARM_MPU_AP_PRO,
38             0,
39             0,
40             1,
41             0,
42             0,
43             ARM_MPU_REGION_SIZE_512KB),
44     },
45     {
46         /* 0x2000_0000 - 0x2003_FFFF */
47         .RBAR = ARM_MPU_RBAR(2, SCP_RAM1_BASE),
48         .RASR = ARM_MPU_RASR(
49             1,
50             ARM_MPU_AP_PRIV,
51             0,
52             0,
53             1,
54             1,
55             0,
56             ARM_MPU_REGION_SIZE_256KB),
57     },
58     {
59         /* 0xA400_0000 - 0xA407_FFFF*/
60         .RBAR = ARM_MPU_RBAR(3, SCP_TRUSTED_RAM_BASE),
61         .RASR = ARM_MPU_RASR(
62             1,
63             ARM_MPU_AP_PRIV,
64             0,
65             1,
66             1,
67             1,
68             0,
69             ARM_MPU_REGION_SIZE_512KB),
70     },
71     {
72         /* 0x6540_0000 - 0x6540_00FF */
73         .RBAR = ARM_MPU_RBAR(4, SCP_AP_SHARED_SECURE_RAM),
74         .RASR = ARM_MPU_RASR(
75             1,
76             ARM_MPU_AP_PRIV,
77             0,
78             1,
79             1,
80             1,
81             0,
82             ARM_MPU_REGION_SIZE_256B),
83     },
84     {
85         /* 0xA600_0000 - 0xA600_FFFF */
86         .RBAR = ARM_MPU_RBAR(5, SCP_AP_BASE_NS_MAILBOX_SRAM),
87         .RASR = ARM_MPU_RASR(
88             1,
89             ARM_MPU_AP_PRIV,
90             0,
91             /* Shared memory, Strongly Ordered */
92             1,
93             0,
94             0,
95             0,
96             ARM_MPU_REGION_SIZE_64KB),
97     },
98 };
99 
100 const struct fwk_module_config config_armv7m_mpu = {
101     .data = &((struct mod_armv7m_mpu_config){
102         .region_count = FWK_ARRAY_SIZE(regions),
103         .regions = regions,
104     }),
105 };
106