root/arch/microblaze/kernel/irq.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. do_IRQ
  2. init_IRQ

   1 /*
   2  * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>
   3  * Copyright (C) 2007-2009 PetaLogix
   4  * Copyright (C) 2006 Atmark Techno, Inc.
   5  *
   6  * This file is subject to the terms and conditions of the GNU General Public
   7  * License. See the file "COPYING" in the main directory of this archive
   8  * for more details.
   9  */
  10 
  11 #include <linux/init.h>
  12 #include <linux/ftrace.h>
  13 #include <linux/kernel.h>
  14 #include <linux/hardirq.h>
  15 #include <linux/interrupt.h>
  16 #include <linux/irqflags.h>
  17 #include <linux/seq_file.h>
  18 #include <linux/kernel_stat.h>
  19 #include <linux/irq.h>
  20 #include <linux/irqchip.h>
  21 #include <linux/of_irq.h>
  22 
  23 static u32 concurrent_irq;
  24 
  25 void __irq_entry do_IRQ(struct pt_regs *regs)
  26 {
  27         unsigned int irq;
  28         struct pt_regs *old_regs = set_irq_regs(regs);
  29         trace_hardirqs_off();
  30 
  31         irq_enter();
  32         irq = xintc_get_irq();
  33 next_irq:
  34         BUG_ON(!irq);
  35         generic_handle_irq(irq);
  36 
  37         irq = xintc_get_irq();
  38         if (irq != -1U) {
  39                 pr_debug("next irq: %d\n", irq);
  40                 ++concurrent_irq;
  41                 goto next_irq;
  42         }
  43 
  44         irq_exit();
  45         set_irq_regs(old_regs);
  46         trace_hardirqs_on();
  47 }
  48 
  49 void __init init_IRQ(void)
  50 {
  51         /* process the entire interrupt tree in one go */
  52         irqchip_init();
  53 }

/* [<][>][^][v][top][bottom][index][help] */