patch-2.0.15 linux/include/asm-i386/irq.h
Next file: linux/include/linux/sched.h
Previous file: linux/include/asm-alpha/system.h
Back to the patch index
Back to the overall index
- Lines: 136
- Date:
Fri Aug 23 08:18:12 1996
- Orig file:
v2.0.14/linux/include/asm-i386/irq.h
- Orig date:
Sun Mar 10 09:28:56 1996
diff -u --recursive --new-file v2.0.14/linux/include/asm-i386/irq.h linux/include/asm-i386/irq.h
@@ -81,7 +81,7 @@
* a bit - without them it seems that the harddisk driver won't work on
* all hardware. Arghh.
*/
-#define ACK_FIRST(mask) \
+#define ACK_FIRST(mask,nr) \
"inb $0x21,%al\n\t" \
"jmp 1f\n" \
"1:\tjmp 1f\n" \
@@ -90,10 +90,10 @@
"outb %al,$0x21\n\t" \
"jmp 1f\n" \
"1:\tjmp 1f\n" \
- "1:\tmovb $0x20,%al\n\t" \
+ "1:\tmovb $0x60+"#nr",%al\n\t" \
"outb %al,$0x20\n\t"
-#define ACK_SECOND(mask) \
+#define ACK_SECOND(mask,nr) \
"inb $0xA1,%al\n\t" \
"jmp 1f\n" \
"1:\tjmp 1f\n" \
@@ -102,11 +102,12 @@
"outb %al,$0xA1\n\t" \
"jmp 1f\n" \
"1:\tjmp 1f\n" \
- "1:\tmovb $0x20,%al\n\t" \
+ "1:\tmovb $0x60+"#nr",%al\n\t" \
"outb %al,$0xA0\n\t" \
"jmp 1f\n" \
"1:\tjmp 1f\n" \
- "1:\toutb %al,$0x20\n\t"
+ "1:\tmovb $0x62,%al\n\t" \
+ "outb %al,$0x20\n\t"
#define UNBLK_FIRST(mask) \
"inb $0x21,%al\n\t" \
@@ -207,7 +208,7 @@
"pushl $-"#nr"-2\n\t" \
SAVE_ALL \
ENTER_KERNEL \
- ACK_##chip(mask) \
+ ACK_##chip(mask,(nr&7)) \
"incl "SYMBOL_NAME_STR(intr_count)"\n\t"\
"sti\n\t" \
"movl %esp,%ebx\n\t" \
@@ -224,7 +225,7 @@
SYMBOL_NAME_STR(fast_IRQ) #nr "_interrupt:\n\t" \
SAVE_MOST \
ENTER_KERNEL \
- ACK_##chip(mask) \
+ ACK_##chip(mask,(nr&7)) \
"incl "SYMBOL_NAME_STR(intr_count)"\n\t" \
"pushl $" #nr "\n\t" \
"call "SYMBOL_NAME_STR(do_fast_IRQ)"\n\t" \
@@ -238,7 +239,7 @@
SYMBOL_NAME_STR(bad_IRQ) #nr "_interrupt:\n\t" \
SAVE_MOST \
ENTER_KERNEL \
- ACK_##chip(mask) \
+ ACK_##chip(mask,(nr&7)) \
LEAVE_KERNEL \
RESTORE_MOST);
@@ -255,7 +256,7 @@
"pushl $-"#nr"-2\n\t" \
SAVE_ALL \
ENTER_KERNEL \
- ACK_##chip(mask) \
+ ACK_##chip(mask,(nr&7)) \
"incl "SYMBOL_NAME_STR(intr_count)"\n\t"\
"movl %esp,%ebx\n\t" \
"pushl %ebx\n\t" \
@@ -283,7 +284,7 @@
"pushl $-"#nr"-2\n\t" \
SAVE_ALL \
ENTER_KERNEL \
- ACK_##chip(mask) \
+ ACK_##chip(mask,(nr&7)) \
"incl "SYMBOL_NAME_STR(intr_count)"\n\t"\
"sti\n\t" \
"movl %esp,%ebx\n\t" \
@@ -301,7 +302,7 @@
"\n"__ALIGN_STR"\n" \
SYMBOL_NAME_STR(fast_IRQ) #nr "_interrupt:\n\t" \
SAVE_MOST \
- ACK_##chip(mask) \
+ ACK_##chip(mask,(nr&7)) \
SMP_PROF_IPI_CNT \
"pushl $" #nr "\n\t" \
"call "SYMBOL_NAME_STR(do_fast_IRQ)"\n\t" \
@@ -312,7 +313,7 @@
"\n"__ALIGN_STR"\n" \
SYMBOL_NAME_STR(bad_IRQ) #nr "_interrupt:\n\t" \
SAVE_MOST \
- ACK_##chip(mask) \
+ ACK_##chip(mask,(nr&7)) \
RESTORE_MOST);
#define BUILD_RESCHEDIRQ(nr) \
@@ -345,7 +346,7 @@
SYMBOL_NAME_STR(IRQ) #nr "_interrupt:\n\t" \
"pushl $-"#nr"-2\n\t" \
SAVE_ALL \
- ACK_##chip(mask) \
+ ACK_##chip(mask,(nr&7)) \
"incl "SYMBOL_NAME_STR(intr_count)"\n\t"\
"sti\n\t" \
"movl %esp,%ebx\n\t" \
@@ -360,7 +361,7 @@
"\n"__ALIGN_STR"\n" \
SYMBOL_NAME_STR(fast_IRQ) #nr "_interrupt:\n\t" \
SAVE_MOST \
- ACK_##chip(mask) \
+ ACK_##chip(mask,(nr&7)) \
"incl "SYMBOL_NAME_STR(intr_count)"\n\t" \
"pushl $" #nr "\n\t" \
"call "SYMBOL_NAME_STR(do_fast_IRQ)"\n\t" \
@@ -372,7 +373,7 @@
"\n"__ALIGN_STR"\n" \
SYMBOL_NAME_STR(bad_IRQ) #nr "_interrupt:\n\t" \
SAVE_MOST \
- ACK_##chip(mask) \
+ ACK_##chip(mask,(nr&7)) \
RESTORE_MOST);
#define BUILD_TIMER_IRQ(chip,nr,mask) \
@@ -386,7 +387,7 @@
SYMBOL_NAME_STR(IRQ) #nr "_interrupt:\n\t" \
"pushl $-"#nr"-2\n\t" \
SAVE_ALL \
- ACK_##chip(mask) \
+ ACK_##chip(mask,(nr&7)) \
"incl "SYMBOL_NAME_STR(intr_count)"\n\t"\
"movl %esp,%ebx\n\t" \
"pushl %ebx\n\t" \
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov