16 #include <linux/module.h>
22 #include <asm/uaccess.h>
37 struct pt_regs *old_regs = set_irq_regs(regs);
46 #ifdef CONFIG_DEBUG_STACKOVERFLOW
51 __asm__ __volatile__ (
"mov %0, a1\n" :
"=a" (sp));
55 printk(
"Stack overflow in do_IRQ: %ld\n",
62 set_irq_regs(old_regs);
72 static void xtensa_irq_mask(
struct irq_data *
d)
75 set_sr (cached_irq_mask, intenable);
78 static void xtensa_irq_unmask(
struct irq_data *
d)
81 set_sr (cached_irq_mask, intenable);
84 static void xtensa_irq_enable(
struct irq_data *
d)
90 static void xtensa_irq_disable(
struct irq_data *
d)
96 static void xtensa_irq_ack(
struct irq_data *
d)
101 static int xtensa_irq_retrigger(
struct irq_data *
d)
108 static struct irq_chip xtensa_irq_chip = {
110 .irq_enable = xtensa_irq_enable,
111 .irq_disable = xtensa_irq_disable,
112 .irq_mask = xtensa_irq_mask,
113 .irq_unmask = xtensa_irq_unmask,
114 .irq_ack = xtensa_irq_ack,
115 .irq_retrigger = xtensa_irq_retrigger,
126 irq_set_chip_and_handler(index, &xtensa_irq_chip,
130 irq_set_chip_and_handler(index, &xtensa_irq_chip,
134 irq_set_chip_and_handler(index, &xtensa_irq_chip,
138 irq_set_chip_and_handler(index, &xtensa_irq_chip,
144 irq_set_chip_and_handler(index, &xtensa_irq_chip,