Switched to SCV64.

This commit is contained in:
Joel Sherrill
1998-07-15 14:06:08 +00:00
parent 8f563b9b3c
commit e49ef37cdf

View File

@@ -65,27 +65,55 @@ rtems_isr external_exception_ISR (
) )
{ {
rtems_unsigned16 index; rtems_unsigned16 index;
rtems_boolean is_active=FALSE;
rtems_unsigned32 scv64_status;
rtems_vector_number chained_vector; rtems_vector_number chained_vector;
Chain_Node *node; Chain_Node *node;
EE_ISR_Type *ee_isr; EE_ISR_Type *ee_isr;
/*
* Get all active interrupts.
*/
scv64_status = SCV64_Get_Interrupt();
/*
* Process any set interrupts.
*/
for (index = 0; index <= 5; index++) {
switch(index) {
case 0:
is_active = SCV64_Is_IRQ0( scv64_status );
break;
case 1:
is_active = SCV64_Is_IRQ1( scv64_status );
break;
case 2:
is_active = SCV64_Is_IRQ2( scv64_status );
break;
case 3:
is_active = SCV64_Is_IRQ3( scv64_status );
break;
case 4:
is_active = SCV64_Is_IRQ4( scv64_status );
break;
case 5:
is_active = SCV64_Is_IRQ5( scv64_status );
break;
}
if (is_active) {
/* /*
* Read vector. * Read vector.
*/ */
chained_vector = Get_interrupt();
index = chained_vector - DMV170_IRQ_FIRST;
node = ISR_Array[ index ].first; node = ISR_Array[ index ].first;
while ( !_Chain_Is_tail( &ISR_Array[ index ], node ) ) { while ( !_Chain_Is_tail( &ISR_Array[ index ], node ) ) {
ee_isr = (EE_ISR_Type *) node; ee_isr = (EE_ISR_Type *) node;
(*ee_isr->handler)( ee_isr->vector ); (*ee_isr->handler)( ee_isr->vector );
node = node->next; node = node->next;
} }
}
/* }
* Clear the interrupt.
*/
Clear_interrupt( chained_vector );
} }
@@ -110,6 +138,11 @@ void initialize_external_exception_vector ()
Nodes_Used = 0; Nodes_Used = 0;
/*
* Initialize the SCV64 chip
*/
SCV64_Initialize();
for (i=0; i <NUM_LIRQ; i++) for (i=0; i <NUM_LIRQ; i++)
Chain_Initialize_empty( &ISR_Array[i] ); Chain_Initialize_empty( &ISR_Array[i] );
@@ -121,7 +154,6 @@ void initialize_external_exception_vector ()
status = rtems_interrupt_catch( external_exception_ISR, status = rtems_interrupt_catch( external_exception_ISR,
PPC_IRQ_EXTERNAL , (rtems_isr_entry *) &previous_isr ); PPC_IRQ_EXTERNAL , (rtems_isr_entry *) &previous_isr );
Init_Css();
} }
/*PAGE /*PAGE
@@ -187,6 +219,9 @@ rtems_isr_entry set_EE_vector(
/* /*
* Enable the interrupt. * Enable the interrupt.
*/ */
if (vector == DMV170_LIRQ5)
SCV64_Generate_DUART_Interrupts();
else
enable_card_interrupt( vector ); enable_card_interrupt( vector );
/* /*