[rtems commit] bsp/mpc55xx: Fix bsp_idle_thread()

Sebastian Huber sebh at rtems.org
Tue Oct 2 13:24:03 UTC 2012


Module:    rtems
Branch:    master
Commit:    245cad54f23b708d0a58874a8bd273b296434c77
Changeset: http://git.rtems.org/rtems/commit/?id=245cad54f23b708d0a58874a8bd273b296434c77

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Mon Oct  1 14:28:32 2012 +0200

bsp/mpc55xx: Fix bsp_idle_thread()

---

 c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am    |    2 +-
 c/src/lib/libbsp/powerpc/mpc55xxevb/include/bsp.h  |   15 ++------
 .../powerpc/mpc55xxevb/startup/idle-thread.c       |   36 ++++++++++++++++++++
 c/src/lib/libcpu/powerpc/mpc55xx/include/regs.h    |    1 +
 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 a805452..ff8edbf 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 e1b1405..a72f4da 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 0000000..a83640b
--- /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 at 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 d773094..e02f274 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




More information about the vc mailing list