I've got, as part of a driver, the following code:
Code: Select all
static void fdc_wait_for_irq()
{
while (instance->irq == FALSE)
{
// wait
}
}
void irq6_handler(uint8_t interrupt, uint32_t data)
{
if (interrupt != 0x26)
{
return;
}
((instance_data*) data)->irq = TRUE;
}
Code: Select all
00000513 <fdc_wait_for_irq>:
513: 55 push %ebp
514: 89 e5 mov %esp,%ebp
516: e8 fc ff ff ff call 517 <fdc_wait_for_irq+0x4>
51b: 81 c2 02 00 00 00 add $0x2,%edx
521: 90 nop
522: 8b 82 00 00 00 00 mov 0x0(%edx),%eax
528: 8b 40 10 mov 0x10(%eax),%eax
52b: 85 c0 test %eax,%eax
52d: 74 f3 je 522 <fdc_wait_for_irq+0xf>
52f: 90 nop
530: 5d pop %ebp
531: c3 ret
Code: Select all
00000582 <irq6_handler>:
582: 55 push %ebp
583: 89 e5 mov %esp,%ebp
585: 83 ec 04 sub $0x4,%esp
588: e8 fc ff ff ff call 589 <irq6_handler+0x7>
58d: 05 01 00 00 00 add $0x1,%eax
592: 8b 45 08 mov 0x8(%ebp),%eax
595: 88 45 fc mov %al,-0x4(%ebp)
598: 80 7d fc 26 cmpb $0x26,-0x4(%ebp)
59c: 75 0c jne 5aa <irq6_handler+0x28>
59e: 8b 45 0c mov 0xc(%ebp),%eax
5a1: c7 40 10 01 00 00 00 movl $0x1,0x10(%eax)
5a8: eb 01 jmp 5ab <irq6_handler+0x29>
5aa: 90 nop
5ab: c9 leave
5ac: c3 ret
Thanks,
onlyonemac