1 /*
2  * Arm SCP/MCP Software
3  * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  */
7 
8 #include "scp_mmap.h"
9 
10 #include <mod_armv7m_mpu.h>
11 
12 #include <fwk_macros.h>
13 #include <fwk_module.h>
14 
15 #include <fmw_cmsis.h>
16 
17 static const ARM_MPU_Region_t regions[4] = {
18     {
19         /* 0x0000_0000 - 0xFFFF_FFFF */
20         .RBAR = ARM_MPU_RBAR(0, 0x00000000),
21         .RASR = ARM_MPU_RASR(
22             1,
23             ARM_MPU_AP_PRIV,
24             0,
25             1,
26             0,
27             1,
28             0,
29             ARM_MPU_REGION_SIZE_4GB),
30     },
31     {
32         /* 0x1000_0000 - 0x1007_FFFF */
33         .RBAR = ARM_MPU_RBAR(1, SCP_RAM_BASE),
34         .RASR = ARM_MPU_RASR(
35             0,
36             ARM_MPU_AP_PRIV,
37             0,
38             0,
39             1,
40             1,
41             0,
42             ARM_MPU_REGION_SIZE_512KB),
43     },
44     {
45         /* 0xA400_0000 - 0xA400_7FFF*/
46         .RBAR = ARM_MPU_RBAR(2, SCP_TRUSTED_RAM_BASE),
47         .RASR = ARM_MPU_RASR(
48             1,
49             ARM_MPU_AP_PRIV,
50             0,
51             1,
52             1,
53             1,
54             0,
55             ARM_MPU_REGION_SIZE_4KB),
56     },
57     {
58         /* 0xA600_0000 - 0xA600_7FFF */
59         .RBAR = ARM_MPU_RBAR(3, SCP_NONTRUSTED_RAM_BASE),
60         .RASR = ARM_MPU_RASR(
61             1,
62             ARM_MPU_AP_PRIV,
63             0,
64             1,
65             1,
66             1,
67             0,
68             ARM_MPU_REGION_SIZE_256B),
69     },
70 };
71 
72 const struct fwk_module_config config_armv7m_mpu = {
73     .data = &((struct mod_armv7m_mpu_config){
74         .region_count = FWK_ARRAY_SIZE(regions),
75         .regions = regions,
76     }),
77 };
78