• Scott Wood's avatar
    powerpc/fsl-booke: Work around erratum A-006958 · d52459ca
    Scott Wood authored
    Erratum A-006598 says that 64-bit mftb is not atomic -- it's subject
    to a similar race condition as doing mftbu/mftbl on 32-bit.  The lower
    half of timebase is updated before the upper half; thus, we can share
    the workaround for a similar bug on Cell.  This workaround involves
    looping if the lower half of timebase is zero, thus avoiding the need
    for a scratch register (other than CR0).  This workaround must be
    avoided when the timebase is frozen, such as during the timebase sync
    code.
    
    This deals with kernel and vdso accesses, but other userspace accesses
    will of course need to be fixed elsewhere.
    Signed-off-by: default avatarScott Wood <scottwood@freescale.com>
    d52459ca
smp.c 10.3 KB