Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754721AbZI3Pam (ORCPT ); Wed, 30 Sep 2009 11:30:42 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754660AbZI3Pam (ORCPT ); Wed, 30 Sep 2009 11:30:42 -0400 Received: from casper.infradead.org ([85.118.1.10]:38729 "EHLO casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754197AbZI3Pal (ORCPT ); Wed, 30 Sep 2009 11:30:41 -0400 Date: Wed, 30 Sep 2009 17:31:02 +0200 From: Arjan van de Ven To: Eric Dumazet Cc: Linus Torvalds , Martin Schwidefsky , Thomas Gleixner , John Stultz , Linux Kernel Mailing List , Peter Zijlstra , Ingo Molnar Subject: Re: Linux 2.6.32-rc1 Message-ID: <20090930173102.2d54534c@infradead.org> In-Reply-To: <4AC378C9.5050507@gmail.com> References: <4AC060AE.1090401@gmail.com> <20090928191506.40b61793@mschwide.boeblingen.de.ibm.com> <4AC10365.7090802@gmail.com> <4AC2712C.4080901@gmail.com> <20090929232248.735bf4df@infradead.org> <20090930170754.0886ff2e@infradead.org> <4AC378C9.5050507@gmail.com> Organization: Intel X-Mailer: Claws Mail 3.7.2 (GTK+ 2.16.6; i586-redhat-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-SRS-Rewrite: SMTP reverse-path rewritten from by casper.infradead.org See http://www.infradead.org/rpr.html Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1322 Lines: 60 On Wed, 30 Sep 2009 17:27:05 +0200 Eric Dumazet wrote: > > > + pop %edi > Why do you pop flags in edi, to later re-push them ? > > > + cli because here I disable interrupts (basically this is local_irq_save() ) > > > > + xchg (%esi), %ebx > > + xchg 4(%esi), %ecx > How this sequence is guaranteed to be atomic with other cpus ? it is not. this is the 486 implementation which is !SMP (just like the current cmpxchg64() fallback) > > If it is a !SMP implementation, then you could replace xchg by mov > instructions. that is not equivalent. I need to also store the old values and return them.... > > So I suggest : > > > ENTRY(cmpxchg8b_emu) > CFI_STARTPROC > > /* disable interrupts */ > pushf > cli > > cmpl %eax,(%esi) > jne 1f > cmpl %edx,4(%esi) > jne 2f > > mov %ebx,(%esi) > mov %ecx,4(%esi) this is not equivalent since you don't return the "prev" value. -- Arjan van de Ven Intel Open Source Technology Centre For development, discussion and tips for power savings, visit http://www.lesswatts.org -- 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/