Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

sparc/kernel/irq.c File Reference

#include <linux/config.h>
#include <linux/ptrace.h>
#include <linux/errno.h>
#include <linux/linkage.h>
#include <linux/kernel_stat.h>
#include <linux/signal.h>
#include <linux/sched.h>
#include <linux/interrupt.h>
#include <linux/malloc.h>
#include <linux/random.h>
#include <linux/init.h>
#include <linux/smp.h>
#include <linux/smp_lock.h>
#include <linux/delay.h>
#include <linux/tasks.h>
#include <asm/ptrace.h>
#include <asm/processor.h>
#include <asm/system.h>
#include <asm/psr.h>
#include <asm/smp.h>
#include <asm/vaddrs.h>
#include <asm/timer.h>
#include <asm/openprom.h>
#include <asm/oplib.h>
#include <asm/traps.h>
#include <asm/irq.h>
#include <asm/io.h>
#include <asm/pgtable.h>
#include <asm/spinlock.h>
#include <asm/hardirq.h>
#include <asm/softirq.h>
#include <asm/pcic.h>

Include dependency graph for sparc/kernel/irq.c:

Go to the source code of this file.

Defines

#define MAX_STATIC_ALLOC   4
#define INSTANTIATE(table)

Functions

static void irq_panic (void)
int get_irq_list (char *buf)
void free_irq (unsigned int irq, void *dev_id)
void unexpected_irq (int irq, void *dev_id, struct pt_regs *regs)
void handler_irq (int irq, struct pt_regs *regs)
int request_fast_irq (unsigned int irq, void(*handler)(int, void *, struct pt_regs *), unsigned long irqflags, const char *devname)
int request_irq (unsigned int irq, void(*handler)(int, void *, struct pt_regs *), unsigned long irqflags, const char *devname, void *dev_id)
unsigned long probe_irq_on (void)
int probe_irq_off (unsigned long mask)
unsigned long __init init_IRQ (unsigned long memory)

Variables

void(* init_timers )(void(*)(int, void *, struct pt_regs *))
irqaction static_irqaction [MAX_STATIC_ALLOC]
int static_irq_count = 0
irqactionirq_action [NR_IRQS+1]
unsigned int local_bh_count
unsigned int local_irq_count


Define Documentation

#define INSTANTIATE table   ) 
 

Value:

table[SP_TRAP_IRQ1+(cpu_irq-1)].inst_one = SPARC_RD_PSR_L0; \
        table[SP_TRAP_IRQ1+(cpu_irq-1)].inst_two = \
                SPARC_BRANCH((unsigned long) handler, \
                             (unsigned long) &table[SP_TRAP_IRQ1+(cpu_irq-1)].inst_two);\
        table[SP_TRAP_IRQ1+(cpu_irq-1)].inst_three = SPARC_RD_WIM_L3; \
        table[SP_TRAP_IRQ1+(cpu_irq-1)].inst_four = SPARC_NOP;

Referenced by request_fast_irq().

#define MAX_STATIC_ALLOC   4
 

Definition at line 90 of file sparc/kernel/irq.c.


Function Documentation

void free_irq unsigned int  irq,
void *  dev_id
 

Definition at line 137 of file sparc/kernel/irq.c.

References irqaction::dev_id, disable_irq, irqaction::flags, irqaction::handler, kfree_s(), irqaction::name, irqaction::next, NR_IRQS, NULL, printk, restore_flags, SA_SHIRQ, save_and_cli, sparc_cpu_model, sun4d, sun4d_free_irq(), and tmp.

Here is the call graph for this function:

int get_irq_list char *  buf  ) 
 

Definition at line 99 of file sparc/kernel/irq.c.

References cpu_logical_map, irqaction::flags, i, kernel_stat::irqs, j, kstat, kstat_irqs(), len, irqaction::name, irqaction::next, NR_IRQS, SA_INTERRUPT, smp_num_cpus, sparc_cpu_model, sprintf(), sun4d, and sun4d_get_irq_list().

Here is the call graph for this function:

void handler_irq int  irq,
struct pt_regs regs
 

Definition at line 486 of file sparc/kernel/irq.c.

References irqaction::dev_id, disable_pil_irq, enable_pil_irq, irqaction::handler, irq_enter, irq_exit, kernel_stat::irqs, kstat, irqaction::next, smp4m_irq_rotate(), smp_processor_id, and unexpected_irq().

Referenced by smp_percpu_timer_interrupt().

Here is the call graph for this function:

unsigned long __init init_IRQ unsigned long  memory  ) 
 

Definition at line 716 of file sparc/kernel/irq.c.

References ap1000, ap_init_IRQ(), pci_present, pcic_probe(), prom_printf, sparc_cpu_model, sun4, sun4c, sun4d, sun4m, and sun4m_pci_init_IRQ().

Here is the call graph for this function:

static void irq_panic void   )  [static]
 

Definition at line 67 of file sparc/kernel/irq.c.

References cputypval, prom_halt(), and prom_printf.

Here is the call graph for this function:

int probe_irq_off unsigned long  mask  ) 
 

Definition at line 703 of file sparc/kernel/irq.c.

unsigned long probe_irq_on void   ) 
 

Definition at line 698 of file sparc/kernel/irq.c.

int request_fast_irq unsigned int  irq,
void(*)(int, void *, struct pt_regs *)  handler,
unsigned long  irqflags,
const char *  devname
 

Definition at line 534 of file sparc/kernel/irq.c.

References irqaction::dev_id, EBUSY, EINVAL, enable_irq, ENOMEM, irqaction::flags, flush_cache_all, irqaction::handler, INSTANTIATE, kmalloc(), irqaction::mask, irqaction::name, irqaction::next, NR_IRQS, NULL, panic(), printk, restore_flags, SA_SHIRQ, save_and_cli, sparc_ttable, and static_irq_count.

Referenced by sun_fd_request_irq().

Here is the call graph for this function:

int request_irq unsigned int  irq,
void(*)(int, void *, struct pt_regs *)  handler,
unsigned long  irqflags,
const char *  devname,
void *  dev_id
 

Definition at line 622 of file sparc/kernel/irq.c.

References EBUSY, EINVAL, enable_irq, ENOMEM, kmalloc(), handler::mask, handler::next, irqaction::next, NR_IRQS, NULL, printk, restore_flags, SA_INTERRUPT, SA_SHIRQ, save_and_cli, sparc_cpu_model, static_irq_count, sun4d, sun4d_request_irq(), and tmp.

Here is the call graph for this function:

void unexpected_irq int  irq,
void *  dev_id,
struct pt_regs regs
 

Definition at line 463 of file sparc/kernel/irq.c.

References irqaction::handler, irqaction::name, pt_regs::npc, NR_IRQS, panic(), pt_regs::pc, printk, prom_printf, and pt_regs::u_regs.

Here is the call graph for this function:


Variable Documentation

void(* init_timers)(void(*)(int, void *, struct pt_regs *))
 

Initial value:

    (void (*)(void (*)(int, void *,struct pt_regs *))) irq_panic

Definition at line 74 of file sparc/kernel/irq.c.

Referenced by __initfunc(), ap_init_IRQ(), and time_init().

struct irqaction* irq_action[NR_IRQS+1]
 

Initial value:

 {
          NULL, NULL, NULL, NULL, NULL, NULL , NULL, NULL,
          NULL, NULL, NULL, NULL, NULL, NULL , NULL, NULL
}

Definition at line 94 of file sparc/kernel/irq.c.

unsigned int local_bh_count
 

Definition at line 198 of file sparc/kernel/irq.c.

unsigned int local_irq_count
 

Definition at line 199 of file sparc/kernel/irq.c.

int static_irq_count = 0
 

Definition at line 92 of file sparc/kernel/irq.c.

struct irqaction static_irqaction[MAX_STATIC_ALLOC]
 

Definition at line 91 of file sparc/kernel/irq.c.