Messages in this thread | | | From | Denys Vlasenko <> | Date | Thu, 26 Feb 2015 16:39:54 +0100 | Subject | lguest: bug in lg_irq_enable? |
| |
ENTRY(lg_irq_enable) /* * The reverse of irq_disable, this sets lguest_data.irq_enabled to * X86_EFLAGS_IF (ie. "Interrupts enabled"). */ movl $X86_EFLAGS_IF, lguest_data+LGUEST_DATA_irq_enabled /* * But now we need to check if the Host wants to know: there might have * been interrupts waiting to be delivered, in which case it will have * set lguest_data.irq_pending to X86_EFLAGS_IF. If it's not zero, we * jump to send_interrupts, otherwise we're done. */ testl $0, lguest_data+LGUEST_DATA_irq_pending ^^^^^^^^^^^^^^^^^?????????? jnz send_interrupts /* * One cool thing about x86 is that you can do many things without using * a register. In this case, the normal path hasn't needed to save or * restore any registers at all! */ ret send_interrupts:
TEST with zero will always set ZF. Thus, "jnz send_interrupts" never jumps.
-- vda
| |