diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-07-01 10:48:28 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-07-04 13:17:19 +0200 |
commit | fbda4a8834c5c88c138466fb94c4004be7d72d66 (patch) | |
tree | da13bb222edf9c59b3923357e23fc6545c255f8a /cpukit/score/cpu/arm/arm_exc_interrupt.S | |
parent | arm: Use local label in _CPU_Context_restore() (diff) | |
download | rtems-fbda4a8834c5c88c138466fb94c4004be7d72d66.tar.bz2 |
score: PR2183: Fix context switch on SMP
Fix context switch on SMP for ARM, PowerPC and SPARC.
Atomically test and set the is executing indicator of the heir context
to ensure that at most one processor uses the heir context. Break the
busy wait loop also due to heir updates.
Diffstat (limited to 'cpukit/score/cpu/arm/arm_exc_interrupt.S')
-rw-r--r-- | cpukit/score/cpu/arm/arm_exc_interrupt.S | 12 |
1 files changed, 0 insertions, 12 deletions
diff --git a/cpukit/score/cpu/arm/arm_exc_interrupt.S b/cpukit/score/cpu/arm/arm_exc_interrupt.S index c80a404615..e8026c869b 100644 --- a/cpukit/score/cpu/arm/arm_exc_interrupt.S +++ b/cpukit/score/cpu/arm/arm_exc_interrupt.S @@ -31,7 +31,6 @@ #endif #include <rtems/asm.h> -#include <rtems/score/percpu.h> #ifdef ARM_MULTILIB_ARCH_V4 @@ -49,17 +48,6 @@ #define CONTEXT_LIST {r0, r1, r2, r3, EXCHANGE_LR, EXCHANGE_SPSR, SELF_CPU_CONTROL, r12} #define CONTEXT_SIZE 32 -.macro GET_SELF_CPU_CONTROL REG, TMP - ldr \REG, =_Per_CPU_Information -#ifdef RTEMS_SMP - /* Use ARMv7 Multiprocessor Affinity Register (MPIDR) */ - mrc p15, 0, \TMP, c0, c0, 5 - - and \TMP, \TMP, #0xff - add \REG, \REG, \TMP, asl #PER_CPU_CONTROL_SIZE_LOG2 -#endif -.endm - .arm .globl _ARMV4_Exception_interrupt _ARMV4_Exception_interrupt: |