Re: [GIT PULL] x86/asm changes for v2.6.37

From: Linus Torvalds
Date: Thu Oct 21 2010 - 16:17:01 EST


On Thu, Oct 21, 2010 at 6:21 AM, Ingo Molnar <mingo@xxxxxxx> wrote:
>
> Jan Beulich (1):
>      i386: Make kernel_execve() suitable for stack unwinding
>
>        long __res;
> -       asm volatile ("push %%ebx ; movl %2,%%ebx ; int $0x80 ; pop %%ebx"
> +       asm volatile ("int $0x80"
>        : "=a" (__res)
> -       : "0" (__NR_execve), "ri" (filename), "c" (argv), "d" (envp) : "memory");
> +       : "0" (__NR_execve), "b" (filename), "c" (argv), "d" (envp) : "memory");
>        return __res;
>  }

I pulled this, but there's a reason we used to do it that way - gcc
has had bugs with inline asm changing %ebx due to some bad interaction
with using it as the GOT base register for position-independent code
or something.

So I hope those are all solved, and I guess we use -fPIC only for some
early boot code. But in case this is ever used in some environment
that is PIC (the vsyscall page?) we need to worry about gcc
interactions.

Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/