Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Functions | Variables
ints.c File Reference
#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.


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)


u32 auto_irqhandler_fixup []
u16 user_irqvec_fixup []

Function Documentation

EXPORT_SYMBOL ( irq_canonicalize  )
asmlinkage void handle_badint ( struct pt_regs regs)

Definition at line 171 of file ints.c.

void __init init_IRQ ( void  )

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.

Definition at line 57 of file ints.c.

unsigned int irq_canonicalize ( unsigned int  irq)

Definition at line 159 of file ints.c.

void m68k_irq_shutdown ( struct irq_data data)

Definition at line 148 of file ints.c.

unsigned int m68k_irq_startup ( struct irq_data data)

Definition at line 143 of file ints.c.

unsigned int m68k_irq_startup_irq ( unsigned int  irq)

Definition at line 134 of file ints.c.

void __init m68k_setup_auto_interrupt ( void(*)(unsigned int, struct pt_regs *)  handler)

m68k_setup_auto_interrupt : called from auto vector interrupts

setup the handler to be called from auto vector interrupts instead of the standard do_IRQ(), it will be called with irq numbers in the range from IRQ_AUTO_1 - IRQ_AUTO_7.

Definition at line 81 of file ints.c.

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.

Definition at line 121 of file ints.c.

void __init m68k_setup_user_interrupt ( unsigned int  vec,
unsigned int  cnt 

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).

Definition at line 97 of file ints.c.

Variable Documentation

u32 auto_irqhandler_fixup[]
u16 user_irqvec_fixup[]