From: Jack Lange Date: Fri, 21 May 2010 19:11:00 +0000 (-0500) Subject: bug fix for interrupt check X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=commitdiff_plain;h=0275941640fa24071fe2070cc09af175e58e695e;p=palacios-OLD.git bug fix for interrupt check --- diff --git a/palacios/src/devices/8259a.c b/palacios/src/devices/8259a.c index 7534007..fb0ab43 100644 --- a/palacios/src/devices/8259a.c +++ b/palacios/src/devices/8259a.c @@ -258,7 +258,7 @@ static int pic_get_intr_number(struct guest_info * info, void * private_data) { for (i = 0; i < 16; i++) { if (i <= 7) { - if (((state->master_irr & ~(state->master_imr)) >> i) == 0x01) { + if (((state->master_irr & ~(state->master_imr)) >> i) & 0x01) { //state->master_isr |= (0x1 << i); // reset the irr //state->master_irr &= ~(0x1 << i); @@ -267,7 +267,7 @@ static int pic_get_intr_number(struct guest_info * info, void * private_data) { break; } } else { - if (((state->slave_irr & ~(state->slave_imr)) >> (i - 8)) == 0x01) { + if (((state->slave_irr & ~(state->slave_imr)) >> (i - 8)) & 0x01) { //state->slave_isr |= (0x1 << (i - 8)); //state->slave_irr &= ~(0x1 << (i - 8)); PrintDebug("8259 PIC: IRQ: %d, slave_icw2: %x\n", i, state->slave_icw2); @@ -306,7 +306,7 @@ static int pic_begin_irq(struct guest_info * info, void * private_data, int irq) if (irq <= 7) { // This should always be true: See pic_get_intr_number - if (((state->master_irr & ~(state->master_imr)) >> irq) == 0x01) { + if (((state->master_irr & ~(state->master_imr)) >> irq) & 0x01) { state->master_isr |= (0x1 << irq); if (!(state->master_elcr & (0x1 << irq))) { @@ -315,7 +315,7 @@ static int pic_begin_irq(struct guest_info * info, void * private_data, int irq) } } else { // This should always be true: See pic_get_intr_number - if (((state->slave_irr & ~(state->slave_imr)) >> (irq - 8)) == 0x01) { + if (((state->slave_irr & ~(state->slave_imr)) >> (irq - 8)) & 0x01) { state->slave_isr |= (0x1 << (irq - 8)); if (!(state->slave_elcr & (0x1 << (irq - 8)))) {