coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
memmap.c
Go to the documentation of this file.
1
/* SPDX-License-Identifier: GPL-2.0-only */
2
3
#include <
cbmem.h
>
4
#include <
cpu/x86/smm.h
>
5
#include <soc/iosf.h>
6
7
static
size_t
smm_region_size
(
void
)
8
{
9
u32
smm_size;
10
smm_size =
iosf_bunit_read
(
BUNIT_SMRRH
) & 0xFFFF;
11
smm_size -=
iosf_bunit_read
(
BUNIT_SMRRL
) & 0xFFFF;
12
smm_size = (smm_size + 1) << 20;
13
return
smm_size;
14
}
15
16
void
smm_region
(
uintptr_t
*start,
size_t
*size)
17
{
18
*start = (
iosf_bunit_read
(
BUNIT_SMRRL
) & 0xFFFF) << 20;
19
*size =
smm_region_size
();
20
}
21
22
void
*
cbmem_top_chipset
(
void
)
23
{
24
uintptr_t
smm_base;
25
size_t
smm_size;
26
27
/*
28
* +-------------------------+ Top of RAM (aligned)
29
* | System Management Mode |
30
* | code and data | Length: CONFIG_SMM_TSEG_SIZE
31
* | (TSEG) |
32
* +-------------------------+ SMM base (aligned)
33
* | |
34
* | Chipset Reserved Memory | Length: Multiple of CONFIG_SMM_TSEG_SIZE
35
* | |
36
* +-------------------------+ top_of_ram (aligned)
37
* | |
38
* | CBMEM Root |
39
* | |
40
* +-------------------------+
41
* | |
42
* | FSP Reserved Memory |
43
* | |
44
* +-------------------------+
45
* | |
46
* | Various CBMEM Entries |
47
* | |
48
* +-------------------------+ top_of_stack (8 byte aligned)
49
* | |
50
* | stack (CBMEM Entry) |
51
* | |
52
* +-------------------------+
53
*/
54
55
smm_region
(&smm_base, &smm_size);
56
return
(
void
*)smm_base;
57
}
BUNIT_SMRRL
#define BUNIT_SMRRL
Definition:
iosf.h:190
iosf_bunit_read
uint32_t iosf_bunit_read(int reg)
Definition:
iosf.c:39
BUNIT_SMRRH
#define BUNIT_SMRRH
Definition:
iosf.h:191
cbmem.h
smm.h
cbmem_top_chipset
void * cbmem_top_chipset(void)
Definition:
memmap.c:44
smm_region
void smm_region(uintptr_t *start, size_t *size)
Definition:
memmap.c:50
smm_region_size
static size_t smm_region_size(void)
Definition:
memmap.c:7
u32
uint32_t u32
Definition:
stdint.h:51
uintptr_t
unsigned long uintptr_t
Definition:
stdint.h:21
src
soc
intel
braswell
memmap.c
Generated by
1.9.1