summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2012-10-01 14:28:32 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2012-10-02 15:27:33 +0200
commit245cad54f23b708d0a58874a8bd273b296434c77 (patch)
treecc8407e0dc4cf9bde1b340cc3dc12522b6030867
parentbsp/mpc55xx: Add and use MPC55XX_CHIP_FAMILY (diff)
downloadrtems-245cad54f23b708d0a58874a8bd273b296434c77.tar.bz2
bsp/mpc55xx: Fix bsp_idle_thread()
-rw-r--r--c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am2
-rw-r--r--c/src/lib/libbsp/powerpc/mpc55xxevb/include/bsp.h15
-rw-r--r--c/src/lib/libbsp/powerpc/mpc55xxevb/startup/idle-thread.c36
-rw-r--r--c/src/lib/libcpu/powerpc/mpc55xx/include/regs.h1
4 files changed, 41 insertions, 13 deletions
diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am b/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am
index a805452fbb..ff8edbf0ca 100644
--- a/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am
+++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am
@@ -69,12 +69,12 @@ libbsp_a_SOURCES += ../../shared/src/stackalloc.c
libbsp_a_SOURCES += ../shared/src/bsp-start-zero.S
libbsp_a_SOURCES += ../shared/src/memcpy.c
libbsp_a_SOURCES += ../shared/src/tictac.c
-libbsp_a_SOURCES += ../shared/startup/bspidle.c
libbsp_a_SOURCES += startup/bspstart.c
libbsp_a_SOURCES += startup/exc-vector-base.S
libbsp_a_SOURCES += startup/get-system-clock.c
libbsp_a_SOURCES += startup/reset.c
libbsp_a_SOURCES += startup/restart.c
+libbsp_a_SOURCES += startup/idle-thread.c
libbsp_a_SOURCES += startup/start-config-clock.c
libbsp_a_SOURCES += startup/start-config-ebi-cs.c
libbsp_a_SOURCES += startup/start-config-ebi-cs-cal.c
diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/include/bsp.h b/c/src/lib/libbsp/powerpc/mpc55xxevb/include/bsp.h
index e1b1405014..a72f4daa03 100644
--- a/c/src/lib/libbsp/powerpc/mpc55xxevb/include/bsp.h
+++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/include/bsp.h
@@ -74,18 +74,9 @@ rtems_status_code bsp_register_i2c(void);
void bsp_restart(void *addr);
-#if MPC55XX_CHIP_TYPE / 10 == 567
- static void *mpc55xx_idle_task(uintptr_t arg)
- {
- while (true) {
- __asm__ volatile ("wait");
- }
-
- return NULL;
- }
-
- #define BSP_IDLE_TASK_BODY mpc55xx_idle_task
-#endif
+void *bsp_idle_thread(uintptr_t arg);
+
+#define BSP_IDLE_TASK_BODY bsp_idle_thread
#endif /* ASM */
diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/idle-thread.c b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/idle-thread.c
new file mode 100644
index 0000000000..a83640b55f
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/idle-thread.c
@@ -0,0 +1,36 @@
+/**
+ * @file
+ *
+ * @ingroup mpc55xx
+ *
+ * @brief bsp_idle_thread() implementation.
+ */
+
+/*
+ * Copyright (c) 2012 embedded brains GmbH. All rights reserved.
+ *
+ * embedded brains GmbH
+ * Obere Lagerstr. 30
+ * 82178 Puchheim
+ * Germany
+ * <rtems@embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ */
+
+#include <bsp.h>
+
+#include <mpc55xx/regs.h>
+
+void *bsp_idle_thread(uintptr_t arg)
+{
+ while (true) {
+ #ifdef MPC55XX_HAS_WAIT_INSTRUCTION
+ __asm__ volatile ("wait");
+ #endif
+ }
+
+ return NULL;
+}
diff --git a/c/src/lib/libcpu/powerpc/mpc55xx/include/regs.h b/c/src/lib/libcpu/powerpc/mpc55xx/include/regs.h
index d77309419d..e02f274416 100644
--- a/c/src/lib/libcpu/powerpc/mpc55xx/include/regs.h
+++ b/c/src/lib/libcpu/powerpc/mpc55xx/include/regs.h
@@ -67,6 +67,7 @@
#define MPC55XX_HAS_INSTRUCTION_CACHE
#define MPC55XX_HAS_DATA_CACHE
#define MPC55XX_HAS_SIU
+ #define MPC55XX_HAS_WAIT_INSTRUCTION
#else
#error "unsupported chip type"
#endif