Messages in this thread | | | Date | Tue, 30 Mar 2004 18:14:31 +0200 | From | Willy Tarreau <> | Subject | Re: [ACPI] Re: Linux 2.4.26-rc1 (cmpxchg vs 80386 build) |
| |
> > That's not what I meant. I only meant to declare the cmpxchg() function. > > It's not a function. It is actual op-codes.
I know it's an opcode (I even wrote an emulator for it). But it's used as an inline function in linux. Check include/asm-i386/system.h.
> If you compile with '486 or higher, the C compiler is free to spew > out these op-codes any time it thinks it's a viable instruction > sequence. Since it basically replaces two other op-codes, gcc might > certainly use if for optimization.
Yes, only if you compile with -m486 or higher. When Linux is compiled for 386 target, the -march=i386 is correctly appended, which prevents gcc from using this instruction (as well as bswap and xadd BTW).
In what I described, a 386 target would be compiled with -march=i386, but the cmpxchg() FUNCTION will still reference the cmpxchg op-code in the __asm__ statement, and this is perfectly valid. In this case, only callers of the cmpxchg() FUNCTION will have a chance to use it. And at the moment, the only client seems to be ACPI.
Anyway, I think that basically we understand ourselves, and it's just a matter of words.
Cheers, Willy
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |