|
Linux Kernel
3.7.1
|
#include <linux/module.h>#include <linux/types.h>#include <linux/sched.h>#include <linux/interrupt.h>#include <linux/kernel_stat.h>#include <linux/errno.h>#include <linux/init.h>#include <asm/setup.h>#include <asm/irq.h>#include <asm/traps.h>#include <asm/page.h>#include <asm/machdep.h>#include <asm/cacheflush.h>#include <asm/irq_regs.h>Go to the source code of this file.
Functions | |
| void __init | init_IRQ (void) |
| void __init | m68k_setup_auto_interrupt (void(*handler)(unsigned int, struct pt_regs *)) |
| void __init | m68k_setup_user_interrupt (unsigned int vec, unsigned int cnt) |
| void | m68k_setup_irq_controller (struct irq_chip *chip, irq_flow_handler_t handle, unsigned int irq, unsigned int cnt) |
| unsigned int | m68k_irq_startup_irq (unsigned int irq) |
| unsigned int | m68k_irq_startup (struct irq_data *data) |
| void | m68k_irq_shutdown (struct irq_data *data) |
| unsigned int | irq_canonicalize (unsigned int irq) |
| EXPORT_SYMBOL (irq_canonicalize) | |
| asmlinkage void | handle_badint (struct pt_regs *regs) |
Variables | |
| u32 | auto_irqhandler_fixup [] |
| u16 | user_irqvec_fixup [] |
| EXPORT_SYMBOL | ( | irq_canonicalize | ) |
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.
| void m68k_setup_irq_controller | ( | struct irq_chip * | chip, |
| irq_flow_handler_t | handle, | ||
| unsigned int | irq, | ||
| unsigned int | cnt | ||
| ) |
m68k_setup_irq_controller : irq chip which controls specified irq : flow handler which handles specified irq : first irq to be managed by the controller : number of irqs to be managed by the controller
Change the controller for the specified range of irq, which will be used to manage these irq. auto/user irq already have a default controller, which can be changed as well, but the controller probably should use m68k_irq_startup/ m68k_irq_shutdown.
m68k_setup_user_interrupt : first user vector interrupt to handle : number of active user vector interrupts
setup user vector interrupts, this includes activating the specified range of interrupts, only then these interrupts can be requested (note: this is different from auto vector interrupts).
| u32 auto_irqhandler_fixup[] |
| u16 user_irqvec_fixup[] |
1.8.2