Update of /cvsroot/linuxsh/linux/arch/sh/kernel/cpu/irq
In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv568/arch/sh/kernel/cpu/irq
Modified Files:
ipr.c maskreg.c pint.c
Log Message:
No need to toggle interrupts for IRQ enable/disable(), the generic hardirq
framework already takes care of the locking and IRQ management for us.
Index: ipr.c
===================================================================
RCS file: /cvsroot/linuxsh/linux/arch/sh/kernel/cpu/irq/ipr.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- ipr.c 3 Aug 2006 06:55:15 -0000 1.4
+++ ipr.c 7 Aug 2006 02:14:09 -0000 1.5
@@ -58,31 +58,27 @@
static void disable_ipr_irq(unsigned int irq)
{
- unsigned long val, flags;
+ unsigned long val;
unsigned int addr = ipr_data[irq].addr;
unsigned short mask = 0xffff ^ (0x0f << ipr_data[irq].shift);
/* Set the priority in IPR to 0 */
- local_irq_save(flags);
val = ctrl_inw(addr);
val &= mask;
ctrl_outw(val, addr);
- local_irq_restore(flags);
}
static void enable_ipr_irq(unsigned int irq)
{
- unsigned long val, flags;
+ unsigned long val;
unsigned int addr = ipr_data[irq].addr;
int priority = ipr_data[irq].priority;
unsigned short value = (priority << ipr_data[irq].shift);
/* Set priority in IPR back to original value */
- local_irq_save(flags);
val = ctrl_inw(addr);
val |= value;
ctrl_outw(val, addr);
- local_irq_restore(flags);
}
static void mask_and_ack_ipr(unsigned int irq)
Index: maskreg.c
===================================================================
RCS file: /cvsroot/linuxsh/linux/arch/sh/kernel/cpu/irq/maskreg.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- maskreg.c 7 Aug 2006 01:57:48 -0000 1.1
+++ maskreg.c 7 Aug 2006 02:14:09 -0000 1.2
@@ -52,32 +52,26 @@
static void disable_maskreg_irq(unsigned int irq)
{
- unsigned long flags;
unsigned short val, mask = 0x01 << irq;
BUG_ON(!irq_mask_register);
/* Set "irq"th bit */
- local_irq_save(flags);
val = ctrl_inw(irq_mask_register);
val |= mask;
ctrl_outw(val, irq_mask_register);
- local_irq_restore(flags);
}
static void enable_maskreg_irq(unsigned int irq)
{
- unsigned long flags;
unsigned short val, mask = ~(0x01 << irq);
BUG_ON(!irq_mask_register);
/* Clear "irq"th bit */
- local_irq_save(flags);
val = ctrl_inw(irq_mask_register);
val &= mask;
ctrl_outw(val, irq_mask_register);
- local_irq_restore(flags);
}
static void mask_and_ack_maskreg(unsigned int irq)
Index: pint.c
===================================================================
RCS file: /cvsroot/linuxsh/linux/arch/sh/kernel/cpu/irq/pint.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- pint.c 7 Jan 2006 20:16:39 -0000 1.1
+++ pint.c 7 Aug 2006 02:14:09 -0000 1.2
@@ -49,26 +49,22 @@
static void disable_pint_irq(unsigned int irq)
{
- unsigned long val, flags;
+ unsigned long val;
- local_irq_save(flags);
val = ctrl_inw(INTC_INTER);
val &= ~(1 << (irq - PINT_IRQ_BASE));
ctrl_outw(val, INTC_INTER); /* disable PINTn */
portcr_mask &= ~(3 << (irq - PINT_IRQ_BASE)*2);
- local_irq_restore(flags);
}
static void enable_pint_irq(unsigned int irq)
{
- unsigned long val, flags;
+ unsigned long val;
- local_irq_save(flags);
val = ctrl_inw(INTC_INTER);
val |= 1 << (irq - PINT_IRQ_BASE);
ctrl_outw(val, INTC_INTER); /* enable PINTn */
portcr_mask |= 3 << (irq - PINT_IRQ_BASE)*2;
- local_irq_restore(flags);
}
static void mask_and_ack_pint(unsigned int irq)
|