|
Linux Kernel
3.7.1
|
#include <linux/irq.h>#include <linux/interrupt.h>#include <linux/module.h>#include <linux/kernel_stat.h>#include <linux/seq_file.h>#include <linux/ftrace.h>#include <linux/delay.h>#include <linux/ratelimit.h>#include <asm/processor.h>#include <asm/machvec.h>#include <asm/uaccess.h>#include <asm/thread_info.h>#include <cpu/mmu_context.h>Go to the source code of this file.
Functions | |
| void | ack_bad_irq (unsigned int irq) |
| asmlinkage __irq_entry int | do_IRQ (unsigned int irq, struct pt_regs *regs) |
| void __init | init_IRQ (void) |
Variables | |
| atomic_t | irq_err_count |
| asmlinkage __irq_entry int do_IRQ | ( | unsigned int | irq, |
| struct pt_regs * | regs | ||
| ) |
The hexagon core comes with a first-level interrupt controller with 32 total possible interrupts. When the core is embedded into different systems/platforms, it is typically wrapped by macro cells that provide one or more second-level interrupt controllers that are cascaded into one or more of the first-level interrupts handled here. The precise wiring of these other irqs varies from platform to platform, and are set up & configured in the platform-specific files.
The first-level interrupt controller is wrapped by the VM, which virtualizes the interrupt controller for us. It provides a very simple, fast & efficient API, and so the fasteoi handler is appropriate for this case.
1.8.2