On Fri, 26 Oct 2007, Alan Cox wrote: > > > non-volatile variables. But for asm statements this can be solved by > > adding memory to the list of clobbered registers -- this will prevent > > any reordering of manipulations of non-volatile variables and asm > > statements. > > IFF the processor doesn't reorder them in hardware, which on some > processors is visibly out of order when viewed from an I/O device or > another CPU. > > You can stop the compiler but not the CPU - and some processors will > certainly speculatively load across conditionals, reorder writes etc
Well, when we're talking inline asms used for locking, the whole point of using inline asm is exactly that you cannot do it with regular accesses, and have to add architecture-specific barriers. If the user gets that wrong, then it's a user problem, not a compiler issue. So that's not the problem. The problem is if the compiler then does other things wrong *despite* the inline asm being correct. Linus - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/