git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
arch
/
arm
/
kernel
/
irq.c
diff --git
a/arch/arm/kernel/irq.c
b/arch/arm/kernel/irq.c
index
2e1bf83
..
ec01f08
100644
(file)
--- a/
arch/arm/kernel/irq.c
+++ b/
arch/arm/kernel/irq.c
@@
-111,7
+111,8
@@
static struct irq_desc bad_irq_desc = {
*/
asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
{
*/
asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
{
- struct irqdesc *desc = irq_desc + irq;
+ struct pt_regs *old_regs = set_irq_regs(regs);
+ struct irq_desc *desc = irq_desc + irq;
/*
* Some hardware gives randomly wrong interrupts. Rather
/*
* Some hardware gives randomly wrong interrupts. Rather
@@
-122,17
+123,18
@@
asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
irq_enter();
irq_enter();
- desc_handle_irq(irq, desc
, regs
);
+ desc_handle_irq(irq, desc);
/* AT91 specific workaround */
irq_finish(irq);
irq_exit();
/* AT91 specific workaround */
irq_finish(irq);
irq_exit();
+ set_irq_regs(old_regs);
}
void set_irq_flags(unsigned int irq, unsigned int iflags)
{
}
void set_irq_flags(unsigned int irq, unsigned int iflags)
{
- struct irqdesc *desc;
+ struct irq
_
desc *desc;
unsigned long flags;
if (irq >= NR_IRQS) {
unsigned long flags;
if (irq >= NR_IRQS) {
@@
-169,7
+171,7
@@
void __init init_IRQ(void)
#ifdef CONFIG_HOTPLUG_CPU
#ifdef CONFIG_HOTPLUG_CPU
-static void route_irq(struct irqdesc *desc, unsigned int irq, unsigned int cpu)
+static void route_irq(struct irq
_
desc *desc, unsigned int irq, unsigned int cpu)
{
pr_debug("IRQ%u: moving from cpu%u to cpu%u\n", irq, desc->cpu, cpu);
{
pr_debug("IRQ%u: moving from cpu%u to cpu%u\n", irq, desc->cpu, cpu);
@@
-188,7
+190,7
@@
void migrate_irqs(void)
unsigned int i, cpu = smp_processor_id();
for (i = 0; i < NR_IRQS; i++) {
unsigned int i, cpu = smp_processor_id();
for (i = 0; i < NR_IRQS; i++) {
- struct irqdesc *desc = irq_desc + i;
+ struct irq
_
desc *desc = irq_desc + i;
if (desc->cpu == cpu) {
unsigned int newcpu = any_online_cpu(desc->affinity);
if (desc->cpu == cpu) {
unsigned int newcpu = any_online_cpu(desc->affinity);