summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/c4x/shared/c4xspurious.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2000-02-22 18:39:52 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2000-02-22 18:39:52 +0000
commit61ba976360804d85f9203821518bb4b132852188 (patch)
tree28e72dd94472e21da42f5f5d1e82912a9f83852a /c/src/lib/libbsp/c4x/shared/c4xspurious.c
parentAdding information on prebuilt toolset binaries. (diff)
downloadrtems-61ba976360804d85f9203821518bb4b132852188.tar.bz2
New port of RTEMS to TI C3x and C4x.
Diffstat (limited to '')
-rw-r--r--c/src/lib/libbsp/c4x/shared/c4xspurious.c79
1 files changed, 79 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/c4x/shared/c4xspurious.c b/c/src/lib/libbsp/c4x/shared/c4xspurious.c
new file mode 100644
index 0000000000..02320af7ea
--- /dev/null
+++ b/c/src/lib/libbsp/c4x/shared/c4xspurious.c
@@ -0,0 +1,79 @@
+/*
+ * C4X Spurious Trap Handler
+ *
+ * This is just enough of a trap handler to let us know what
+ * the likely source of the trap was.
+ *
+ * COPYRIGHT (c) 1989-1999.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.OARcorp.com/rtems/license.html.
+ *
+ * $Id$
+ */
+
+#include <bsp.h>
+#include <bspIo.h>
+
+/*
+ * bsp_spurious_handler
+ *
+ * Print a message on the debug console and then die
+ */
+
+void bsp_spurious_handler_assistant(
+ rtems_vector_number,
+ CPU_Interrupt_frame *
+);
+
+#if defined(_C4x)
+rtems_isr bsp_spurious_handler(
+ rtems_vector_number vector,
+ CPU_Interrupt_frame *isf
+)
+{
+ char *s;
+
+ printk( "Unexpected interrupt (0x%x)\n", vector );
+ printk( "It looks like we got the interrupt at 0x%x\n", isf->interrupted );
+
+ /*
+ * Can we print a name?
+ */
+
+ printk( "Looks like it was a " );
+ if ( vector >= 0x0d && vector <= 0x24 ) {
+ switch ( vector & 0x3 ) {
+ case 1: s = "ICFULL"; break;
+ case 2: s = "ICRDY"; break;
+ case 3: s = "OCRDY"; break;
+ case 0: s = "OCEMPTY"; break;
+ }
+ printk( "%s%d\n", s, (vector - 0x0d) / 4 );
+ } else if ( vector >= 0x25 && vector <= 0x2a ) {
+ printk( "DMA INT%d\n", (vector - 0x25) );
+ } else /* if ( vector <= 0x0c || vector >= 0x2b ) */ {
+ switch ( vector ) {
+ case 0: s = "RESET"; break;
+ case 1: s = "NMI"; break;
+ case 2: s = "TINT0"; break;
+ case 3: s = "IIOF0"; break;
+ case 4: s = "IIOF1"; break;
+ case 5: s = "IIOF2"; break;
+ case 6: s = "IIOF3"; break;
+ case 0x2b: s = "TINT1"; break;
+ case 0x3f: s = "Reserved"; break;
+ default: s = "Unused"; break;
+ }
+ printk( "%s\n", s );
+ }
+
+ /*
+ * Now call the BSP specific routine
+ */
+
+ bsp_spurious_handler_assistant( vector, isf );
+}
+#endif