coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
mmu.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <symbols.h>
4 #include <soc/addressmap.h>
5 #include <soc/mmu.h>
6 #include <soc/sdram.h>
7 #include <arch/mmu.h>
8 
9 void soc_mmu_init(void)
10 {
11  const unsigned long devmem = MA_DEV | MA_S | MA_RW;
12  const unsigned long secure_mem = MA_MEM | MA_S | MA_RW;
13 
14  mmu_init();
15 
16  /*
17  * Need to use secure mem attribute, as firmware is running in ARM TZ
18  * region.
19  */
20  mmu_config_range((void *)_ttb, REGION_SIZE(ttb), secure_mem);
21  mmu_config_range((void *)_dram, sdram_size_mb() * MiB, secure_mem);
22  /* IO space has the MSB set and is divided into 4 sub-regions:
23  * * NCB
24  * * SLI
25  * * RSL
26  * * AP
27  */
29 
30  mmu_enable();
31 }
void mmu_enable(void)
Definition: mmu.c:293
#define MA_DEV
Definition: mmu.h:14
#define MA_MEM
Definition: mmu.h:13
#define MA_S
Definition: mmu.h:18
#define MA_RW
Definition: mmu.h:22
void mmu_config_range(u32 start_mb, u32 size_mb, enum dcache_policy policy)
Definition: mmu.c:221
void mmu_init(void)
Definition: mmu.c:242
#define MiB
Definition: helpers.h:76
size_t sdram_size_mb(void)
Definition: sdram.c:24
u8 _dram[]
#define REGION_SIZE(name)
Definition: symbols.h:10
#define IO_SPACE_SIZE
Definition: addressmap.h:15
#define IO_SPACE_START
Definition: addressmap.h:14
void soc_mmu_init(void)
Definition: mmu.c:9