2 ; Process a PXE interrupt
20 mov di,pxenv_undi_isr_buf
22 mov cx,pxenv_undi_isr_buf.size/2
27 mov byte [pxenv_undi_isr_buf.funcflag],PXENV_UNDI_ISR_IN_START
32 cmp word [pxenv_undi_isr_buf.funcflag],PXENV_UNDI_ISR_OUT_OURS
35 ; Its ours - set the flag for the return to PM.
36 ; We need to EOI this ourselves, so that the
37 ; leftover BC doesn't get control.
38 mov byte [pxe_irq_pending],1
40 cmp byte [pxe_irq_vector], 8
41 mov al,0x20 ; Non-specific EOI
44 out 0xA0, al ; Secondary PIC
46 out 0x20,al ; Primary PIC
66 ; Emulate a PXE interrupt from the polling thread
79 mov di,pxenv_undi_isr_buf
81 mov cx,pxenv_undi_isr_buf.size/2
86 mov byte [pxenv_undi_isr_buf.funcflag],PXENV_UNDI_ISR_IN_START
91 cmp word [pxenv_undi_isr_buf.funcflag],PXENV_UNDI_ISR_OUT_OURS
94 ; Its ours - set the flag for the return to PM.
95 ; We need to EOI this ourselves, so that the
96 ; leftover BC doesn't get control.
97 mov byte [pxe_irq_pending],1
113 .bufferlength: resw 1
119 .size equ $-pxenv_undi_isr_buf
121 global pxe_irq_vector
122 pxe_irq_vector resb 1 ; PXE IRQ vector
123 global pxe_irq_pending
124 pxe_irq_pending resb 1 ; IRQ pending flag