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

sun4d_irq.c File Reference

#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 <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/sbus.h>
#include <asm/sbi.h>

Include dependency graph for sun4d_irq.c:

Go to the source code of this file.

Defines

#define TIMER_IRQ   10
#define MAX_STATIC_ALLOC   4

Functions

int sun4d_get_irq_list (char *buf)
void sun4d_free_irq (unsigned int irq, void *dev_id)
void unexpected_irq (int, void *, struct pt_regs *)
void sun4d_handler_irq (int irq, struct pt_regs *regs)
unsigned int sun4d_build_irq (struct linux_sbus_device *sdev, int irq)
int sun4d_request_irq (unsigned int irq, void(*handler)(int, void *, struct pt_regs *), unsigned long irqflags, const char *devname, void *dev_id)
static void sun4d_disable_irq (unsigned int irq)
static void sun4d_enable_irq (unsigned int irq)
static void sun4d_clear_clock_irq (void)
static void sun4d_clear_profile_irq (int cpu)
static void sun4d_load_profile_irq (int cpu, unsigned int limit)
 __initfunc (static void sun4d_init_timers(void(*counter_fn)(int, void *, struct pt_regs *)))
 __initfunc (void sun4d_init_sbi_irq(void))
static char * sun4d_irq_itoa (unsigned int irq)

Variables

sun4d_timer_regssun4d_timers
irqaction static_irqaction [MAX_STATIC_ALLOC]
int static_irq_count
unsigned char cpu_leds [32]
irqactionirq_action []
sbus_actionsbus_actions
static int pil_to_sbus []
static int sbus_to_pil []
static int nsbi


Define Documentation

#define MAX_STATIC_ALLOC   4
 

Definition at line 45 of file sun4d_irq.c.

#define TIMER_IRQ   10
 

Definition at line 43 of file sun4d_irq.c.


Function Documentation

__initfunc void   sun4d_init_sbi_irq(void)  ) 
 

Definition at line 495 of file sun4d_irq.c.

References acquire_sbi(), linux_sbus::board, boot_cpu_id, linux_sbus::devid, for_each_sbus, kmalloc(), mask, memset, nsbi, printk, release_sbi(), sbus_actions, set_sbi_tid(), and xffffffff.

Here is the call graph for this function:

__initfunc static void   sun4d_init_timers(void(*counter_fn)(int, void *, struct pt_regs *))  ) 
 

Definition at line 434 of file sun4d_irq.c.

References __restore_flags, __save_and_cli, boot_cpu_id, BW_TIMER_LIMIT, cpu, CSR_BASE, HZ, tt_entry::inst_four, tt_entry::inst_one, tt_entry::inst_three, tt_entry::inst_two, sun4d_timer_regs::l10_cur_count, sun4d_timer_regs::l10_timer_limit, linux_num_cpus, lvl14_save, master_l10_counter, master_l10_limit, prom_cpuinfo::mid, NULL, PAGE_SIZE, prom_halt(), prom_printf, real_irq_entry, request_irq(), SA_INTERRUPT, SP_TRAP_IRQ1, sparc_alloc_io(), sparc_ttable, sun4d_load_profile_irq(), TIMER_IRQ, x0, and xf.

Here is the call graph for this function:

unsigned int sun4d_build_irq struct linux_sbus_device sdev,
int  irq
 

Definition at line 240 of file sun4d_irq.c.

References linux_sbus::board, linux_sbus_device::my_bus, pil_to_sbus, and linux_sbus_device::slot.

Referenced by __initfunc().

static void sun4d_clear_clock_irq void   )  [static]
 

Definition at line 418 of file sun4d_irq.c.

References sun4d_timer_regs::l10_timer_limit.

static void sun4d_clear_profile_irq int  cpu  )  [static]
 

Definition at line 424 of file sun4d_irq.c.

References bw_get_prof_limit().

Here is the call graph for this function:

static void sun4d_disable_irq unsigned int  irq  )  [static]
 

Definition at line 320 of file sun4d_irq.c.

References cc_get_imsk(), cc_get_imsk_other(), cc_set_imsk(), cc_set_imsk_other(), NR_IRQS, sbus_to_pil, spin_lock_irqsave, and spin_unlock_irqrestore.

Here is the call graph for this function:

static void sun4d_enable_irq unsigned int  irq  )  [static]
 

Definition at line 337 of file sun4d_irq.c.

References cc_get_imsk(), cc_get_imsk_other(), cc_set_imsk(), cc_set_imsk_other(), NR_IRQS, sbus_to_pil, spin_lock_irqsave, and spin_unlock_irqrestore.

Here is the call graph for this function:

void sun4d_free_irq unsigned int  irq,
void *  dev_id
 

Definition at line 129 of file sun4d_irq.c.

References sbus_action::action, irqaction::dev_id, disable_irq, irqaction::flags, kfree_s(), irqaction::name, irqaction::next, NULL, printk, restore_flags, SA_SHIRQ, save_and_cli, sbus_actions, and tmp.

Referenced by free_irq().

Here is the call graph for this function:

int sun4d_get_irq_list char *  buf  ) 
 

Definition at line 73 of file sun4d_irq.c.

References sbus_action::action, cpu_logical_map, irqaction::flags, i, kernel_stat::irqs, j, k, kstat, kstat_irqs(), len, irqaction::name, irqaction::next, NR_IRQS, nsbi, pil_to_sbus, SA_INTERRUPT, sbus_actions, smp_num_cpus, sprintf(), and x.

Referenced by get_irq_list().

Here is the call graph for this function:

void sun4d_handler_irq int  irq,
struct pt_regs regs
 

Definition at line 184 of file sun4d_irq.c.

References acquire_sbi(), sbus_action::action, bw_clear_intr_mask(), bw_get_intr_mask(), cc_get_ipen(), cc_set_iclr(), cpu, irqaction::dev_id, irqaction::handler, irq_enter, irq_exit, kernel_stat::irqs, kstat, mask, irqaction::next, pil_to_sbus, release_sbi(), SBI2DEVID, sbus_actions, smp_processor_id, unexpected_irq(), and xf.

Here is the call graph for this function:

static char* sun4d_irq_itoa unsigned int  irq  )  [static]
 

Definition at line 521 of file sun4d_irq.c.

References sbus_to_pil, and sprintf().

Here is the call graph for this function:

static void sun4d_load_profile_irq int  cpu,
unsigned int  limit
[static]
 

Definition at line 429 of file sun4d_irq.c.

References bw_set_prof_limit().

Referenced by __initfunc().

Here is the call graph for this function:

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

Definition at line 250 of file sun4d_irq.c.

References sbus_action::action, irqaction::dev_id, EBUSY, EINVAL, enable_irq, ENOMEM, irqaction::flags, irqaction::handler, kmalloc(), irqaction::mask, irqaction::name, irqaction::next, NULL, printk, restore_flags, SA_INTERRUPT, SA_SHIRQ, save_and_cli, sbus_actions, static_irq_count, and tmp.

Referenced by request_irq().

Here is the call graph for this function:

void unexpected_irq int  ,
void *  ,
struct pt_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

unsigned char cpu_leds[32]
 

Definition at line 48 of file sun4d_irq.c.

Referenced by __initfunc(), show_leds(), and smp4d_percpu_timer_interrupt().

struct irqaction* irq_action[]
 

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

int nsbi [static]
 

Definition at line 68 of file sun4d_irq.c.

Referenced by __initfunc(), and sun4d_get_irq_list().

int pil_to_sbus[] [static]
 

Initial value:

 {
        0, 0, 1, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 0,
}

Definition at line 60 of file sun4d_irq.c.

Referenced by sun4d_build_irq(), sun4d_get_irq_list(), and sun4d_handler_irq().

struct sbus_action * sbus_actions
 

Referenced by __initfunc(), sun4d_free_irq(), sun4d_get_irq_list(), sun4d_handler_irq(), and sun4d_request_irq().

int sbus_to_pil[] [static]
 

Initial value:

 {
        0, 2, 3, 5, 7, 9, 11, 13,
}

Definition at line 64 of file sun4d_irq.c.

Referenced by sun4d_disable_irq(), sun4d_enable_irq(), and sun4d_irq_itoa().

int static_irq_count
 

Definition at line 151 of file mips/baget/irq.c.

struct irqaction static_irqaction[MAX_STATIC_ALLOC]
 

Definition at line 150 of file mips/baget/irq.c.

struct sun4d_timer_regs* sun4d_timers
 

Definition at line 42 of file sun4d_irq.c.