mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 07:13:54 -06:00
hw/intc/arm_gic: introduce a first-cpu-index property
This introduces a first-cpu-index property to the arm-gic, as some SOCs could have two separate GIC (ie: the zynqmp). Signed-off-by: Clément Chigot <chigot@adacore.com> Message-id: 20250526085523.809003-3-chigot@adacore.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> [PMM: slightly expanded comment documenting GIC property] Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
5dc8e4e892
commit
6559e7ad8e
4 changed files with 7 additions and 1 deletions
|
@ -59,7 +59,7 @@ static const uint8_t gic_id_gicv2[] = {
|
|||
static inline int gic_get_current_cpu(GICState *s)
|
||||
{
|
||||
if (!qtest_enabled() && s->num_cpu > 1) {
|
||||
return current_cpu->cpu_index;
|
||||
return current_cpu->cpu_index - s->first_cpu_index;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -350,6 +350,7 @@ static void arm_gic_common_linux_init(ARMLinuxBootIf *obj,
|
|||
|
||||
static const Property arm_gic_common_properties[] = {
|
||||
DEFINE_PROP_UINT32("num-cpu", GICState, num_cpu, 1),
|
||||
DEFINE_PROP_UINT32("first-cpu-index", GICState, first_cpu_index, 0),
|
||||
DEFINE_PROP_UINT32("num-irq", GICState, num_irq, 32),
|
||||
/* Revision can be 1 or 2 for GIC architecture specification
|
||||
* versions 1 or 2, or 0 to indicate the legacy 11MPCore GIC.
|
||||
|
|
|
@ -27,6 +27,9 @@
|
|||
* implement the security extensions
|
||||
* + QOM property "has-virtualization-extensions": set true if the GIC should
|
||||
* implement the virtualization extensions
|
||||
* + QOM property "first-cpu-index": index of the first cpu attached to the
|
||||
* GIC (default 0). The CPUs connected to the GIC are assumed to be
|
||||
* first-cpu-index, first-cpu-index + 1, ... first-cpu-index + num-cpu - 1.
|
||||
* + unnamed GPIO inputs: (where P is number of SPIs, i.e. num-irq - 32)
|
||||
* [0..P-1] SPIs
|
||||
* [P..P+31] PPIs for CPU 0
|
||||
|
|
|
@ -129,6 +129,8 @@ struct GICState {
|
|||
uint32_t num_lrs;
|
||||
|
||||
uint32_t num_cpu;
|
||||
/* cpu_index of the first CPU, attached to this GIC. */
|
||||
uint32_t first_cpu_index;
|
||||
|
||||
MemoryRegion iomem; /* Distributor */
|
||||
/* This is just so we can have an opaque pointer which identifies
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue