mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-26 23:24:03 +02:00
ArmPkg: Replace CoreId and ClusterId with Mpidr in ARM_CORE_INFO struct
Remove the ClusterId and CoreId fields in the ARM_CORE_INFO structure in favor of a new Mpidr field. Update code in ArmPlatformPkg/PrePeiCore/MainMPCore and ArmPlatformPkg/PrePi/MainMPCore.c to use the new field and call new macros GET_MPIDR_AFF0 and GET_MPIDR_AFF1 instead. Signed-off-by: Rebecca Cran <rebecca@nuviainc.com> Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
This commit is contained in:
parent
ba79becd55
commit
103fa647d1
@ -14,8 +14,7 @@
|
|||||||
#define MPIDR_U_BIT_MASK 0x40000000
|
#define MPIDR_U_BIT_MASK 0x40000000
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
UINT32 ClusterId;
|
UINT64 Mpidr;
|
||||||
UINT32 CoreId;
|
|
||||||
|
|
||||||
// MP Core Mailbox
|
// MP Core Mailbox
|
||||||
EFI_PHYSICAL_ADDRESS MailboxSetAddress;
|
EFI_PHYSICAL_ADDRESS MailboxSetAddress;
|
||||||
|
@ -111,6 +111,10 @@ typedef enum {
|
|||||||
#define GET_CORE_ID(MpId) ((MpId) & ARM_CORE_MASK)
|
#define GET_CORE_ID(MpId) ((MpId) & ARM_CORE_MASK)
|
||||||
#define GET_CLUSTER_ID(MpId) (((MpId) & ARM_CLUSTER_MASK) >> 8)
|
#define GET_CLUSTER_ID(MpId) (((MpId) & ARM_CLUSTER_MASK) >> 8)
|
||||||
#define GET_MPID(ClusterId, CoreId) (((ClusterId) << 8) | (CoreId))
|
#define GET_MPID(ClusterId, CoreId) (((ClusterId) << 8) | (CoreId))
|
||||||
|
#define GET_MPIDR_AFF0(MpId) ((MpId) & ARM_CORE_AFF0)
|
||||||
|
#define GET_MPIDR_AFF1(MpId) (((MpId) & ARM_CORE_AFF1) >> 8)
|
||||||
|
#define GET_MPIDR_AFF2(MpId) (((MpId) & ARM_CORE_AFF2) >> 16)
|
||||||
|
#define GET_MPIDR_AFF3(MpId) (((MpId) & ARM_CORE_AFF3) >> 32)
|
||||||
#define PRIMARY_CORE_ID (PcdGet32(PcdArmPrimaryCore) & ARM_CORE_MASK)
|
#define PRIMARY_CORE_ID (PcdGet32(PcdArmPrimaryCore) & ARM_CORE_MASK)
|
||||||
|
|
||||||
/** Reads the CCSIDR register for the specified cache.
|
/** Reads the CCSIDR register for the specified cache.
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
ARM_CORE_INFO mArmPlatformNullMpCoreInfoTable[] = {
|
ARM_CORE_INFO mArmPlatformNullMpCoreInfoTable[] = {
|
||||||
{
|
{
|
||||||
// Cluster 0, Core 0
|
// Cluster 0, Core 0
|
||||||
0x0, 0x0,
|
0x0,
|
||||||
|
|
||||||
// MP Core MailBox Set/Get/Clear Addresses and Clear Value
|
// MP Core MailBox Set/Get/Clear Addresses and Clear Value
|
||||||
(EFI_PHYSICAL_ADDRESS)0,
|
(EFI_PHYSICAL_ADDRESS)0,
|
||||||
@ -24,7 +24,7 @@ ARM_CORE_INFO mArmPlatformNullMpCoreInfoTable[] = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
// Cluster 0, Core 1
|
// Cluster 0, Core 1
|
||||||
0x0, 0x1,
|
0x1,
|
||||||
|
|
||||||
// MP Core MailBox Set/Get/Clear Addresses and Clear Value
|
// MP Core MailBox Set/Get/Clear Addresses and Clear Value
|
||||||
(EFI_PHYSICAL_ADDRESS)0,
|
(EFI_PHYSICAL_ADDRESS)0,
|
||||||
@ -34,7 +34,7 @@ ARM_CORE_INFO mArmPlatformNullMpCoreInfoTable[] = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
// Cluster 0, Core 2
|
// Cluster 0, Core 2
|
||||||
0x0, 0x2,
|
0x2,
|
||||||
|
|
||||||
// MP Core MailBox Set/Get/Clear Addresses and Clear Value
|
// MP Core MailBox Set/Get/Clear Addresses and Clear Value
|
||||||
(EFI_PHYSICAL_ADDRESS)0,
|
(EFI_PHYSICAL_ADDRESS)0,
|
||||||
@ -44,7 +44,7 @@ ARM_CORE_INFO mArmPlatformNullMpCoreInfoTable[] = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
// Cluster 0, Core 3
|
// Cluster 0, Core 3
|
||||||
0x0, 0x3,
|
0x3,
|
||||||
|
|
||||||
// MP Core MailBox Set/Get/Clear Addresses and Clear Value
|
// MP Core MailBox Set/Get/Clear Addresses and Clear Value
|
||||||
(EFI_PHYSICAL_ADDRESS)0,
|
(EFI_PHYSICAL_ADDRESS)0,
|
||||||
|
@ -68,7 +68,9 @@ SecondaryMain (
|
|||||||
|
|
||||||
// Find the core in the ArmCoreTable
|
// Find the core in the ArmCoreTable
|
||||||
for (Index = 0; Index < ArmCoreCount; Index++) {
|
for (Index = 0; Index < ArmCoreCount; Index++) {
|
||||||
if ((ArmCoreInfoTable[Index].ClusterId == ClusterId) && (ArmCoreInfoTable[Index].CoreId == CoreId)) {
|
if ((GET_MPIDR_AFF1 (ArmCoreInfoTable[Index].Mpidr) == ClusterId) &&
|
||||||
|
(GET_MPIDR_AFF0 (ArmCoreInfoTable[Index].Mpidr) == CoreId))
|
||||||
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -67,7 +67,9 @@ SecondaryMain (
|
|||||||
|
|
||||||
// Find the core in the ArmCoreTable
|
// Find the core in the ArmCoreTable
|
||||||
for (Index = 0; Index < ArmCoreCount; Index++) {
|
for (Index = 0; Index < ArmCoreCount; Index++) {
|
||||||
if ((ArmCoreInfoTable[Index].ClusterId == ClusterId) && (ArmCoreInfoTable[Index].CoreId == CoreId)) {
|
if ((GET_MPIDR_AFF1 (ArmCoreInfoTable[Index].Mpidr) == ClusterId) &&
|
||||||
|
(GET_MPIDR_AFF0 (ArmCoreInfoTable[Index].Mpidr) == CoreId))
|
||||||
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user