We will need this for determining the GIC redistributor for GICv3. Signed-off-by: Ralf Ramsauer <[email protected]> --- inmates/lib/arm/include/asm/sysregs.h | 9 +++++++++ inmates/lib/arm64/include/asm/sysregs.h | 10 ++++++++++ 2 files changed, 19 insertions(+)
diff --git a/inmates/lib/arm/include/asm/sysregs.h b/inmates/lib/arm/include/asm/sysregs.h index 7c285923..81cc003f 100644 --- a/inmates/lib/arm/include/asm/sysregs.h +++ b/inmates/lib/arm/include/asm/sysregs.h @@ -45,6 +45,15 @@ #define CNTV_CTL_EL0 SYSREG_32(0, c14, c3, 1) #define CNTPCT_EL0 SYSREG_64(0, c14) +#define MPIDR_EL1 SYSREG_32(0, c0, c0, 5) + +#define MPIDR_LEVEL_BITS 8 +#define MPIDR_LEVEL_MASK ((1 << MPIDR_LEVEL_BITS) - 1) +#define MPIDR_LEVEL_SHIFT(level) (MPIDR_LEVEL_BITS * (level)) + +#define MPIDR_AFFINITY_LEVEL(mpidr, level) \ + (((mpidr) >> (MPIDR_LEVEL_BITS * (level))) & MPIDR_LEVEL_MASK) + #define SYSREG_32(...) 32, __VA_ARGS__ #define SYSREG_64(...) 64, __VA_ARGS__ diff --git a/inmates/lib/arm64/include/asm/sysregs.h b/inmates/lib/arm64/include/asm/sysregs.h index 0caea891..5661f540 100644 --- a/inmates/lib/arm64/include/asm/sysregs.h +++ b/inmates/lib/arm64/include/asm/sysregs.h @@ -44,6 +44,16 @@ #define __stringify_1(x...) #x #define __stringify(x...) __stringify_1(x) +#define MPIDR_LEVEL_BITS_SHIFT 3 +#define MPIDR_LEVEL_BITS (1 << MPIDR_LEVEL_BITS_SHIFT) +#define MPIDR_LEVEL_MASK ((1 << MPIDR_LEVEL_BITS) - 1) + +#define MPIDR_LEVEL_SHIFT(level) \ + (((1 << (level)) >> 1) << MPIDR_LEVEL_BITS_SHIFT) + +#define MPIDR_AFFINITY_LEVEL(mpidr, level) \ + (((mpidr) >> MPIDR_LEVEL_SHIFT(level)) & MPIDR_LEVEL_MASK) + #define SYSREG_32(op1, crn, crm, op2) s3_##op1 ##_##crn ##_##crm ##_##op2 #define arm_write_sysreg(sysreg, val) \ -- 2.17.0 -- You received this message because you are subscribed to the Google Groups "Jailhouse" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
