Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5163b4ac authored by Jean-Baptiste Queru's avatar Jean-Baptiste Queru Committed by Android Git Automerger
Browse files

am 3e425728: merge from open-source master

Merge commit '3e425728'

* commit '3e425728':
  ARM architecture reference manuals for ARMv6 & ARMv7 state that the use of 'swp' instruction is deprecated
  Fix uninitialized variable loop
parents 0fa1b7d3 3e425728
Loading
Loading
Loading
Loading
+11 −5
Original line number Diff line number Diff line
@@ -17,8 +17,7 @@
#include <machine/cpu-features.h>

/*
 * NOTE: these atomic operations are SMP safe on all architectures, 
 * except swap(), see below.
 * NOTE: these atomic operations are SMP safe on all architectures. 
 */

	.text
@@ -213,11 +212,18 @@ android_atomic_or:
 * output: r0 = old value
 */

/* FIXME: this is not safe on SMP systems 
 * a general way to do it is to use kernel_cmpxchg */

/* replaced swp instruction with ldrex/strex for ARMv6 & ARMv7 */
android_atomic_swap:
#if defined (_ARM_HAVE_LDREX_STREX)
1:  ldrex   r2, [r1]
    strex   r3, r0, [r1]
    teq     r3, #0
    bne     1b
    mov     r0, r2
    mcr     p15, 0, r0, c7, c10, 5 /* or, use dmb */
#else
    swp     r0, r0, [r1]
#endif
    bx      lr

/*