[rtems commit] bsp/mpc55xx: Add mpc55xx_wait_for_interrupt()

Sebastian Huber sebh at rtems.org
Mon Dec 3 12:14:53 UTC 2012


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

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Thu Nov 15 16:57:02 2012 +0100

bsp/mpc55xx: Add mpc55xx_wait_for_interrupt()

Use mpc55xx_wait_for_interrupt().

---

 .../libbsp/powerpc/mpc55xxevb/startup/bspstart.c   |    8 ++----
 .../powerpc/mpc55xxevb/startup/idle-thread.c       |    6 +---
 c/src/lib/libcpu/powerpc/mpc55xx/include/mpc55xx.h |   22 ++++++++++++++++++-
 3 files changed, 25 insertions(+), 11 deletions(-)

diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c
index 824b6f0..298bbc7 100644
--- a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c
+++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c
@@ -61,16 +61,14 @@ void BSP_panic( char *s)
 	}
 }
 
-void _BSP_Fatal_error( unsigned n)
+void _BSP_Fatal_error(unsigned n)
 {
 	rtems_interrupt_level level;
 
 	rtems_interrupt_disable( level);
 
-	printk( "%s PANIC ERROR %u\n", _RTEMS_version, n);
-
-	while (1) {
-		/* Do nothing */
+	while (true) {
+		mpc55xx_wait_for_interrupt();
 	}
 }
 
diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/idle-thread.c b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/idle-thread.c
index a83640b..dbdc48b 100644
--- a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/idle-thread.c
+++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/idle-thread.c
@@ -22,14 +22,12 @@
 
 #include <bsp.h>
 
-#include <mpc55xx/regs.h>
+#include <mpc55xx/mpc55xx.h>
 
 void *bsp_idle_thread(uintptr_t arg)
 {
   while (true) {
-    #ifdef MPC55XX_HAS_WAIT_INSTRUCTION
-      __asm__ volatile ("wait");
-    #endif
+    mpc55xx_wait_for_interrupt();
   }
 
   return NULL;
diff --git a/c/src/lib/libcpu/powerpc/mpc55xx/include/mpc55xx.h b/c/src/lib/libcpu/powerpc/mpc55xx/include/mpc55xx.h
index a43140d..e7bb839 100644
--- a/c/src/lib/libcpu/powerpc/mpc55xx/include/mpc55xx.h
+++ b/c/src/lib/libcpu/powerpc/mpc55xx/include/mpc55xx.h
@@ -7,7 +7,7 @@
  */
 
 /*
- * Copyright (c) 2008-2011 embedded brains GmbH.  All rights reserved.
+ * Copyright (c) 2008-2012 embedded brains GmbH.  All rights reserved.
  *
  *  embedded brains GmbH
  *  Obere Lagerstr. 30
@@ -43,7 +43,12 @@
 #define LIBCPU_POWERPC_MPC55XX_H
 
 #include <stddef.h>
-#include <stdint.h>
+
+#include <mpc55xx/regs.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
 
 int mpc55xx_flash_copy(void *dest, const void *src, size_t nbytes);
 int mpc55xx_flash_copy_op(void *rdest, const void *src, size_t nbytes,
@@ -124,4 +129,17 @@ static inline uint32_t mpc55xx_count_leading_zeros( uint32_t value)
 	return count;
 }
 
+static inline mpc55xx_wait_for_interrupt(void)
+{
+  #ifdef MPC55XX_HAS_WAIT_INSTRUCTION
+    __asm__ volatile ("wait");
+  #else
+    __asm__ volatile ("");
+  #endif
+}
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
 #endif /* LIBCPU_POWERPC_MPC55XX_H */




More information about the vc mailing list