1 /*
2  * Arm SCP/MCP Software
3  * Copyright (c) 2018-2021, Arm Limited and Contributors. All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  */
7 
8 #include "scp_sgi575_mmap.h"
9 #include "scp_sgi575_mmap_scp.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     { /* 0x0000_0000 - 0xFFFF_FFFF */
20         .RBAR = ARM_MPU_RBAR(0, 0x00000000),
21         .RASR = ARM_MPU_RASR(
22             1, ARM_MPU_AP_PRIV, 0, 1, 0, 1, 0, ARM_MPU_REGION_SIZE_4GB),
23     },
24     { /* 0x0080_0000 - 0x00FF_FFFF */
25         .RBAR = ARM_MPU_RBAR(1, SCP_RAM0_BASE),
26         .RASR = ARM_MPU_RASR(
27             0, ARM_MPU_AP_PRO, 0, 0, 1, 0, 0, ARM_MPU_REGION_SIZE_256KB),
28     },
29     { /* 0x2000_0000 - 0x20FF_FFFF */
30         .RBAR = ARM_MPU_RBAR(2, SCP_RAM1_BASE),
31         .RASR = ARM_MPU_RASR(
32             1, ARM_MPU_AP_PRIV, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_256KB),
33     },
34     { /* 0xA400_0000 - 0xA400_7FFF*/
35         .RBAR = ARM_MPU_RBAR(3, SCP_TRUSTED_RAM_BASE),
36         .RASR = ARM_MPU_RASR(
37             1, ARM_MPU_AP_PRIV, 0, 1, 1, 1, 0, ARM_MPU_REGION_SIZE_4KB),
38     },
39     { /* 0xA600_0000 - 0xA600_7FFF */
40         .RBAR = ARM_MPU_RBAR(4, SCP_NONTRUSTED_RAM_BASE),
41         .RASR = ARM_MPU_RASR(
42             1, ARM_MPU_AP_PRIV, 0, 1, 1, 1, 0, ARM_MPU_REGION_SIZE_256B),
43     },
44 };
45 
46 const struct fwk_module_config config_armv7m_mpu = {
47     .data = &((struct mod_armv7m_mpu_config){
48         .region_count = FWK_ARRAY_SIZE(regions),
49         .regions = regions,
50     }),
51 };
52