Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions | Variables
irq_64.c File Reference
#include <linux/sched.h>
#include <linux/linkage.h>
#include <linux/ptrace.h>
#include <linux/errno.h>
#include <linux/kernel_stat.h>
#include <linux/signal.h>
#include <linux/mm.h>
#include <linux/interrupt.h>
#include <linux/slab.h>
#include <linux/random.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/ftrace.h>
#include <linux/irq.h>
#include <linux/kmemleak.h>
#include <asm/ptrace.h>
#include <asm/processor.h>
#include <linux/atomic.h>
#include <asm/irq.h>
#include <asm/io.h>
#include <asm/iommu.h>
#include <asm/upa.h>
#include <asm/oplib.h>
#include <asm/prom.h>
#include <asm/timer.h>
#include <asm/smp.h>
#include <asm/starfire.h>
#include <asm/uaccess.h>
#include <asm/cache.h>
#include <asm/cpudata.h>
#include <asm/auxio.h>
#include <asm/head.h>
#include <asm/hypervisor.h>
#include <asm/cacheflush.h>
#include "entry.h"
#include "cpumap.h"
#include "kstack.h"

Go to the source code of this file.

Data Structures

struct  irq_handler_data
struct  sun5_timer


#define NUM_IVECS   (IMAP_INR + 1)
#define irq_work_pa(__cpu)   &(trap_block[(__cpu)].irq_worklist_pa)
#define irq_choose_cpu(irq, affinity)   real_hard_smp_processor_id()


unsigned char irq_alloc (unsigned int dev_handle, unsigned int dev_ino)
int arch_show_interrupts (struct seq_file *p, int prec)
void irq_install_pre_handler (int irq, void(*func)(unsigned int, void *, void *), void *arg1, void *arg2)
unsigned int build_irq (int inofixup, unsigned long iclr, unsigned long imap)
unsigned int sun4v_build_irq (u32 devhandle, unsigned int devino)
unsigned int sun4v_build_virq (u32 devhandle, unsigned int devino)
void ack_bad_irq (unsigned int irq)
void __irq_entry handler_irq (int pil, struct pt_regs *regs)
void do_softirq (void)
void notrace init_irqwork_curcpu (void)
void __cpuinit notrace sun4v_register_mondo_queues (int this_cpu)
void __init init_IRQ (void)


struct ino_bucketivector_table
unsigned long ivector_table_pa
voidhardirq_stack [NR_CPUS]
voidsoftirq_stack [NR_CPUS]

Macro Definition Documentation

#define irq_choose_cpu (   irq,
)    real_hard_smp_processor_id()

Definition at line 237 of file irq_64.c.

#define irq_work_pa (   __cpu)    &(trap_block[(__cpu)].irq_worklist_pa)

Definition at line 108 of file irq_64.c.

#define NUM_IVECS   (IMAP_INR + 1)

Definition at line 50 of file irq_64.c.

Function Documentation

void ack_bad_irq ( unsigned int  irq)

Definition at line 644 of file irq_64.c.

int arch_show_interrupts ( struct seq_file p,
int  prec 

Definition at line 163 of file irq_64.c.

unsigned int build_irq ( int  inofixup,
unsigned long  iclr,
unsigned long  imap 

Definition at line 503 of file irq_64.c.

void do_softirq ( void  )

Definition at line 701 of file irq_64.c.

void __irq_entry handler_irq ( int  pil,
struct pt_regs regs 

Definition at line 658 of file irq_64.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 936 of file irq_64.c.

void notrace init_irqwork_curcpu ( void  )

Definition at line 820 of file irq_64.c.

unsigned char irq_alloc ( unsigned int  dev_handle,
unsigned int  dev_ino 

Definition at line 117 of file irq_64.c.

void irq_install_pre_handler ( int  irq,
void(*)(unsigned int, void *, void *)  func,
void arg1,
void arg2 

Definition at line 490 of file irq_64.c.

unsigned int sun4v_build_irq ( u32  devhandle,
unsigned int  devino 

Definition at line 580 of file irq_64.c.

unsigned int sun4v_build_virq ( u32  devhandle,
unsigned int  devino 

Definition at line 587 of file irq_64.c.

void __cpuinit notrace sun4v_register_mondo_queues ( int  this_cpu)

Definition at line 851 of file irq_64.c.

Variable Documentation

unsigned int dev_handle

Definition at line 111 of file irq_64.c.

unsigned int dev_ino

Definition at line 112 of file irq_64.c.

void* hardirq_stack[NR_CPUS]

Definition at line 655 of file irq_64.c.

unsigned int in_use

Definition at line 113 of file irq_64.c.

struct ino_bucket* ivector_table

Definition at line 52 of file irq_64.c.

unsigned long ivector_table_pa

Definition at line 53 of file irq_64.c.

void* softirq_stack[NR_CPUS]

Definition at line 656 of file irq_64.c.