Kernelite 0.1.0
Kernelite is a minimalist, educational operating system kernel built from scratch. The project aims to recreate core components of the Linux architecture to explore the fundamentals of operating system design and hardware-software interaction.
Loading...
Searching...
No Matches
Data Fields
mpidr_el1_t Union Reference

AArch64 Multiprocessor Affinity Register (MPIDR_EL1, read-only). More...

#include <utils.h>

Data Fields

uint64_t raw
 Raw 64-bit register value.
 
struct { 
 
   uint32_t   aff0: 8 
 [7:0] Aff0: Thread/core ID within a cluster. On most simple systems this is the linear core number. When MT==1, this identifies the thread within a core instead.
 
   uint32_t   aff1: 8 
 [15:8] Aff1: Cluster ID. Groups of cores sharing L2 cache or a cluster block typically share the same Aff1.
 
   uint32_t   aff2: 8 
 [23:16] Aff2: Higher-level cluster or socket ID.
 
   bool   mt: 1 
 [24] MT: Multithreading. When 1, Aff0 identifies a thread within a core rather than a core within a cluster.
 
   uint32_t   res0_29_25: 5 
 [29:25] Reserved.
 
   bool   uniprocessor: 1 
 [30] U: Uniprocessor flag. Set to 1 if the implementation is a single PE with no affinity structure.
 
   uint32_t   res1: 1 
 [31] RES1: Always reads as 1 at EL1.
 
   uint32_t   aff3: 8 
 [39:32] Aff3: Highest-level affinity (multi-socket or NUMA node). Zero on most embedded/server implementations.
 
   uint32_t   res0_63_40: 24 
 [63:40] RES1 / implementation defined. Mask before use.
 
};  
 

Detailed Description

AArch64 Multiprocessor Affinity Register (MPIDR_EL1, read-only).

Identifies the PE within a multiprocessor system. In a simple single-cluster system (e.g. QEMU virt), Aff1/Aff2/Aff3 are 0 and Aff0 is the core number.

Compare AffinityValue (Aff3.Aff2.Aff1.Aff0) against GICR_TYPER.AffinityValue to find the Redistributor frame belonging to this PE.

Note:


The documentation for this union was generated from the following file: