summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-02-18 16:29:32 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-02-20 09:11:41 +0100
commitc7a56564a022ebb6dcbcdf532f76629bf9f32bde (patch)
tree08bf1b151edd1220c6257c26dad26876e01468fa /c
parentbsp/mpc55xx: Fix prototype (diff)
downloadrtems-c7a56564a022ebb6dcbcdf532f76629bf9f32bde.tar.bz2
bsp/gen5200: Add and use mpc5200_fatal()
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/powerpc/gen5200/include/bsp.h13
-rw-r--r--c/src/lib/libbsp/powerpc/gen5200/include/tm27.h2
-rw-r--r--c/src/lib/libbsp/powerpc/gen5200/mscan/mscan.c8
-rw-r--r--c/src/lib/libbsp/powerpc/gen5200/slicetimer/slicetimer.c4
-rw-r--r--c/src/lib/libbsp/powerpc/gen5200/startup/bspstart.c5
-rw-r--r--c/src/lib/libbsp/powerpc/gen5200/tod/pcf8563.c5
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);