hw/slavio_intctl.c: fix gcc warning about array bounds overrun
The Ubuntu 10.10 gcc for ARM complains that we might be overrunning the cpu_irqs[][] array: silence this by correcting the bounds on the loop. (In fact we would not have overrun the array because bit MAX_PILS in pil_pending and irl_out will always be 0.) Also add a comment about why the loop's lower bound is OK. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
parent
60f356e86d
commit
c84a88d8cb
@ -289,7 +289,12 @@ static void slavio_check_interrupts(SLAVIO_INTCTLState *s, int set_irqs)
|
|||||||
pil_pending |= (s->slaves[i].intreg_pending & CPU_SOFTIRQ_MASK) >> 16;
|
pil_pending |= (s->slaves[i].intreg_pending & CPU_SOFTIRQ_MASK) >> 16;
|
||||||
|
|
||||||
if (set_irqs) {
|
if (set_irqs) {
|
||||||
for (j = MAX_PILS; j > 0; j--) {
|
/* Since there is not really an interrupt 0 (and pil_pending
|
||||||
|
* and irl_out bit zero are thus always zero) there is no need
|
||||||
|
* to do anything with cpu_irqs[i][0] and it is OK not to do
|
||||||
|
* the j=0 iteration of this loop.
|
||||||
|
*/
|
||||||
|
for (j = MAX_PILS-1; j > 0; j--) {
|
||||||
if (pil_pending & (1 << j)) {
|
if (pil_pending & (1 << j)) {
|
||||||
if (!(s->slaves[i].irl_out & (1 << j))) {
|
if (!(s->slaves[i].irl_out & (1 << j))) {
|
||||||
qemu_irq_raise(s->cpu_irqs[i][j]);
|
qemu_irq_raise(s->cpu_irqs[i][j]);
|
||||||
|
Loading…
Reference in New Issue
Block a user