target-arm: Add GICv3CPUState in CPUARMState struct
Add gicv3state void pointer to CPUARMState struct to store GICv3CPUState. In case of usecase like CPU reset, we need to reset GICv3CPUState of the CPU. In such scenario, this pointer becomes handy. Signed-off-by: Vijaya Kumar K <Vijaya.Kumar@cavium.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Eric Auger <eric.auger@redhat.com> Message-id: 1487850673-26455-5-git-send-email-vijay.kilari@gmail.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
367b9f527b
commit
d3a3e52962
@ -252,6 +252,8 @@ static void arm_gicv3_common_realize(DeviceState *dev, Error **errp)
|
|||||||
|
|
||||||
s->cpu[i].cpu = cpu;
|
s->cpu[i].cpu = cpu;
|
||||||
s->cpu[i].gic = s;
|
s->cpu[i].gic = s;
|
||||||
|
/* Store GICv3CPUState in CPUARMState gicv3state pointer */
|
||||||
|
gicv3_set_gicv3state(cpu, &s->cpu[i]);
|
||||||
|
|
||||||
/* Pre-construct the GICR_TYPER:
|
/* Pre-construct the GICR_TYPER:
|
||||||
* For our implementation:
|
* For our implementation:
|
||||||
|
@ -19,6 +19,14 @@
|
|||||||
#include "gicv3_internal.h"
|
#include "gicv3_internal.h"
|
||||||
#include "cpu.h"
|
#include "cpu.h"
|
||||||
|
|
||||||
|
void gicv3_set_gicv3state(CPUState *cpu, GICv3CPUState *s)
|
||||||
|
{
|
||||||
|
ARMCPU *arm_cpu = ARM_CPU(cpu);
|
||||||
|
CPUARMState *env = &arm_cpu->env;
|
||||||
|
|
||||||
|
env->gicv3state = (void *)s;
|
||||||
|
};
|
||||||
|
|
||||||
static GICv3CPUState *icc_cs_from_env(CPUARMState *env)
|
static GICv3CPUState *icc_cs_from_env(CPUARMState *env)
|
||||||
{
|
{
|
||||||
/* Given the CPU, find the right GICv3CPUState struct.
|
/* Given the CPU, find the right GICv3CPUState struct.
|
||||||
|
@ -408,4 +408,6 @@ static inline void gicv3_cache_all_target_cpustates(GICv3State *s)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void gicv3_set_gicv3state(CPUState *cpu, GICv3CPUState *s);
|
||||||
|
|
||||||
#endif /* QEMU_ARM_GICV3_INTERNAL_H */
|
#endif /* QEMU_ARM_GICV3_INTERNAL_H */
|
||||||
|
@ -521,6 +521,8 @@ typedef struct CPUARMState {
|
|||||||
|
|
||||||
void *nvic;
|
void *nvic;
|
||||||
const struct arm_boot_info *boot_info;
|
const struct arm_boot_info *boot_info;
|
||||||
|
/* Store GICv3CPUState to access from this struct */
|
||||||
|
void *gicv3state;
|
||||||
} CPUARMState;
|
} CPUARMState;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user