From mboxrd@z Thu Jan 1 00:00:00 1970 From: mathieu.desnoyers@polymtl.ca (Mathieu Desnoyers) Date: Wed, 10 Mar 2010 16:15:06 -0500 Subject: [PATCH] ARM support single byte cmpxchg and cmpxchg_local on ARMv6 In-Reply-To: <20100310203051.GF12345@n2100.arm.linux.org.uk> References: <20100310162221.GA19201@localhost> <20100310173503.GC12345@n2100.arm.linux.org.uk> <20100310200235.GA29827@Krystal> <20100310203051.GF12345@n2100.arm.linux.org.uk> Message-ID: <20100310211506.GA5721@Krystal> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org * Russell King - ARM Linux (linux at arm.linux.org.uk) wrote: > On Wed, Mar 10, 2010 at 03:02:36PM -0500, Mathieu Desnoyers wrote: > > * Russell King - ARM Linux (linux at arm.linux.org.uk) wrote: > > > On Wed, Mar 10, 2010 at 06:22:21PM +0200, Imre Deak wrote: > > > > recently you've added support for __cmpxchg for ARMv6+. There the assumption > > > > is that ldrex[bh]/strex[bh] is only supported on platforms with the 32v6K > > > > extension. > > > > > > > > Currently the __xchg code uses these even without the extension. Should this > > > > be fixed? > > > > > > From what I remember, the half-word versions definitely aren't supported > > > on anything without V6K extensions. I think that the byte and word > > > versions are supported on V6 and up though. > > > > > > That'd make both __cmpxchg and __xchg slightly buggy, in different ways. > > > > > > What it does mean is that atomic operations on unsigned shorts using > > > ldrex/strex will only be possible on V6K and up. > > > > Does the following help (addressing the single byte cmpxchg part of the > > problem) ? > > First I'd need to look up what the real conditions are on the ldrex > instructions - which I'm not doing at the moment on account of being > down with the lurgy this week... No problem, the patch can wait. Take care, Mathieu -- Mathieu Desnoyers Operating System Efficiency Consultant EfficiOS Inc. http://www.efficios.com