coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
mpidr.h
Go to the documentation of this file.
1
/* SPDX-License-Identifier: GPL-2.0-only */
2
3
#ifndef __ARCH_MPIDR_H__
4
#define __ARCH_MPIDR_H__
5
6
#include <
stdint.h
>
7
#include <
arch/lib_helpers.h
>
8
9
enum
{
10
MPIDR_RES1_SHIFT
= 31,
11
MPIDR_U_SHIFT
= 30,
12
MPIDR_MT_SHIFT
= 24,
13
14
MPIDR_AFFINITY_0_SHIFT
= 0,
15
MPIDR_AFFINITY_1_SHIFT
= 8,
16
MPIDR_AFFINITY_2_SHIFT
= 16,
17
MPIDR_AFFINITY_3_SHIFT
= 32,
18
MPIDR_AFFINITY_MASK
= 0xff,
19
};
20
21
static
inline
uint64_t
mpidr_mask
(
uint8_t
aff3,
uint8_t
aff2,
22
uint8_t
aff1,
uint8_t
aff0)
23
{
24
uint64_t
mpidr = 0;
25
26
mpidr |= (
uint64_t
)aff3 <<
MPIDR_AFFINITY_3_SHIFT
;
27
mpidr |= (
uint64_t
)aff2 <<
MPIDR_AFFINITY_2_SHIFT
;
28
mpidr |= (
uint64_t
)aff1 <<
MPIDR_AFFINITY_1_SHIFT
;
29
mpidr |= (
uint64_t
)aff0 <<
MPIDR_AFFINITY_0_SHIFT
;
30
31
return
mpidr;
32
}
33
34
static
inline
uint64_t
read_mpidr
(
void
)
35
{
36
return
raw_read_mpidr_el1();
37
}
38
39
static
inline
uint64_t
read_affinity_mpidr
(
void
)
40
{
41
uint64_t
affinity_mask;
42
affinity_mask =
mpidr_mask
(
MPIDR_AFFINITY_MASK
,
MPIDR_AFFINITY_MASK
,
43
MPIDR_AFFINITY_MASK
,
MPIDR_AFFINITY_MASK
);
44
return
read_mpidr
() & affinity_mask;
45
}
46
47
#endif
/* __ARCH_MPIDR_H__ */
lib_helpers.h
read_affinity_mpidr
static uint64_t read_affinity_mpidr(void)
Definition:
mpidr.h:39
MPIDR_AFFINITY_2_SHIFT
@ MPIDR_AFFINITY_2_SHIFT
Definition:
mpidr.h:16
MPIDR_AFFINITY_0_SHIFT
@ MPIDR_AFFINITY_0_SHIFT
Definition:
mpidr.h:14
MPIDR_AFFINITY_MASK
@ MPIDR_AFFINITY_MASK
Definition:
mpidr.h:18
MPIDR_U_SHIFT
@ MPIDR_U_SHIFT
Definition:
mpidr.h:11
MPIDR_RES1_SHIFT
@ MPIDR_RES1_SHIFT
Definition:
mpidr.h:10
MPIDR_AFFINITY_3_SHIFT
@ MPIDR_AFFINITY_3_SHIFT
Definition:
mpidr.h:17
MPIDR_AFFINITY_1_SHIFT
@ MPIDR_AFFINITY_1_SHIFT
Definition:
mpidr.h:15
MPIDR_MT_SHIFT
@ MPIDR_MT_SHIFT
Definition:
mpidr.h:12
read_mpidr
static uint64_t read_mpidr(void)
Definition:
mpidr.h:34
mpidr_mask
static uint64_t mpidr_mask(uint8_t aff3, uint8_t aff2, uint8_t aff1, uint8_t aff0)
Definition:
mpidr.h:21
stdint.h
uint64_t
unsigned long long uint64_t
Definition:
stdint.h:17
uint8_t
unsigned char uint8_t
Definition:
stdint.h:8
src
arch
arm64
include
arch
mpidr.h
Generated by
1.9.1