From c7a56564a022ebb6dcbcdf532f76629bf9f32bde Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 18 Feb 2013 16:29:32 +0100 Subject: bsp/gen5200: Add and use mpc5200_fatal() --- c/src/lib/libbsp/powerpc/gen5200/include/bsp.h | 13 +++++++++++++ c/src/lib/libbsp/powerpc/gen5200/include/tm27.h | 2 +- c/src/lib/libbsp/powerpc/gen5200/mscan/mscan.c | 8 ++++---- c/src/lib/libbsp/powerpc/gen5200/slicetimer/slicetimer.c | 4 ++-- c/src/lib/libbsp/powerpc/gen5200/startup/bspstart.c | 5 +++++ c/src/lib/libbsp/powerpc/gen5200/tod/pcf8563.c | 5 ++--- 6 files changed, 27 insertions(+), 10 deletions(-) diff --git a/c/src/lib/libbsp/powerpc/gen5200/include/bsp.h b/c/src/lib/libbsp/powerpc/gen5200/include/bsp.h index fab12cb3f2..8564936786 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/include/bsp.h +++ b/c/src/lib/libbsp/powerpc/gen5200/include/bsp.h @@ -222,6 +222,19 @@ void BSP_IRQ_Benchmarking_Report(void); void cpu_init(void); +typedef enum { + MPC5200_FATAL_PCF8563_INVALID_YEAR, + MPC5200_FATAL_SLICETIMER_0_IRQ_INSTALL, + MPC5200_FATAL_SLICETIMER_1_IRQ_INSTALL, + MPC5200_FATAL_TM27_IRQ_INSTALL, + MPC5200_FATAL_MSCAN_A_INIT, + MPC5200_FATAL_MSCAN_B_INIT, + MPC5200_FATAL_MSCAN_A_SET_MODE, + MPC5200_FATAL_MSCAN_B_SET_MODE +} mpc5200_fatal_code; + +void mpc5200_fatal(mpc5200_fatal_code code) RTEMS_COMPILER_NO_RETURN_ATTRIBUTE; + #ifdef __cplusplus } #endif diff --git a/c/src/lib/libbsp/powerpc/gen5200/include/tm27.h b/c/src/lib/libbsp/powerpc/gen5200/include/tm27.h index 0eb36ead26..f5652aa15b 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/include/tm27.h +++ b/c/src/lib/libbsp/powerpc/gen5200/include/tm27.h @@ -33,7 +33,7 @@ void Install_tm27_vector(void (*_handler)()) clockIrqData.hdl = _handler; if (!BSP_install_rtems_irq_handler (&clockIrqData)) { printk("Error installing clock interrupt handler!\n"); - rtems_fatal_error_occurred(1); + mpc5200_fatal(MPC5200_FATAL_TM27_IRQ_INSTALL); } } diff --git a/c/src/lib/libbsp/powerpc/gen5200/mscan/mscan.c b/c/src/lib/libbsp/powerpc/gen5200/mscan/mscan.c index 61c281eb94..4be59503d0 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/mscan/mscan.c +++ b/c/src/lib/libbsp/powerpc/gen5200/mscan/mscan.c @@ -770,20 +770,20 @@ rtems_device_driver mscan_initialize(rtems_device_major_number major, /* Initialization requested via RTEMS */ if ((status = mscan_channel_initialize(major, MSCAN_A)) != RTEMS_SUCCESSFUL) - rtems_fatal_error_occurred(status); + mpc5200_fatal(MPC5200_FATAL_MSCAN_A_INIT); if ((status = mscan_channel_initialize(major, MSCAN_B)) != RTEMS_SUCCESSFUL) - rtems_fatal_error_occurred(status); + mpc5200_fatal(MPC5200_FATAL_MSCAN_B_INIT); if ((status = mpc5200_mscan_set_mode(MSCAN_A, MSCAN_INIT_NORMAL_MODE)) != RTEMS_SUCCESSFUL) - rtems_fatal_error_occurred(status); + mpc5200_fatal(MPC5200_FATAL_MSCAN_A_SET_MODE); if ((status = mpc5200_mscan_set_mode(MSCAN_B, MSCAN_INIT_NORMAL_MODE)) != RTEMS_SUCCESSFUL) - rtems_fatal_error_occurred(status); + mpc5200_fatal(MPC5200_FATAL_MSCAN_B_SET_MODE); return status; diff --git a/c/src/lib/libbsp/powerpc/gen5200/slicetimer/slicetimer.c b/c/src/lib/libbsp/powerpc/gen5200/slicetimer/slicetimer.c index cd743c8288..8c54976de4 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/slicetimer/slicetimer.c +++ b/c/src/lib/libbsp/powerpc/gen5200/slicetimer/slicetimer.c @@ -338,7 +338,7 @@ rtems_device_driver slt_initialize { printk("Unable to connect PSC Irq handler\n"); - rtems_fatal_error_occurred(1); + mpc5200_fatal(MPC5200_FATAL_SLICETIMER_0_IRQ_INSTALL); } @@ -353,7 +353,7 @@ rtems_device_driver slt_initialize { printk("Unable to connect PSC Irq handler\n"); - rtems_fatal_error_occurred(1); + mpc5200_fatal(MPC5200_FATAL_SLICETIMER_1_IRQ_INSTALL); } diff --git a/c/src/lib/libbsp/powerpc/gen5200/startup/bspstart.c b/c/src/lib/libbsp/powerpc/gen5200/startup/bspstart.c index c733295815..4b674d4ada 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/startup/bspstart.c +++ b/c/src/lib/libbsp/powerpc/gen5200/startup/bspstart.c @@ -123,6 +123,11 @@ void _BSP_Fatal_error(unsigned int v) __asm__ __volatile ("sc"); } +void mpc5200_fatal(mpc5200_fatal_code code) +{ + rtems_fatal(RTEMS_FATAL_SOURCE_BSP_SPECIFIC, code); +} + void bsp_start(void) { ppc_cpu_id_t myCpu; diff --git a/c/src/lib/libbsp/powerpc/gen5200/tod/pcf8563.c b/c/src/lib/libbsp/powerpc/gen5200/tod/pcf8563.c index 3ef9389e9f..2f38ea86fb 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/tod/pcf8563.c +++ b/c/src/lib/libbsp/powerpc/gen5200/tod/pcf8563.c @@ -184,9 +184,8 @@ pcf8563_set_time(int minor, const rtems_time_of_day *time) bus = RTC_Table[minor].ulCtrlPort1; addr = RTC_Table[minor].ulDataPort; - if ((time->year >= 2100) || - (time->year < 1900)) { - rtems_fatal_error_occurred(RTEMS_INVALID_NUMBER); + if ((time->year >= 2100) || (time->year < 1900)) { + mpc5200_fatal(MPC5200_FATAL_PCF8563_INVALID_YEAR); } info[0] = PCF8563_SECOND_ADR; info[1 + PCF8563_YEAR_ADR -PCF8563_SECOND_ADR] = To_BCD(time->year % 100); -- cgit v1.2.3