lkml.org 
[lkml]   [2009]   [Sep]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: Linux 2.6.32-rc1
    On Wed, 30 Sep 2009 17:27:05 +0200
    Eric Dumazet <eric.dumazet@gmail.com> 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


    \
     
     \ /
      Last update: 2009-09-30 17:33    [W:0.050 / U:29.568 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site