From 245cad54f23b708d0a58874a8bd273b296434c77 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 1 Oct 2012 14:28:32 +0200 Subject: 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(-) create mode 100644 c/src/lib/libbsp/powerpc/mpc55xxevb/startup/idle-thread.c diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am b/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am index a805452fbb..ff8edbf0ca 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 e1b1405014..a72f4daa03 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 0000000000..a83640b55f --- /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 + * + * + * 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 + +#include + +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 d77309419d..e02f274416 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 -- cgit v1.2.3