hw/intc/arm_gic: Fix group priority computation for group 1 IRQs
When determining the group priority of a group 1 IRQ, if C_CTRL.CBPR is 0, the non-secure BPR value is used. However, this value must be incremented by one so that it matches the secure world number of implemented priority bits (NS world has one less priority bit compared to the Secure world). Signed-off-by: Luc MICHEL <luc.michel@git.antfield.fr> Message-id: 20180119145756.7629-5-luc.michel@greensocs.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> [PMM: add assert, as the gicv3 code has] Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
71aa735b0a
commit
fc05a6f22a
|
@ -256,7 +256,8 @@ static int gic_get_group_priority(GICState *s, int cpu, int irq)
|
||||||
if (gic_has_groups(s) &&
|
if (gic_has_groups(s) &&
|
||||||
!(s->cpu_ctlr[cpu] & GICC_CTLR_CBPR) &&
|
!(s->cpu_ctlr[cpu] & GICC_CTLR_CBPR) &&
|
||||||
GIC_TEST_GROUP(irq, (1 << cpu))) {
|
GIC_TEST_GROUP(irq, (1 << cpu))) {
|
||||||
bpr = s->abpr[cpu];
|
bpr = s->abpr[cpu] - 1;
|
||||||
|
assert(bpr >= 0);
|
||||||
} else {
|
} else {
|
||||||
bpr = s->bpr[cpu];
|
bpr = s->bpr[cpu];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue