Re: [patch] spinlocks: remove 'volatile'

Linus Torvalds
2006-07-09T03:29:32Z

On Sun, 9 Jul 2006, Keith Owens wrote:
>
> This disagrees with the gcc (4.1.0) docs. info --index-search='Extended Asm' gcc
>
> The ordinary output operands must be write-only; GCC will assume
> that the values in these operands before the instruction are dead and
> need not be generated. Extended asm supports input-output or
> read-write operands. Use the constraint character `+' to indicate
> such an operand and list it with the output operands. You should
> only use read-write operands when the constraints for the operand (or
> the operand in which only some of the bits are to be changed) allow a
> register.

I'm fairly sure the docs are outdated (but may well be correct for older
gcc versions - as I already discussed elsewhere, that "+" thing was not
historically useful).

We've been using "+m" for some time in the kernel on several
architectures.

git aficionados can do

git grep -1 '"+m"' v2.6.17

to see the pre-existing usage of this (most of them go back a lot further,
although some of them are newer - the <asm-i386/bitops.h> ones were added
in January.

So if "+m" didn't work, we've been in trouble for at least the last year.

Linus