summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1998-06-13 13:34:09 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1998-06-13 13:34:09 +0000
commit23f5cdb5bb3f224d8c8bd48c19806463c53436fe (patch)
tree4734ab9f396fde8085d457ab6a1a63ca2ec6be56 /c/src/lib/libbsp
parentRemoved bad comments. (diff)
downloadrtems-23f5cdb5bb3f224d8c8bd48c19806463c53436fe.tar.bz2
Adding interrupt handling routine.
Diffstat (limited to 'c/src/lib/libbsp')
-rw-r--r--c/src/lib/libbsp/powerpc/dmv177/startup/genpvec.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/c/src/lib/libbsp/powerpc/dmv177/startup/genpvec.c b/c/src/lib/libbsp/powerpc/dmv177/startup/genpvec.c
index 09918845b1..75745170b3 100644
--- a/c/src/lib/libbsp/powerpc/dmv177/startup/genpvec.c
+++ b/c/src/lib/libbsp/powerpc/dmv177/startup/genpvec.c
@@ -64,15 +64,16 @@ rtems_isr external_exception_ISR (
rtems_vector_number vector /* IN */
)
{
- rtems_unsigned16 index;
- Chain_Node *node;
- EE_ISR_Type *ee_isr;
+ rtems_unsigned16 index;
+ rtems_vector_number chained_vector;
+ Chain_Node *node;
+ EE_ISR_Type *ee_isr;
/*
* Read vector.
*/
- index = 0;
-
+ chained_vector = Get_interrupt();
+ index = chained_vector - DMV170_IRQ_FIRST
node = ISR_Array[ index ].first;
while ( !_Chain_Is_tail( &ISR_Array[ index ], node ) ) {
ee_isr = (EE_ISR_Type *) node;
@@ -83,6 +84,8 @@ rtems_isr external_exception_ISR (
/*
* Clear the interrupt.
*/
+ Clear_interrupt( chained_vector );
+
}
@@ -180,8 +183,15 @@ rtems_isr_entry set_EE_vector(
Chain_Append( &ISR_Array[vec_idx], &ISR_Nodes[index].Node );
/*
+ * Enable the interrupt.
+ */
+ enable_card_interrupt( vector );
+
+ /*
* No interrupt service routine was removed so return 0
*/
return 0;
}
+
+