Re: fast_IRQ##_interrupt() Question(s)

Michael Hohmuth (
Tue, 14 May 1996 12:46:57 +0200

In article <>
Ingo Molnar <> writes:

> in arch/asm-i386/irq.h,

> B) and a related question. The slow interrupt handlers start with this code:
> SYMBOL_NAME_STR(IRQ) #nr "_interrupt:\n\t" \
> "pushl $-"#nr"-2\n\t" \
> why is "-nr-2" pushed to the stack? A few lines later we do:
> "pushl $" #nr "\n\t" \
> which is "nr" to the stack. my best guess is that this is some kind
> identification. But why twice?

Slow interrupt handlers must create a stack layout as specified in
<asm-i386/ptrace.h> (struct pt_regs) so that they can leave the kernel
via ret_from_sys_call (in arch/i386/kernel/entry.S). The first push
ist for the structure's orig_eax element.

I believe the value stored in orig_eax is never evaluated by any
interrupt handler. -nr-2 is probably used to be more in line with
what other kernel entrys leave in this field (system call number (>=
0) or -1 for faults).