[GIT PULL] prefetch support for 3.13

Will Deacon will.deacon at arm.com
Mon Nov 11 06:25:54 EST 2013


On Mon, Nov 11, 2013 at 09:08:10AM +0000, Uwe Kleine-König wrote:
> Hello Will,
> 
> On Wed, Oct 09, 2013 at 06:13:13PM +0100, Will Deacon wrote:
> > The following changes since commit 15c03dd4859ab16f9212238f29dd315654aa94f6:
> > 
> >   Linux 3.12-rc3 (2013-09-29 15:02:38 -0700)
> > 
> > are available in the git repository at:
> > 
> >   git://git.kernel.org/pub/scm/linux/kernel/git/will/linux.git for-rmk/prefetch
> > 
> > for you to fetch changes up to d779c07dd72098a7416d907494f958213b7726f3:
> > 
> >   ARM: bitops: prefetch the destination word for write prior to strex (2013-09-30 16:42:56 +0100)
> > 
> > ----------------------------------------------------------------
> > Will Deacon (6):
> >       ARM: prefetch: remove redundant "cc" clobber
> >       ARM: smp_on_up: move inline asm ALT_SMP patching macro out of spinlock.h
> >       ARM: prefetch: add support for prefetchw using pldw on SMP ARMv7+ CPUs
> >       ARM: locks: prefetch the destination word for write prior to strex
> >       ARM: atomics: prefetch the destination word for write prior to strex
> >       ARM: bitops: prefetch the destination word for write prior to strex
> Hello Will,
> 
> it seems the last patch breaks on efm32:
> 
> arch/arm/lib/changebit.S: Assembler messages:
> arch/arm/lib/changebit.S:15: Error: architectural extension `mp' is not allowed for the current base architecture

I see gas is being as helpful as ever. Something like the (untested) patch
below should fix the issue.

Will

--->8

diff --git a/arch/arm/lib/bitops.h b/arch/arm/lib/bitops.h
index e0c68d5bb7dc..52886b89706c 100644
--- a/arch/arm/lib/bitops.h
+++ b/arch/arm/lib/bitops.h
@@ -10,7 +10,7 @@ UNWIND(       .fnstart        )
        and     r3, r0, #31             @ Get bit offset
        mov     r0, r0, lsr #5
        add     r1, r1, r0, lsl #2      @ Get word offset
-#if __LINUX_ARM_ARCH__ >= 7
+#if __LINUX_ARM_ARCH__ >= 7 && defined(CONFIG_SMP)
        .arch_extension mp
        ALT_SMP(W(pldw) [r1])
        ALT_UP(W(nop))



More information about the linux-arm-kernel mailing list