atpic_vector.S (69578) | atpic_vector.S (69971) |
---|---|
1/* 2 * from: vector.s, 386BSD 0.1 unknown origin | 1/* 2 * from: vector.s, 386BSD 0.1 unknown origin |
3 * $FreeBSD: head/sys/amd64/isa/atpic_vector.S 69578 2000-12-04 21:15:14Z peter $ | 3 * $FreeBSD: head/sys/amd64/isa/atpic_vector.S 69971 2000-12-13 09:23:53Z jake $ |
4 */ 5 6/* 7 * modified for PC98 by Kakefuda 8 */ 9 10#ifdef PC98 11#define ICU_IMR_OFFSET 2 /* IO_ICU{1,2} + 2 */ --- 43 unchanged lines hidden (view full) --- 55 pushl %ds ; \ 56 pushl %es ; \ 57 pushl %fs ; \ 58 mov $KDSEL,%ax ; \ 59 mov %ax,%ds ; \ 60 mov %ax,%es ; \ 61 mov %ax,%fs ; \ 62 FAKE_MCOUNT((12+ACTUALLY_PUSHED)*4(%esp)) ; \ | 4 */ 5 6/* 7 * modified for PC98 by Kakefuda 8 */ 9 10#ifdef PC98 11#define ICU_IMR_OFFSET 2 /* IO_ICU{1,2} + 2 */ --- 43 unchanged lines hidden (view full) --- 55 pushl %ds ; \ 56 pushl %es ; \ 57 pushl %fs ; \ 58 mov $KDSEL,%ax ; \ 59 mov %ax,%ds ; \ 60 mov %ax,%es ; \ 61 mov %ax,%fs ; \ 62 FAKE_MCOUNT((12+ACTUALLY_PUSHED)*4(%esp)) ; \ |
63 incb _intr_nesting_level ; \ | 63 incb PCPU(INTR_NESTING_LEVEL) ; \ |
64 pushl _intr_unit + (irq_num) * 4 ; \ 65 call *_intr_handler + (irq_num) * 4 ; /* do the work ASAP */ \ 66 enable_icus ; /* (re)enable ASAP (helps edge trigger?) */ \ 67 addl $4,%esp ; \ 68 incl _cnt+V_INTR ; /* book-keeping can wait */ \ 69 movl _intr_countp + (irq_num) * 4,%eax ; \ 70 incl (%eax) ; \ 71 MEXITCOUNT ; \ --- 23 unchanged lines hidden (view full) --- 95 mov %ax,%es ; \ 96 mov %ax,%fs ; \ 97 maybe_extra_ipending ; \ 98 movb _imen + IRQ_BYTE(irq_num),%al ; \ 99 orb $IRQ_BIT(irq_num),%al ; \ 100 movb %al,_imen + IRQ_BYTE(irq_num) ; \ 101 outb %al,$icu+ICU_IMR_OFFSET ; \ 102 enable_icus ; \ | 64 pushl _intr_unit + (irq_num) * 4 ; \ 65 call *_intr_handler + (irq_num) * 4 ; /* do the work ASAP */ \ 66 enable_icus ; /* (re)enable ASAP (helps edge trigger?) */ \ 67 addl $4,%esp ; \ 68 incl _cnt+V_INTR ; /* book-keeping can wait */ \ 69 movl _intr_countp + (irq_num) * 4,%eax ; \ 70 incl (%eax) ; \ 71 MEXITCOUNT ; \ --- 23 unchanged lines hidden (view full) --- 95 mov %ax,%es ; \ 96 mov %ax,%fs ; \ 97 maybe_extra_ipending ; \ 98 movb _imen + IRQ_BYTE(irq_num),%al ; \ 99 orb $IRQ_BIT(irq_num),%al ; \ 100 movb %al,_imen + IRQ_BYTE(irq_num) ; \ 101 outb %al,$icu+ICU_IMR_OFFSET ; \ 102 enable_icus ; \ |
103 incb _intr_nesting_level ; \ | 103 incb PCPU(INTR_NESTING_LEVEL) ; \ |
104__CONCAT(Xresume,irq_num): ; \ 105 FAKE_MCOUNT(13*4(%esp)) ; /* XXX late to avoid double count */ \ 106 pushl $irq_num; /* pass the IRQ */ \ 107 sti ; \ 108 call _sched_ithd ; \ 109 addl $4, %esp ; /* discard the parameter */ \ 110 MEXITCOUNT ; \ 111 /* We could usually avoid the following jmp by inlining some of */ \ --- 41 unchanged lines hidden --- | 104__CONCAT(Xresume,irq_num): ; \ 105 FAKE_MCOUNT(13*4(%esp)) ; /* XXX late to avoid double count */ \ 106 pushl $irq_num; /* pass the IRQ */ \ 107 sti ; \ 108 call _sched_ithd ; \ 109 addl $4, %esp ; /* discard the parameter */ \ 110 MEXITCOUNT ; \ 111 /* We could usually avoid the following jmp by inlining some of */ \ --- 41 unchanged lines hidden --- |