From 67338ed870bb8bccb7c47af07414525dcce81276 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 15 Nov 2012 16:57:02 +0100 Subject: 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(-) (limited to 'c/src/lib') 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 -#include +#include 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 -#include + +#include + +#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 */ -- cgit v1.2.3