diff options
Diffstat (limited to 'cpukit/score/cpu/arm/rtems/asm.h')
-rw-r--r-- | cpukit/score/cpu/arm/rtems/asm.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/cpukit/score/cpu/arm/rtems/asm.h b/cpukit/score/cpu/arm/rtems/asm.h index 6539a38913..d22514d60a 100644 --- a/cpukit/score/cpu/arm/rtems/asm.h +++ b/cpukit/score/cpu/arm/rtems/asm.h @@ -41,8 +41,7 @@ #ifndef ASM #define ASM #endif -#include <rtems/score/cpuopts.h> -#include <rtems/score/arm.h> +#include <rtems/score/percpu.h> /** * @defgroup ScoreCPUARMASM ARM Assembler Support @@ -188,6 +187,17 @@ #endif /* __thumb__ */ .endm +.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 + /** @} */ #endif /* _RTEMS_ASM_H */ |