arch-arm: Define an Affinity type
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Change-Id: I42461de26886b1ba9e4db5b23a9fb970d3a1efd7 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/55705 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Maintainer: Andreas Sandberg <andreas.sandberg@arm.com> Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2010, 2012-2013, 2017-2018 ARM Limited
|
||||
* Copyright (c) 2010, 2012-2013, 2017-2018, 2022 Arm Limited
|
||||
* All rights reserved
|
||||
*
|
||||
* The license below extends only to copyright in the software and shall
|
||||
@@ -202,6 +202,13 @@ namespace ArmISA
|
||||
Bitfield<11, 8> ltcoproc;
|
||||
EndBitUnion(ExtMachInst)
|
||||
|
||||
BitUnion32(Affinity)
|
||||
Bitfield<31, 24> aff3;
|
||||
Bitfield<23, 16> aff2;
|
||||
Bitfield<15, 8> aff1;
|
||||
Bitfield<7, 0> aff0;
|
||||
EndBitUnion(Affinity)
|
||||
|
||||
// Shift types for ARM instructions
|
||||
enum ArmShiftType
|
||||
{
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2014, 2016-2020 ARM Limited
|
||||
* Copyright (c) 2009-2014, 2016-2020, 2022 Arm Limited
|
||||
* All rights reserved.
|
||||
*
|
||||
* The license below extends only to copyright in the software and shall
|
||||
@@ -199,13 +199,13 @@ getMPIDR(ArmSystem *arm_sys, ThreadContext *tc)
|
||||
static RegVal
|
||||
getAff2(ArmSystem *arm_sys, ThreadContext *tc)
|
||||
{
|
||||
return arm_sys->multiThread ? tc->socketId() << 16 : 0;
|
||||
return arm_sys->multiThread ? tc->socketId() : 0;
|
||||
}
|
||||
|
||||
static RegVal
|
||||
getAff1(ArmSystem *arm_sys, ThreadContext *tc)
|
||||
{
|
||||
return arm_sys->multiThread ? tc->cpuId() << 8 : tc->socketId() << 8;
|
||||
return arm_sys->multiThread ? tc->cpuId() : tc->socketId();
|
||||
}
|
||||
|
||||
static RegVal
|
||||
@@ -214,10 +214,14 @@ getAff0(ArmSystem *arm_sys, ThreadContext *tc)
|
||||
return arm_sys->multiThread ? tc->threadId() : tc->cpuId();
|
||||
}
|
||||
|
||||
RegVal
|
||||
Affinity
|
||||
getAffinity(ArmSystem *arm_sys, ThreadContext *tc)
|
||||
{
|
||||
return getAff2(arm_sys, tc) | getAff1(arm_sys, tc) | getAff0(arm_sys, tc);
|
||||
Affinity aff = 0;
|
||||
aff.aff0 = getAff0(arm_sys, tc);
|
||||
aff.aff1 = getAff1(arm_sys, tc);
|
||||
aff.aff2 = getAff2(arm_sys, tc);
|
||||
return aff;
|
||||
}
|
||||
|
||||
bool
|
||||
|
||||
@@ -223,7 +223,7 @@ RegVal readMPIDR(ArmSystem *arm_sys, ThreadContext *tc);
|
||||
RegVal getMPIDR(ArmSystem *arm_sys, ThreadContext *tc);
|
||||
|
||||
/** Retrieves MPIDR_EL1.{Aff2,Aff1,Aff0} affinity numbers */
|
||||
RegVal getAffinity(ArmSystem *arm_sys, ThreadContext *tc);
|
||||
Affinity getAffinity(ArmSystem *arm_sys, ThreadContext *tc);
|
||||
|
||||
static inline uint32_t
|
||||
mcrMrcIssBuild(bool isRead, uint32_t crm, IntRegIndex rt, uint32_t crn,
|
||||
|
||||
Reference in New Issue
Block a user