diff options
Diffstat (limited to 'arch/arm/lib/bitops.h')
| -rw-r--r-- | arch/arm/lib/bitops.h | 10 | 
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/arm/lib/bitops.h b/arch/arm/lib/bitops.h index d6408d1ee54..9f12ed1eea8 100644 --- a/arch/arm/lib/bitops.h +++ b/arch/arm/lib/bitops.h @@ -10,6 +10,11 @@ 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 && defined(CONFIG_SMP) +	.arch_extension	mp +	ALT_SMP(W(pldw)	[r1]) +	ALT_UP(W(nop)) +#endif  	mov	r3, r2, lsl r3  1:	ldrex	r2, [r1]  	\instr	r2, r2, r3 @@ -32,6 +37,11 @@ UNWIND(	.fnstart	)  	add	r1, r1, r0, lsl #2	@ Get word offset  	mov	r3, r2, lsl r3		@ create mask  	smp_dmb +#if __LINUX_ARM_ARCH__ >= 7 && defined(CONFIG_SMP) +	.arch_extension	mp +	ALT_SMP(W(pldw)	[r1]) +	ALT_UP(W(nop)) +#endif  1:	ldrex	r2, [r1]  	ands	r0, r2, r3		@ save old value of bit  	\instr	r2, r2, r3		@ toggle bit  | 
