summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-05-22 09:54:34 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-05-27 12:49:13 +0200
commitd9bd5cd699ecad35e4319020db42d42f01871d4e (patch)
tree8841e84c2159ee1465530313c62b2d84eeea65b8
parentarm: Fix CPSR and SPSR access (diff)
downloadrtems-d9bd5cd699ecad35e4319020db42d42f01871d4e.tar.bz2
arm: Add CPU specific idle thread for ARMv7
-rw-r--r--cpukit/score/cpu/arm/Makefile.am2
-rw-r--r--cpukit/score/cpu/arm/armv7-thread-idle.c (renamed from cpukit/score/cpu/arm/armv7m-thread-idle.c)4
-rw-r--r--cpukit/score/cpu/arm/rtems/score/arm.h6
-rw-r--r--cpukit/score/cpu/arm/rtems/score/cpu.h2
4 files changed, 10 insertions, 4 deletions
diff --git a/cpukit/score/cpu/arm/Makefile.am b/cpukit/score/cpu/arm/Makefile.am
index 37ab9010fd..46ce58c1b5 100644
--- a/cpukit/score/cpu/arm/Makefile.am
+++ b/cpukit/score/cpu/arm/Makefile.am
@@ -25,6 +25,7 @@ libscorecpu_a_SOURCES += arm_exc_handler_high.c
libscorecpu_a_SOURCES += arm-exception-frame-print.c
libscorecpu_a_SOURCES += arm-exception-default.c
libscorecpu_a_SOURCES += armv4-exception-default.S
+libscorecpu_a_SOURCES += armv7-thread-idle.c
libscorecpu_a_SOURCES += armv7m-context-initialize.c
libscorecpu_a_SOURCES += armv7m-context-restore.c
libscorecpu_a_SOURCES += armv7m-context-switch.c
@@ -41,7 +42,6 @@ libscorecpu_a_SOURCES += armv7m-isr-level-get.c
libscorecpu_a_SOURCES += armv7m-isr-level-set.c
libscorecpu_a_SOURCES += armv7m-isr-vector-install.c
libscorecpu_a_SOURCES += armv7m-multitasking-start-stop.c
-libscorecpu_a_SOURCES += armv7m-thread-idle.c
include $(srcdir)/preinstall.am
include $(top_srcdir)/automake/local.am
diff --git a/cpukit/score/cpu/arm/armv7m-thread-idle.c b/cpukit/score/cpu/arm/armv7-thread-idle.c
index 52a3dbd179..7dfbc7feab 100644
--- a/cpukit/score/cpu/arm/armv7m-thread-idle.c
+++ b/cpukit/score/cpu/arm/armv7-thread-idle.c
@@ -24,7 +24,7 @@
#include <rtems/score/cpu.h>
-#ifdef ARM_MULTILIB_ARCH_V7M
+#ifdef ARM_MULTILIB_HAS_WFI
void *_CPU_Thread_Idle_body( uintptr_t ignored )
{
@@ -33,4 +33,4 @@ void *_CPU_Thread_Idle_body( uintptr_t ignored )
}
}
-#endif /* ARM_MULTILIB_ARCH_V7M */
+#endif /* ARM_MULTILIB_HAS_WFI */
diff --git a/cpukit/score/cpu/arm/rtems/score/arm.h b/cpukit/score/cpu/arm/rtems/score/arm.h
index fb0f98e4e8..0a3e7247f8 100644
--- a/cpukit/score/cpu/arm/rtems/score/arm.h
+++ b/cpukit/score/cpu/arm/rtems/score/arm.h
@@ -37,6 +37,12 @@ extern "C" {
#define ARM_MULTILIB_ARCH_V4
#endif
+#if defined(__ARM_ARCH_7A__) \
+ || defined(__ARM_ARCH_7R__) \
+ || defined(__ARM_ARCH_7M__)
+ #define ARM_MULTILIB_HAS_WFI
+#endif
+
#if defined(__ARM_NEON__)
#define ARM_MULTILIB_VFP_D32
#elif !defined(__SOFTFP__)
diff --git a/cpukit/score/cpu/arm/rtems/score/cpu.h b/cpukit/score/cpu/arm/rtems/score/cpu.h
index f00de7352f..e606146cb7 100644
--- a/cpukit/score/cpu/arm/rtems/score/cpu.h
+++ b/cpukit/score/cpu/arm/rtems/score/cpu.h
@@ -138,7 +138,7 @@
#define CPU_USE_DEFERRED_FP_SWITCH FALSE
-#if defined(ARM_MULTILIB_ARCH_V7M)
+#if defined(ARM_MULTILIB_HAS_WFI)
#define CPU_PROVIDES_IDLE_THREAD_BODY TRUE
#else
#define CPU_PROVIDES_IDLE_THREAD_BODY FALSE