[PATCH 05/16] score: Add INTERNAL_ERROR_CPU_ISR_INSTALL_VECTOR

Sebastian Huber sebastian.huber at embedded-brains.de
Wed Nov 14 15:46:59 UTC 2012


Use INTERNAL_ERROR_CPU_ISR_INSTALL_VECTOR on PowerPC for
_CPU_ISR_install_vector().
---
 c/src/lib/libcpu/powerpc/new-exceptions/cpu.c      |   22 -------------
 cpukit/sapi/src/interrdesc.c                       |    3 +-
 cpukit/score/cpu/powerpc/Makefile.am               |    1 +
 cpukit/score/cpu/powerpc/ppc-isr-vector-install.c  |   33 ++++++++++++++++++++
 cpukit/score/include/rtems/score/interr.h          |    3 +-
 testsuites/sptests/spinternalerror02/init.c        |    2 +-
 .../spinternalerror02/spinternalerror02.scn        |    1 +
 7 files changed, 40 insertions(+), 25 deletions(-)
 create mode 100644 cpukit/score/cpu/powerpc/ppc-isr-vector-install.c

diff --git a/c/src/lib/libcpu/powerpc/new-exceptions/cpu.c b/c/src/lib/libcpu/powerpc/new-exceptions/cpu.c
index cb944ba..7ce7e2f 100644
--- a/c/src/lib/libcpu/powerpc/new-exceptions/cpu.c
+++ b/c/src/lib/libcpu/powerpc/new-exceptions/cpu.c
@@ -132,25 +132,3 @@ void _CPU_Context_Initialize(
   _CPU_Context_initialize_altivec(the_context);
 #endif
 }
-
-/*  _CPU_ISR_install_vector
- *
- *  This kernel routine installs the RTEMS handler for the
- *  specified vector.
- *
- *  Input parameters:
- *    vector      - interrupt vector number
- *    old_handler - former ISR for this vector number
- *    new_handler - replacement ISR for this vector number
- *
- *  Output parameters:  NONE
- */
-
-void _CPU_ISR_install_vector(
-  uint32_t    vector,
-  proc_ptr    new_handler,
-  proc_ptr   *old_handler
-)
-{
-  BSP_panic("_CPU_ISR_install_vector called\n");
-}
diff --git a/cpukit/sapi/src/interrdesc.c b/cpukit/sapi/src/interrdesc.c
index 181bcff..5eab683 100644
--- a/cpukit/sapi/src/interrdesc.c
+++ b/cpukit/sapi/src/interrdesc.c
@@ -42,7 +42,8 @@ static const char *const internal_error_desc [] = {
   "INTERNAL_ERROR_SHUTDOWN_WHEN_NOT_UP",
   "INTERNAL_ERROR_GXX_KEY_ADD_FAILED",
   "INTERNAL_ERROR_GXX_MUTEX_INIT_FAILED",
-  "INTERNAL_ERROR_NO_MEMORY_FOR_HEAP"
+  "INTERNAL_ERROR_NO_MEMORY_FOR_HEAP",
+  "INTERNAL_ERROR_CPU_ISR_INSTALL_VECTOR"
 };
 
 const char *rtems_internal_error_description( rtems_fatal_code error )
diff --git a/cpukit/score/cpu/powerpc/Makefile.am b/cpukit/score/cpu/powerpc/Makefile.am
index 65007ef..e8b2f92 100644
--- a/cpukit/score/cpu/powerpc/Makefile.am
+++ b/cpukit/score/cpu/powerpc/Makefile.am
@@ -13,6 +13,7 @@ include_rtems_powerpc_HEADERS = rtems/powerpc/registers.h
 
 noinst_LIBRARIES = libscorecpu.a
 libscorecpu_a_SOURCES = cpu.c
+libscorecpu_a_SOURCES += ppc-isr-vector-install.c
 libscorecpu_a_CPPFLAGS = $(AM_CPPFLAGS)
 
 include $(srcdir)/preinstall.am
diff --git a/cpukit/score/cpu/powerpc/ppc-isr-vector-install.c b/cpukit/score/cpu/powerpc/ppc-isr-vector-install.c
new file mode 100644
index 0000000..4b8e81a
--- /dev/null
+++ b/cpukit/score/cpu/powerpc/ppc-isr-vector-install.c
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2012 embedded brains GmbH.  All rights reserved.
+ *
+ *  embedded brains GmbH
+ *  Obere Lagerstr. 30
+ *  82178 Puchheim
+ *  Germany
+ *  <rtems at embedded-brains.de>
+ *
+ * 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+  #include "config.h"
+#endif
+
+#include <rtems/score/cpu.h>
+#include <rtems/score/interr.h>
+
+void _CPU_ISR_install_vector(
+  uint32_t vector,
+  proc_ptr new_handler,
+  proc_ptr *old_handler
+)
+{
+  _Internal_error_Occurred(
+    INTERNAL_ERROR_CORE,
+    false,
+    INTERNAL_ERROR_CPU_ISR_INSTALL_VECTOR
+  );
+}
diff --git a/cpukit/score/include/rtems/score/interr.h b/cpukit/score/include/rtems/score/interr.h
index 8aa85ae..6d823a3 100644
--- a/cpukit/score/include/rtems/score/interr.h
+++ b/cpukit/score/include/rtems/score/interr.h
@@ -73,7 +73,8 @@ typedef enum {
   INTERNAL_ERROR_SHUTDOWN_WHEN_NOT_UP,
   INTERNAL_ERROR_GXX_KEY_ADD_FAILED,
   INTERNAL_ERROR_GXX_MUTEX_INIT_FAILED,
-  INTERNAL_ERROR_NO_MEMORY_FOR_HEAP
+  INTERNAL_ERROR_NO_MEMORY_FOR_HEAP,
+  INTERNAL_ERROR_CPU_ISR_INSTALL_VECTOR
 } Internal_errors_Core_list;
 
 typedef uint32_t Internal_errors_t;
diff --git a/testsuites/sptests/spinternalerror02/init.c b/testsuites/sptests/spinternalerror02/init.c
index 357ea5b..79b36ca 100644
--- a/testsuites/sptests/spinternalerror02/init.c
+++ b/testsuites/sptests/spinternalerror02/init.c
@@ -33,7 +33,7 @@ static void test(void)
     puts( desc );
   } while ( desc != desc_last );
 
-  rtems_test_assert( error - 3 == INTERNAL_ERROR_NO_MEMORY_FOR_HEAP );
+  rtems_test_assert( error - 3 == INTERNAL_ERROR_CPU_ISR_INSTALL_VECTOR );
 }
 
 static void Init(rtems_task_argument arg)
diff --git a/testsuites/sptests/spinternalerror02/spinternalerror02.scn b/testsuites/sptests/spinternalerror02/spinternalerror02.scn
index c1152c4..6fdbed6 100644
--- a/testsuites/sptests/spinternalerror02/spinternalerror02.scn
+++ b/testsuites/sptests/spinternalerror02/spinternalerror02.scn
@@ -23,6 +23,7 @@ INTERNAL_ERROR_SHUTDOWN_WHEN_NOT_UP
 INTERNAL_ERROR_GXX_KEY_ADD_FAILED
 INTERNAL_ERROR_GXX_MUTEX_INIT_FAILED
 INTERNAL_ERROR_NO_MEMORY_FOR_HEAP
+INTERNAL_ERROR_CPU_ISR_INSTALL_VECTOR
 ?
 ?
 *** END OF TEST SPINTERNALERROR 2 ***
-- 
1.7.7




More information about the devel mailing list