Deleted Added
full compact
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 ---