Skip to content

Split GIC in SMP examples (in #127) #135

@jonathanpallant

Description

@jonathanpallant

Rather than:

static GLOBAL_GIC: Mutex<RefCell<Option<arm_gic::gicv3::GicV3<'static>>>> = Mutex::new(RefCell::new(None));

We should have

static GLOBAL_GIC_DIST: Mutex<RefCell<Option<arm_gic::gicv3::GicDistributor<'static>>>> = Mutex::new(RefCell::new(None));

pub unsafe fn get_redist() -> arm_gic::gicv3::GicRedistributor<'static> {
   // Read MPIDR register, and return the GIC Redistributor object for that particular core
}

That is, we have one global, shared, Mutex-projected object for the Distributor, and local per-core objects for the Redistributor.

See https://documentation-service.arm.com/static/6273be2d7e121f01fd22f145:

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions