git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' into gfs2
[pandora-kernel.git]
/
arch
/
mips
/
sibyte
/
sb1250
/
irq.c
diff --git
a/arch/mips/sibyte/sb1250/irq.c
b/arch/mips/sibyte/sb1250/irq.c
index
1d280aa
..
a451b4c
100644
(file)
--- a/
arch/mips/sibyte/sb1250/irq.c
+++ b/
arch/mips/sibyte/sb1250/irq.c
@@
-69,7
+69,7
@@
extern char sb1250_duart_present[];
#endif
#endif
#endif
#endif
-static struct
hw_interrupt_type
sb1250_irq_type = {
+static struct
irq_chip
sb1250_irq_type = {
.typename = "SB1250-IMR",
.startup = startup_sb1250_irq,
.shutdown = shutdown_sb1250_irq,
.typename = "SB1250-IMR",
.startup = startup_sb1250_irq,
.shutdown = shutdown_sb1250_irq,
@@
-120,7
+120,7
@@
static void sb1250_set_affinity(unsigned int irq, cpumask_t mask)
{
int i = 0, old_cpu, cpu, int_on;
u64 cur_ints;
{
int i = 0, old_cpu, cpu, int_on;
u64 cur_ints;
-
irq_desc_t
*desc = irq_desc + irq;
+
struct irq_desc
*desc = irq_desc + irq;
unsigned long flags;
i = first_cpu(mask);
unsigned long flags;
i = first_cpu(mask);
@@
-248,7
+248,7
@@
void __init init_sb1250_irqs(void)
irq_desc[i].chip = &sb1250_irq_type;
sb1250_irq_owner[i] = 0;
} else {
irq_desc[i].chip = &sb1250_irq_type;
sb1250_irq_owner[i] = 0;
} else {
- irq_desc[i].chip = &no_irq_
type
;
+ irq_desc[i].chip = &no_irq_
chip
;
}
}
}
}
}
}
@@
-271,7
+271,7
@@
static struct irqaction sb1250_dummy_action = {
int sb1250_steal_irq(int irq)
{
int sb1250_steal_irq(int irq)
{
-
irq_desc_t
*desc = irq_desc + irq;
+
struct irq_desc
*desc = irq_desc + irq;
unsigned long flags;
int retval = 0;
unsigned long flags;
int retval = 0;
@@
-419,21
+419,6
@@
static void sb1250_kgdb_interrupt(struct pt_regs *regs)
#endif /* CONFIG_KGDB */
#endif /* CONFIG_KGDB */
-static inline int dclz(unsigned long long x)
-{
- int lz;
-
- __asm__ (
- " .set push \n"
- " .set mips64 \n"
- " dclz %0, %1 \n"
- " .set pop \n"
- : "=r" (lz)
- : "r" (x));
-
- return lz;
-}
-
extern void sb1250_timer_interrupt(struct pt_regs *regs);
extern void sb1250_mailbox_interrupt(struct pt_regs *regs);
extern void sb1250_kgdb_interrupt(struct pt_regs *regs);
extern void sb1250_timer_interrupt(struct pt_regs *regs);
extern void sb1250_mailbox_interrupt(struct pt_regs *regs);
extern void sb1250_kgdb_interrupt(struct pt_regs *regs);
@@
-460,25
+445,25
@@
asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
pending = read_c0_cause();
#ifdef CONFIG_SIBYTE_SB1250_PROF
pending = read_c0_cause();
#ifdef CONFIG_SIBYTE_SB1250_PROF
- if (pending & CAUSEF_IP7)
{
/* Cpu performance counter interrupt */
+ if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */
sbprof_cpu_intr(exception_epc(regs));
sbprof_cpu_intr(exception_epc(regs));
- }
+ else
#endif
if (pending & CAUSEF_IP4)
sb1250_timer_interrupt(regs);
#ifdef CONFIG_SMP
#endif
if (pending & CAUSEF_IP4)
sb1250_timer_interrupt(regs);
#ifdef CONFIG_SMP
- if (pending & CAUSEF_IP3)
+
else
if (pending & CAUSEF_IP3)
sb1250_mailbox_interrupt(regs);
#endif
#ifdef CONFIG_KGDB
sb1250_mailbox_interrupt(regs);
#endif
#ifdef CONFIG_KGDB
-
if (pending & CAUSEF_IP6)
/* KGDB (uart 1) */
+
else if (pending & CAUSEF_IP6)
/* KGDB (uart 1) */
sb1250_kgdb_interrupt(regs);
#endif
sb1250_kgdb_interrupt(regs);
#endif
- if (pending & CAUSEF_IP2) {
+
else
if (pending & CAUSEF_IP2) {
unsigned long long mask;
/*
unsigned long long mask;
/*
@@
-490,6
+475,6
@@
asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
mask = __raw_readq(IOADDR(A_IMR_REGISTER(smp_processor_id(),
R_IMR_INTERRUPT_STATUS_BASE)));
if (mask)
mask = __raw_readq(IOADDR(A_IMR_REGISTER(smp_processor_id(),
R_IMR_INTERRUPT_STATUS_BASE)));
if (mask)
- do_IRQ(
63 - dclz(mask)
, regs);
+ do_IRQ(
fls64(mask) - 1
, regs);
}
}
}
}