diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-02-18 16:29:32 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-02-20 09:11:41 +0100 |
commit | c7a56564a022ebb6dcbcdf532f76629bf9f32bde (patch) | |
tree | 08bf1b151edd1220c6257c26dad26876e01468fa /c/src/lib/libbsp/powerpc/gen5200 | |
parent | bsp/mpc55xx: Fix prototype (diff) | |
download | rtems-c7a56564a022ebb6dcbcdf532f76629bf9f32bde.tar.bz2 |
bsp/gen5200: Add and use mpc5200_fatal()
Diffstat (limited to 'c/src/lib/libbsp/powerpc/gen5200')
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); |