mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00:00
hw/arm_gic: Correctly restore nested irq priority
Upon activating an interrupt, set the corresponding priority bit in the APR/NSAPR registers without touching the currently set bits. In the event of nested interrupts, the GIC will then have the information it needs to restore the priority of the pre-empted interrupt once the higher priority interrupt finishes execution. Signed-off-by: François Baldassari <francois@pebble.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
8f28030903
commit
a859595791
1 changed files with 2 additions and 2 deletions
|
@ -254,9 +254,9 @@ static void gic_activate_irq(GICState *s, int cpu, int irq)
|
|||
int bitno = preemption_level % 32;
|
||||
|
||||
if (gic_has_groups(s) && GIC_TEST_GROUP(irq, (1 << cpu))) {
|
||||
s->nsapr[regno][cpu] &= (1 << bitno);
|
||||
s->nsapr[regno][cpu] |= (1 << bitno);
|
||||
} else {
|
||||
s->apr[regno][cpu] &= (1 << bitno);
|
||||
s->apr[regno][cpu] |= (1 << bitno);
|
||||
}
|
||||
|
||||
s->running_priority[cpu] = prio;
|
||||
|
|
Loading…
Reference in a new issue