[rtems commit] bsp/gen5200: Add and use mpc5200_fatal()

Sebastian Huber sebh at rtems.org
Wed Feb 20 08:21:08 UTC 2013


Module:    rtems
Branch:    master
Commit:    c7a56564a022ebb6dcbcdf532f76629bf9f32bde
Changeset: http://git.rtems.org/rtems/commit/?id=c7a56564a022ebb6dcbcdf532f76629bf9f32bde

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Mon Feb 18 16:29:32 2013 +0100

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 ++++----
 .../libbsp/powerpc/gen5200/slicetimer/slicetimer.c |    4 ++--
 .../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 fab12cb..8564936 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 0eb36ea..f5652aa 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 61c281e..4be5950 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 cd743c8..8c54976 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 c733295..4b674d4 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 3ef9389..2f38ea8 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);




More information about the vc mailing list