[lkml]   [2007]   [Aug]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [PATCH] make atomic_t volatile on all architectures
    On Sun, 2007-08-12 at 07:53 +0200, Segher Boessenkool wrote:
    > > Yes, though I would use "=m" on the output list and "m" on the input
    > > list. The reason is that I've seen gcc fall on its face with an ICE on
    > > s390 due to "+m". The explanation I've got from our compiler people was
    > > quite esoteric, as far as I remember gcc splits "+m" to an input
    > > operand
    > > and an output operand. Now it can happen that the compiler chooses two
    > > different registers to access the same memory location. "+m" requires
    > > that the two memory references are identical which causes the ICE if
    > > they are not.
    > The problem is very nicely described here, last paragraph:
    > <>
    > It's not a problem anymore in (very) recent GCC, although
    > that of course won't help you in the kernel (yet).

    So you are saying that gcc 3.x still has this problem ?

    > > I do not know if the current compilers still do this. Has
    > > anyone else seen this happen ?
    > In recent GCC, it's actually documented:
    > 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.
    > Note that last line.

    I see, thanks for the info.

    blue skies,

    "Reality continues to ruin my life." - Calvin.

    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2007-08-12 11:51    [W:0.023 / U:3.676 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site