summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2012-11-15 16:57:02 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2012-12-03 13:17:10 +0100
commit67338ed870bb8bccb7c47af07414525dcce81276 (patch)
tree4946f33c652b86119b972d52e4ca6e3ae5a49e6d
parentbsp/mpc55xx: Use BSP_START_DATA_SECTION (diff)
downloadrtems-67338ed870bb8bccb7c47af07414525dcce81276.tar.bz2
bsp/mpc55xx: Add mpc55xx_wait_for_interrupt()
Use mpc55xx_wait_for_interrupt().
-rw-r--r--c/src/lib/libbsp/powerpc/mpc55xxevb/startup/bspstart.c8
-rw-r--r--c/src/lib/libbsp/powerpc/mpc55xxevb/startup/idle-thread.c6
-rw-r--r--c/src/lib/libcpu/powerpc/mpc55xx/include/mpc55xx.h22
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 824b6f0c37..298bbc72dd 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 a83640b55f..dbdc48bc46 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 a43140d700..e7bb83995a 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 */