@ -32,15 +32,12 @@
# undef DEBUG_INT
extern void microblaze_disable_interrupts ( void ) ;
extern void microblaze_enable_interrupts ( void ) ;
void enable_interrupts ( void )
void enable_interrupts ( void )
{
MSRSET ( 0x2 ) ;
}
int disable_interrupts ( void )
int disable_interrupts ( void )
{
unsigned int msr ;
@ -58,20 +55,21 @@ microblaze_intc_t *intc;
/* default handler */
static void def_hdlr ( void )
{
puts ( " def_hdlr \n " ) ;
puts ( " def_hdlr \n " ) ;
}
static void enable_one_interrupt ( int irq )
{
int mask ;
int offset = 1 ;
offset < < = irq ;
mask = intc - > ier ;
intc - > ier = ( mask | offset ) ;
# ifdef DEBUG_INT
printf ( " Enable one interrupt irq %x - mask %x,ier %x \n " , offset , mask ,
printf ( " Enable one interrupt irq %x - mask %x,ier %x \n " , offset , mask ,
intc - > ier ) ;
printf ( " INTC isr %x, ier %x, iar %x, mer %x \n " , intc - > isr , intc - > ier ,
printf ( " INTC isr %x, ier %x, iar %x, mer %x \n " , intc - > isr , intc - > ier ,
intc - > iar , intc - > mer ) ;
# endif
}
@ -80,13 +78,14 @@ static void disable_one_interrupt(int irq)
{
int mask ;
int offset = 1 ;
offset < < = irq ;
mask = intc - > ier ;
intc - > ier = ( mask & ~ offset ) ;
# ifdef DEBUG_INT
printf ( " Disable one interrupt irq %x - mask %x,ier %x \n " , irq , mask ,
printf ( " Disable one interrupt irq %x - mask %x,ier %x \n " , irq , mask ,
intc - > ier ) ;
printf ( " INTC isr %x, ier %x, iar %x, mer %x \n " , intc - > isr , intc - > ier ,
printf ( " INTC isr %x, ier %x, iar %x, mer %x \n " , intc - > isr , intc - > ier ,
intc - > iar , intc - > mer ) ;
# endif
}
@ -94,9 +93,10 @@ static void disable_one_interrupt(int irq)
int install_interrupt_handler ( int irq , interrupt_handler_t * hdlr , void * arg )
{
struct irq_action * act ;
/* irq out of range */
if ( ( irq < 0 ) | | ( irq > irq_no ) ) {
puts ( " IRQ out of range \n " ) ;
puts ( " IRQ out of range \n " ) ;
return - 1 ;
}
act = & vecs [ irq ] ;
@ -124,7 +124,7 @@ static void intc_init(void)
/* XIntc_Start - hw_interrupt enable and all interrupt enable */
intc - > mer = 0x3 ;
# ifdef DEBUG_INT
printf ( " INTC isr %x, ier %x, iar %x, mer %x \n " , intc - > isr , intc - > ier ,
printf ( " INTC isr %x, ier %x, iar %x, mer %x \n " , intc - > isr , intc - > ier ,
intc - > iar , intc - > mer ) ;
# endif
}
@ -159,7 +159,7 @@ int interrupts_init(void)
return 0 ;
}
void interrupt_handler ( void )
void interrupt_handler ( void )
{
int irqs = intc - > ivr ; /* find active interrupt */
int mask = 1 ;