diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-11-15 16:57:02 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-12-03 13:17:10 +0100 |
commit | 67338ed870bb8bccb7c47af07414525dcce81276 (patch) | |
tree | 4946f33c652b86119b972d52e4ca6e3ae5a49e6d | |
parent | bsp/mpc55xx: Use BSP_START_DATA_SECTION (diff) | |
download | rtems-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.c | 8 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/mpc55xxevb/startup/idle-thread.c | 6 | ||||
-rw-r--r-- | 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 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 */ |