Re: BUILD_SMP_TIMER_INTERRUPT not needed movl

Richard B. Johnson (root@chaos.analogic.com)
Tue, 11 Aug 1998 13:44:15 -0400 (EDT)


On Tue, 11 Aug 1998, Andrea Arcangeli wrote:

> >From arch/i386/kernel/irq.h
>
> #define BUILD_SMP_TIMER_INTERRUPT(x) \
> asmlinkage void x(struct pt_regs * regs); \
> __asm__( \
> "\n"__ALIGN_STR"\n" \
> SYMBOL_NAME_STR(x) ":\n\t" \
> "pushl $-1\n\t" \
> SAVE_ALL \
> "movl %esp,%eax\n\t" \
> ^^^^^^^^^^^^^^^^^^^^^^
> "pushl %eax\n\t" \
> "call "SYMBOL_NAME_STR(smp_##x)"\n\t" \
> "addl $4,%esp\n\t" \
> "jmp ret_from_intr\n");
>
> I don' t think that the underlined line is needed. Why not to push %esp
> directly?
>

Is the stack-pointer value pushed, the value before the push or
the value after? The '386 pushes the value of SP after it is
decremented by the PUSH operation, the '486 and higher pushes the
value that existed before. If you want to maintain '386 operation,
you need to capture the SP as the code does.

Cheers,
Dick Johnson
***** FILE SYSTEM WAS MODIFIED *****
Penguin : Linux version 2.1.115 on an i586 machine (66.15 BogoMips).
Warning : It's hard to remain at the trailing edge of technology.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html