You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge git://git.infradead.org/~dhowells/irq-2.6
* git://git.infradead.org/~dhowells/irq-2.6: IRQ: Maintain regs pointer globally rather than passing to IRQ handlers IRQ: Typedef the IRQ handler function type IRQ: Typedef the IRQ flow handler function type
This commit is contained in:
@@ -121,15 +121,14 @@ unsigned long frv_dma_inprogress;
|
||||
/*
|
||||
* DMA irq handler - determine channel involved, grab status and call real handler
|
||||
*/
|
||||
static irqreturn_t dma_irq_handler(int irq, void *_channel, struct pt_regs *regs)
|
||||
static irqreturn_t dma_irq_handler(int irq, void *_channel)
|
||||
{
|
||||
struct frv_dma_channel *channel = _channel;
|
||||
|
||||
frv_clear_dma_inprogress(channel - frv_dma_channels);
|
||||
return channel->handler(channel - frv_dma_channels,
|
||||
__get_DMAC(channel->ioaddr, CSTR),
|
||||
channel->data,
|
||||
regs);
|
||||
channel->data);
|
||||
|
||||
} /* end dma_irq_handler() */
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@ static struct irq_chip frv_fpga_pic = {
|
||||
/*
|
||||
* FPGA PIC interrupt handler
|
||||
*/
|
||||
static irqreturn_t fpga_interrupt(int irq, void *_mask, struct pt_regs *regs)
|
||||
static irqreturn_t fpga_interrupt(int irq, void *_mask)
|
||||
{
|
||||
uint16_t imr, mask = (unsigned long) _mask;
|
||||
|
||||
@@ -95,7 +95,7 @@ static irqreturn_t fpga_interrupt(int irq, void *_mask, struct pt_regs *regs)
|
||||
irq = 31 - irq;
|
||||
mask &= ~(1 << irq);
|
||||
|
||||
generic_handle_irq(IRQ_BASE_FPGA + irq, regs);
|
||||
generic_handle_irq(IRQ_BASE_FPGA + irq);
|
||||
}
|
||||
|
||||
return IRQ_HANDLED;
|
||||
|
||||
@@ -79,7 +79,7 @@ static struct irq_chip frv_fpga_pic = {
|
||||
/*
|
||||
* FPGA PIC interrupt handler
|
||||
*/
|
||||
static irqreturn_t fpga_interrupt(int irq, void *_mask, struct pt_regs *regs)
|
||||
static irqreturn_t fpga_interrupt(int irq, void *_mask)
|
||||
{
|
||||
uint16_t imr, mask = (unsigned long) _mask;
|
||||
|
||||
@@ -94,7 +94,7 @@ static irqreturn_t fpga_interrupt(int irq, void *_mask, struct pt_regs *regs)
|
||||
irq = 31 - irq;
|
||||
mask &= ~(1 << irq);
|
||||
|
||||
generic_irq_handle(IRQ_BASE_FPGA + irq, regs);
|
||||
generic_irq_handle(IRQ_BASE_FPGA + irq);
|
||||
}
|
||||
|
||||
return IRQ_HANDLED;
|
||||
|
||||
@@ -90,7 +90,7 @@ static struct irq_chip frv_mb93493_pic = {
|
||||
/*
|
||||
* MB93493 PIC interrupt handler
|
||||
*/
|
||||
static irqreturn_t mb93493_interrupt(int irq, void *_piqsr, struct pt_regs *regs)
|
||||
static irqreturn_t mb93493_interrupt(int irq, void *_piqsr)
|
||||
{
|
||||
volatile void *piqsr = _piqsr;
|
||||
uint32_t iqsr;
|
||||
@@ -106,7 +106,7 @@ static irqreturn_t mb93493_interrupt(int irq, void *_piqsr, struct pt_regs *regs
|
||||
irq = 31 - irq;
|
||||
iqsr &= ~(1 << irq);
|
||||
|
||||
generic_handle_irq(IRQ_BASE_MB93493 + irq, regs);
|
||||
generic_handle_irq(IRQ_BASE_MB93493 + irq);
|
||||
}
|
||||
|
||||
return IRQ_HANDLED;
|
||||
|
||||
@@ -143,7 +143,7 @@ static struct irq_chip frv_cpu_pic = {
|
||||
asmlinkage void do_IRQ(void)
|
||||
{
|
||||
irq_enter();
|
||||
generic_handle_irq(__get_IRL(), __frame);
|
||||
generic_handle_irq(__get_IRL());
|
||||
irq_exit();
|
||||
}
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ unsigned long __nongprelbss __dsu_clock_speed_HZ;
|
||||
unsigned long __nongprelbss __serial_clock_speed_HZ;
|
||||
unsigned long __delay_loops_MHz;
|
||||
|
||||
static irqreturn_t timer_interrupt(int irq, void *dummy, struct pt_regs *regs);
|
||||
static irqreturn_t timer_interrupt(int irq, void *dummy);
|
||||
|
||||
static struct irqaction timer_irq = {
|
||||
timer_interrupt, IRQF_DISABLED, CPU_MASK_NONE, "timer", NULL, NULL
|
||||
@@ -55,7 +55,7 @@ static inline int set_rtc_mmss(unsigned long nowtime)
|
||||
* timer_interrupt() needs to keep up the real-time clock,
|
||||
* as well as call the "do_timer()" routine every clocktick
|
||||
*/
|
||||
static irqreturn_t timer_interrupt(int irq, void *dummy, struct pt_regs * regs)
|
||||
static irqreturn_t timer_interrupt(int irq, void *dummy)
|
||||
{
|
||||
/* last time the cmos clock got updated */
|
||||
static long last_rtc_update = 0;
|
||||
@@ -70,8 +70,8 @@ static irqreturn_t timer_interrupt(int irq, void *dummy, struct pt_regs * regs)
|
||||
write_seqlock(&xtime_lock);
|
||||
|
||||
do_timer(1);
|
||||
update_process_times(user_mode(regs));
|
||||
profile_tick(CPU_PROFILING, regs);
|
||||
update_process_times(user_mode(get_irq_regs()));
|
||||
profile_tick(CPU_PROFILING);
|
||||
|
||||
/*
|
||||
* If we have an externally synchronized Linux clock, then update
|
||||
|
||||
+10
-8
@@ -1193,11 +1193,11 @@ EXPORT_SYMBOL(switch_ipi_to_APIC_timer);
|
||||
* value into /proc/profile.
|
||||
*/
|
||||
|
||||
inline void smp_local_timer_interrupt(struct pt_regs * regs)
|
||||
inline void smp_local_timer_interrupt(void)
|
||||
{
|
||||
profile_tick(CPU_PROFILING, regs);
|
||||
profile_tick(CPU_PROFILING);
|
||||
#ifdef CONFIG_SMP
|
||||
update_process_times(user_mode_vm(regs));
|
||||
update_process_times(user_mode_vm(irq_regs));
|
||||
#endif
|
||||
|
||||
/*
|
||||
@@ -1223,6 +1223,7 @@ inline void smp_local_timer_interrupt(struct pt_regs * regs)
|
||||
|
||||
fastcall void smp_apic_timer_interrupt(struct pt_regs *regs)
|
||||
{
|
||||
struct pt_regs *old_regs = set_irq_regs(regs);
|
||||
int cpu = smp_processor_id();
|
||||
|
||||
/*
|
||||
@@ -1241,12 +1242,13 @@ fastcall void smp_apic_timer_interrupt(struct pt_regs *regs)
|
||||
* interrupt lock, which is the WrongThing (tm) to do.
|
||||
*/
|
||||
irq_enter();
|
||||
smp_local_timer_interrupt(regs);
|
||||
smp_local_timer_interrupt();
|
||||
irq_exit();
|
||||
set_irq_regs(old_regs);
|
||||
}
|
||||
|
||||
#ifndef CONFIG_SMP
|
||||
static void up_apic_timer_interrupt_call(struct pt_regs *regs)
|
||||
static void up_apic_timer_interrupt_call(void)
|
||||
{
|
||||
int cpu = smp_processor_id();
|
||||
|
||||
@@ -1255,11 +1257,11 @@ static void up_apic_timer_interrupt_call(struct pt_regs *regs)
|
||||
*/
|
||||
per_cpu(irq_stat, cpu).apic_timer_irqs++;
|
||||
|
||||
smp_local_timer_interrupt(regs);
|
||||
smp_local_timer_interrupt();
|
||||
}
|
||||
#endif
|
||||
|
||||
void smp_send_timer_broadcast_ipi(struct pt_regs *regs)
|
||||
void smp_send_timer_broadcast_ipi(void)
|
||||
{
|
||||
cpumask_t mask;
|
||||
|
||||
@@ -1272,7 +1274,7 @@ void smp_send_timer_broadcast_ipi(struct pt_regs *regs)
|
||||
* We can directly call the apic timer interrupt handler
|
||||
* in UP case. Minus all irq related functions
|
||||
*/
|
||||
up_apic_timer_interrupt_call(regs);
|
||||
up_apic_timer_interrupt_call();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -335,13 +335,13 @@ void init_8259A(int auto_eoi)
|
||||
*/
|
||||
|
||||
|
||||
static irqreturn_t math_error_irq(int cpl, void *dev_id, struct pt_regs *regs)
|
||||
static irqreturn_t math_error_irq(int cpl, void *dev_id)
|
||||
{
|
||||
extern void math_error(void __user *);
|
||||
outb(0,0xF0);
|
||||
if (ignore_fpu_irq || !boot_cpu_data.hard_math)
|
||||
return IRQ_NONE;
|
||||
math_error((void __user *)regs->eip);
|
||||
math_error((void __user *)get_irq_regs()->eip);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
|
||||
@@ -53,6 +53,7 @@ static union irq_ctx *softirq_ctx[NR_CPUS] __read_mostly;
|
||||
*/
|
||||
fastcall unsigned int do_IRQ(struct pt_regs *regs)
|
||||
{
|
||||
struct pt_regs *old_regs;
|
||||
/* high bit used in ret_from_ code */
|
||||
int irq = ~regs->orig_eax;
|
||||
struct irq_desc *desc = irq_desc + irq;
|
||||
@@ -67,6 +68,7 @@ fastcall unsigned int do_IRQ(struct pt_regs *regs)
|
||||
BUG();
|
||||
}
|
||||
|
||||
old_regs = set_irq_regs(regs);
|
||||
irq_enter();
|
||||
#ifdef CONFIG_DEBUG_STACKOVERFLOW
|
||||
/* Debugging check for stack overflow: is there less than 1KB free? */
|
||||
@@ -95,7 +97,7 @@ fastcall unsigned int do_IRQ(struct pt_regs *regs)
|
||||
* current stack (which is the irq stack already after all)
|
||||
*/
|
||||
if (curctx != irqctx) {
|
||||
int arg1, arg2, arg3, ebx;
|
||||
int arg1, arg2, ebx;
|
||||
|
||||
/* build the stack frame on the IRQ stack */
|
||||
isp = (u32*) ((char*)irqctx + sizeof(*irqctx));
|
||||
@@ -114,17 +116,17 @@ fastcall unsigned int do_IRQ(struct pt_regs *regs)
|
||||
" xchgl %%ebx,%%esp \n"
|
||||
" call *%%edi \n"
|
||||
" movl %%ebx,%%esp \n"
|
||||
: "=a" (arg1), "=d" (arg2), "=c" (arg3), "=b" (ebx)
|
||||
: "0" (irq), "1" (desc), "2" (regs), "3" (isp),
|
||||
: "=a" (arg1), "=d" (arg2), "=b" (ebx)
|
||||
: "0" (irq), "1" (desc), "2" (isp),
|
||||
"D" (desc->handle_irq)
|
||||
: "memory", "cc"
|
||||
);
|
||||
} else
|
||||
#endif
|
||||
desc->handle_irq(irq, desc, regs);
|
||||
desc->handle_irq(irq, desc);
|
||||
|
||||
irq_exit();
|
||||
|
||||
set_irq_regs(old_regs);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -321,6 +321,7 @@ static inline void leave_mm (unsigned long cpu)
|
||||
|
||||
fastcall void smp_invalidate_interrupt(struct pt_regs *regs)
|
||||
{
|
||||
struct pt_regs *old_regs = set_irq_regs(regs);
|
||||
unsigned long cpu;
|
||||
|
||||
cpu = get_cpu();
|
||||
@@ -351,6 +352,7 @@ fastcall void smp_invalidate_interrupt(struct pt_regs *regs)
|
||||
smp_mb__after_clear_bit();
|
||||
out:
|
||||
put_cpu_no_resched();
|
||||
set_irq_regs(old_regs);
|
||||
}
|
||||
|
||||
static void flush_tlb_others(cpumask_t cpumask, struct mm_struct *mm,
|
||||
@@ -605,11 +607,14 @@ void smp_send_stop(void)
|
||||
*/
|
||||
fastcall void smp_reschedule_interrupt(struct pt_regs *regs)
|
||||
{
|
||||
struct pt_regs *old_regs = set_irq_regs(regs);
|
||||
ack_APIC_irq();
|
||||
set_irq_regs(old_regs);
|
||||
}
|
||||
|
||||
fastcall void smp_call_function_interrupt(struct pt_regs *regs)
|
||||
{
|
||||
struct pt_regs *old_regs = set_irq_regs(regs);
|
||||
void (*func) (void *info) = call_data->func;
|
||||
void *info = call_data->info;
|
||||
int wait = call_data->wait;
|
||||
@@ -632,6 +637,7 @@ fastcall void smp_call_function_interrupt(struct pt_regs *regs)
|
||||
mb();
|
||||
atomic_inc(&call_data->finished);
|
||||
}
|
||||
set_irq_regs(old_regs);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -161,7 +161,7 @@ EXPORT_SYMBOL(profile_pc);
|
||||
* Time Stamp Counter value at the time of the timer interrupt, so that
|
||||
* we later on can estimate the time of day more exactly.
|
||||
*/
|
||||
irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
|
||||
irqreturn_t timer_interrupt(int irq, void *dev_id)
|
||||
{
|
||||
/*
|
||||
* Here we are in the timer irq handler. We just have irqs locally
|
||||
@@ -188,7 +188,7 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
|
||||
}
|
||||
#endif
|
||||
|
||||
do_timer_interrupt_hook(regs);
|
||||
do_timer_interrupt_hook();
|
||||
|
||||
|
||||
if (MCA_bus) {
|
||||
@@ -209,7 +209,7 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
|
||||
|
||||
#ifdef CONFIG_X86_LOCAL_APIC
|
||||
if (using_apic_timer)
|
||||
smp_send_timer_broadcast_ipi(regs);
|
||||
smp_send_timer_broadcast_ipi();
|
||||
#endif
|
||||
|
||||
return IRQ_HANDLED;
|
||||
|
||||
@@ -441,7 +441,7 @@ int hpet_rtc_dropped_irq(void)
|
||||
return 1;
|
||||
}
|
||||
|
||||
irqreturn_t hpet_rtc_interrupt(int irq, void *dev_id, struct pt_regs *regs)
|
||||
irqreturn_t hpet_rtc_interrupt(int irq, void *dev_id)
|
||||
{
|
||||
struct rtc_time curr_time;
|
||||
unsigned long rtc_int_flag = 0;
|
||||
@@ -480,7 +480,7 @@ irqreturn_t hpet_rtc_interrupt(int irq, void *dev_id, struct pt_regs *regs)
|
||||
}
|
||||
if (call_rtc_interrupt) {
|
||||
rtc_int_flag |= (RTC_IRQF | (RTC_NUM_INTS << 8));
|
||||
rtc_interrupt(rtc_int_flag, dev_id, regs);
|
||||
rtc_interrupt(rtc_int_flag, dev_id);
|
||||
}
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
@@ -714,7 +714,7 @@ static int irqbits;
|
||||
| (1 << SIGUSR1) | (1 << SIGUSR2) | (1 << SIGIO) | (1 << SIGURG) \
|
||||
| (1 << SIGUNUSED) )
|
||||
|
||||
static irqreturn_t irq_handler(int intno, void *dev_id, struct pt_regs * regs)
|
||||
static irqreturn_t irq_handler(int intno, void *dev_id)
|
||||
{
|
||||
int irq_bit;
|
||||
unsigned long flags;
|
||||
|
||||
@@ -191,7 +191,7 @@ static struct hw_interrupt_type piix4_virtual_irq_type = {
|
||||
* enable_irq gets the right irq. This 'master' irq is never directly
|
||||
* manipulated by any driver.
|
||||
*/
|
||||
static irqreturn_t piix4_master_intr(int irq, void *dev_id, struct pt_regs * regs)
|
||||
static irqreturn_t piix4_master_intr(int irq, void *dev_id)
|
||||
{
|
||||
int realirq;
|
||||
irq_desc_t *desc;
|
||||
@@ -244,7 +244,7 @@ static irqreturn_t piix4_master_intr(int irq, void *dev_id, struct pt_regs * reg
|
||||
kstat_cpu(smp_processor_id()).irqs[realirq]++;
|
||||
|
||||
if (likely(desc->action != NULL))
|
||||
handle_IRQ_event(realirq, regs, desc->action);
|
||||
handle_IRQ_event(realirq, desc->action);
|
||||
|
||||
if (!(desc->status & IRQ_DISABLED))
|
||||
enable_8259A_irq(realirq);
|
||||
|
||||
@@ -87,7 +87,7 @@ voyager_detect(struct voyager_bios_info *bios)
|
||||
}
|
||||
|
||||
void
|
||||
voyager_system_interrupt(int cpl, void *dev_id, struct pt_regs *regs)
|
||||
voyager_system_interrupt(int cpl, void *dev_id)
|
||||
{
|
||||
printk("Voyager: detected system interrupt\n");
|
||||
}
|
||||
|
||||
@@ -126,10 +126,10 @@ send_QIC_CPI(__u32 cpuset, __u8 cpi)
|
||||
}
|
||||
|
||||
static inline void
|
||||
wrapper_smp_local_timer_interrupt(struct pt_regs *regs)
|
||||
wrapper_smp_local_timer_interrupt(void)
|
||||
{
|
||||
irq_enter();
|
||||
smp_local_timer_interrupt(regs);
|
||||
smp_local_timer_interrupt();
|
||||
irq_exit();
|
||||
}
|
||||
|
||||
@@ -786,7 +786,7 @@ fastcall void
|
||||
smp_vic_sys_interrupt(struct pt_regs *regs)
|
||||
{
|
||||
ack_CPI(VIC_SYS_INT);
|
||||
printk("Voyager SYSTEM INTERRUPT\n");
|
||||
printk("Voyager SYSTEM INTERRUPT\n");
|
||||
}
|
||||
|
||||
/* Handle a voyager CMN_INT; These interrupts occur either because of
|
||||
@@ -1135,7 +1135,9 @@ EXPORT_SYMBOL(smp_call_function);
|
||||
fastcall void
|
||||
smp_apic_timer_interrupt(struct pt_regs *regs)
|
||||
{
|
||||
wrapper_smp_local_timer_interrupt(regs);
|
||||
struct pt_regs *old_regs = set_irq_regs(regs);
|
||||
wrapper_smp_local_timer_interrupt();
|
||||
set_irq_regs(old_regs);
|
||||
}
|
||||
|
||||
/* All of the QUAD interrupt GATES */
|
||||
@@ -1143,7 +1145,9 @@ fastcall void
|
||||
smp_qic_timer_interrupt(struct pt_regs *regs)
|
||||
{
|
||||
ack_QIC_CPI(QIC_TIMER_CPI);
|
||||
wrapper_smp_local_timer_interrupt(regs);
|
||||
struct pt_regs *old_regs = set_irq_regs(regs);
|
||||
wrapper_smp_local_timer_interrupt(void);
|
||||
set_irq_regs(old_regs);
|
||||
}
|
||||
|
||||
fastcall void
|
||||
@@ -1177,6 +1181,7 @@ smp_qic_call_function_interrupt(struct pt_regs *regs)
|
||||
fastcall void
|
||||
smp_vic_cpi_interrupt(struct pt_regs *regs)
|
||||
{
|
||||
struct pt_regs *old_regs = set_irq_regs(regs);
|
||||
__u8 cpu = smp_processor_id();
|
||||
|
||||
if(is_cpu_quad())
|
||||
@@ -1185,7 +1190,7 @@ smp_vic_cpi_interrupt(struct pt_regs *regs)
|
||||
ack_VIC_CPI(VIC_CPI_LEVEL0);
|
||||
|
||||
if(test_and_clear_bit(VIC_TIMER_CPI, &vic_cpi_mailbox[cpu]))
|
||||
wrapper_smp_local_timer_interrupt(regs);
|
||||
wrapper_smp_local_timer_interrupt();
|
||||
if(test_and_clear_bit(VIC_INVALIDATE_CPI, &vic_cpi_mailbox[cpu]))
|
||||
smp_invalidate_interrupt();
|
||||
if(test_and_clear_bit(VIC_RESCHEDULE_CPI, &vic_cpi_mailbox[cpu]))
|
||||
@@ -1194,6 +1199,7 @@ smp_vic_cpi_interrupt(struct pt_regs *regs)
|
||||
smp_enable_irq_interrupt();
|
||||
if(test_and_clear_bit(VIC_CALL_FUNCTION_CPI, &vic_cpi_mailbox[cpu]))
|
||||
smp_call_function_interrupt();
|
||||
set_irq_regs(old_regs);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1266,8 +1272,10 @@ smp_send_stop(void)
|
||||
void
|
||||
smp_vic_timer_interrupt(struct pt_regs *regs)
|
||||
{
|
||||
struct pt_regs *old_regs = set_irq_regs(regs);
|
||||
send_CPI_allbutself(VIC_TIMER_CPI);
|
||||
smp_local_timer_interrupt(regs);
|
||||
smp_local_timer_interrupt();
|
||||
set_irq_regs(old_regs);
|
||||
}
|
||||
|
||||
/* local (per CPU) timer interrupt. It does both profiling and
|
||||
@@ -1279,12 +1287,12 @@ smp_vic_timer_interrupt(struct pt_regs *regs)
|
||||
* value into /proc/profile.
|
||||
*/
|
||||
void
|
||||
smp_local_timer_interrupt(struct pt_regs * regs)
|
||||
smp_local_timer_interrupt(void)
|
||||
{
|
||||
int cpu = smp_processor_id();
|
||||
long weight;
|
||||
|
||||
profile_tick(CPU_PROFILING, regs);
|
||||
profile_tick(CPU_PROFILING);
|
||||
if (--per_cpu(prof_counter, cpu) <= 0) {
|
||||
/*
|
||||
* The multiplier may have changed since the last time we got
|
||||
@@ -1302,7 +1310,7 @@ smp_local_timer_interrupt(struct pt_regs * regs)
|
||||
per_cpu(prof_counter, cpu);
|
||||
}
|
||||
|
||||
update_process_times(user_mode_vm(regs));
|
||||
update_process_times(user_mode_vm(irq_regs));
|
||||
}
|
||||
|
||||
if( ((1<<cpu) & voyager_extended_vic_processors) == 0)
|
||||
|
||||
@@ -138,6 +138,7 @@ void destroy_irq(unsigned int irq)
|
||||
void
|
||||
ia64_handle_irq (ia64_vector vector, struct pt_regs *regs)
|
||||
{
|
||||
struct pt_regs *old_regs = set_irq_regs(regs);
|
||||
unsigned long saved_tpr;
|
||||
|
||||
#if IRQ_DEBUG
|
||||
@@ -183,7 +184,7 @@ ia64_handle_irq (ia64_vector vector, struct pt_regs *regs)
|
||||
ia64_setreg(_IA64_REG_CR_TPR, vector);
|
||||
ia64_srlz_d();
|
||||
|
||||
__do_IRQ(local_vector_to_irq(vector), regs);
|
||||
__do_IRQ(local_vector_to_irq(vector));
|
||||
|
||||
/*
|
||||
* Disable interrupts and send EOI:
|
||||
@@ -200,6 +201,7 @@ ia64_handle_irq (ia64_vector vector, struct pt_regs *regs)
|
||||
* come through until ia64_eoi() has been done.
|
||||
*/
|
||||
irq_exit();
|
||||
set_irq_regs(old_regs);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
|
||||
@@ -60,7 +60,7 @@ machvec_setup (char **arg)
|
||||
EXPORT_SYMBOL(machvec_setup);
|
||||
|
||||
void
|
||||
machvec_timer_interrupt (int irq, void *dev_id, struct pt_regs *regs)
|
||||
machvec_timer_interrupt (int irq, void *dev_id)
|
||||
{
|
||||
}
|
||||
EXPORT_SYMBOL(machvec_timer_interrupt);
|
||||
|
||||
+14
-18
@@ -499,7 +499,7 @@ int cpe_vector = -1;
|
||||
int ia64_cpe_irq = -1;
|
||||
|
||||
static irqreturn_t
|
||||
ia64_mca_cpe_int_handler (int cpe_irq, void *arg, struct pt_regs *ptregs)
|
||||
ia64_mca_cpe_int_handler (int cpe_irq, void *arg)
|
||||
{
|
||||
static unsigned long cpe_history[CPE_HISTORY_LENGTH];
|
||||
static int index;
|
||||
@@ -744,7 +744,7 @@ ia64_mca_wakeup_all(void)
|
||||
* Outputs : None
|
||||
*/
|
||||
static irqreturn_t
|
||||
ia64_mca_rendez_int_handler(int rendez_irq, void *arg, struct pt_regs *regs)
|
||||
ia64_mca_rendez_int_handler(int rendez_irq, void *arg)
|
||||
{
|
||||
unsigned long flags;
|
||||
int cpu = smp_processor_id();
|
||||
@@ -753,8 +753,8 @@ ia64_mca_rendez_int_handler(int rendez_irq, void *arg, struct pt_regs *regs)
|
||||
|
||||
/* Mask all interrupts */
|
||||
local_irq_save(flags);
|
||||
if (notify_die(DIE_MCA_RENDZVOUS_ENTER, "MCA", regs, (long)&nd, 0, 0)
|
||||
== NOTIFY_STOP)
|
||||
if (notify_die(DIE_MCA_RENDZVOUS_ENTER, "MCA", get_irq_regs(),
|
||||
(long)&nd, 0, 0) == NOTIFY_STOP)
|
||||
ia64_mca_spin(__FUNCTION__);
|
||||
|
||||
ia64_mc_info.imi_rendez_checkin[cpu] = IA64_MCA_RENDEZ_CHECKIN_DONE;
|
||||
@@ -763,16 +763,16 @@ ia64_mca_rendez_int_handler(int rendez_irq, void *arg, struct pt_regs *regs)
|
||||
*/
|
||||
ia64_sal_mc_rendez();
|
||||
|
||||
if (notify_die(DIE_MCA_RENDZVOUS_PROCESS, "MCA", regs, (long)&nd, 0, 0)
|
||||
== NOTIFY_STOP)
|
||||
if (notify_die(DIE_MCA_RENDZVOUS_PROCESS, "MCA", get_irq_regs(),
|
||||
(long)&nd, 0, 0) == NOTIFY_STOP)
|
||||
ia64_mca_spin(__FUNCTION__);
|
||||
|
||||
/* Wait for the monarch cpu to exit. */
|
||||
while (monarch_cpu != -1)
|
||||
cpu_relax(); /* spin until monarch leaves */
|
||||
|
||||
if (notify_die(DIE_MCA_RENDZVOUS_LEAVE, "MCA", regs, (long)&nd, 0, 0)
|
||||
== NOTIFY_STOP)
|
||||
if (notify_die(DIE_MCA_RENDZVOUS_LEAVE, "MCA", get_irq_regs(),
|
||||
(long)&nd, 0, 0) == NOTIFY_STOP)
|
||||
ia64_mca_spin(__FUNCTION__);
|
||||
|
||||
/* Enable all interrupts */
|
||||
@@ -791,12 +791,11 @@ ia64_mca_rendez_int_handler(int rendez_irq, void *arg, struct pt_regs *regs)
|
||||
*
|
||||
* Inputs : wakeup_irq (Wakeup-interrupt bit)
|
||||
* arg (Interrupt handler specific argument)
|
||||
* ptregs (Exception frame at the time of the interrupt)
|
||||
* Outputs : None
|
||||
*
|
||||
*/
|
||||
static irqreturn_t
|
||||
ia64_mca_wakeup_int_handler(int wakeup_irq, void *arg, struct pt_regs *ptregs)
|
||||
ia64_mca_wakeup_int_handler(int wakeup_irq, void *arg)
|
||||
{
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
@@ -1261,13 +1260,12 @@ static DECLARE_WORK(cmc_enable_work, ia64_mca_cmc_vector_enable_keventd, NULL);
|
||||
* Inputs
|
||||
* interrupt number
|
||||
* client data arg ptr
|
||||
* saved registers ptr
|
||||
*
|
||||
* Outputs
|
||||
* None
|
||||
*/
|
||||
static irqreturn_t
|
||||
ia64_mca_cmc_int_handler(int cmc_irq, void *arg, struct pt_regs *ptregs)
|
||||
ia64_mca_cmc_int_handler(int cmc_irq, void *arg)
|
||||
{
|
||||
static unsigned long cmc_history[CMC_HISTORY_LENGTH];
|
||||
static int index;
|
||||
@@ -1336,12 +1334,11 @@ out:
|
||||
* Inputs
|
||||
* interrupt number
|
||||
* client data arg ptr
|
||||
* saved registers ptr
|
||||
* Outputs
|
||||
* handled
|
||||
*/
|
||||
static irqreturn_t
|
||||
ia64_mca_cmc_int_caller(int cmc_irq, void *arg, struct pt_regs *ptregs)
|
||||
ia64_mca_cmc_int_caller(int cmc_irq, void *arg)
|
||||
{
|
||||
static int start_count = -1;
|
||||
unsigned int cpuid;
|
||||
@@ -1352,7 +1349,7 @@ ia64_mca_cmc_int_caller(int cmc_irq, void *arg, struct pt_regs *ptregs)
|
||||
if (start_count == -1)
|
||||
start_count = IA64_LOG_COUNT(SAL_INFO_TYPE_CMC);
|
||||
|
||||
ia64_mca_cmc_int_handler(cmc_irq, arg, ptregs);
|
||||
ia64_mca_cmc_int_handler(cmc_irq, arg);
|
||||
|
||||
for (++cpuid ; cpuid < NR_CPUS && !cpu_online(cpuid) ; cpuid++);
|
||||
|
||||
@@ -1403,14 +1400,13 @@ ia64_mca_cmc_poll (unsigned long dummy)
|
||||
* Inputs
|
||||
* interrupt number
|
||||
* client data arg ptr
|
||||
* saved registers ptr
|
||||
* Outputs
|
||||
* handled
|
||||
*/
|
||||
#ifdef CONFIG_ACPI
|
||||
|
||||
static irqreturn_t
|
||||
ia64_mca_cpe_int_caller(int cpe_irq, void *arg, struct pt_regs *ptregs)
|
||||
ia64_mca_cpe_int_caller(int cpe_irq, void *arg)
|
||||
{
|
||||
static int start_count = -1;
|
||||
static int poll_time = MIN_CPE_POLL_INTERVAL;
|
||||
@@ -1422,7 +1418,7 @@ ia64_mca_cpe_int_caller(int cpe_irq, void *arg, struct pt_regs *ptregs)
|
||||
if (start_count == -1)
|
||||
start_count = IA64_LOG_COUNT(SAL_INFO_TYPE_CPE);
|
||||
|
||||
ia64_mca_cpe_int_handler(cpe_irq, arg, ptregs);
|
||||
ia64_mca_cpe_int_handler(cpe_irq, arg);
|
||||
|
||||
for (++cpuid ; cpuid < NR_CPUS && !cpu_online(cpuid) ; cpuid++);
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ static struct time_interpolator itc_interpolator = {
|
||||
};
|
||||
|
||||
static irqreturn_t
|
||||
timer_interrupt (int irq, void *dev_id, struct pt_regs *regs)
|
||||
timer_interrupt (int irq, void *dev_id)
|
||||
{
|
||||
unsigned long new_itm;
|
||||
|
||||
@@ -53,7 +53,7 @@ timer_interrupt (int irq, void *dev_id, struct pt_regs *regs)
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
platform_timer_interrupt(irq, dev_id, regs);
|
||||
platform_timer_interrupt(irq, dev_id);
|
||||
|
||||
new_itm = local_cpu_data->itm_next;
|
||||
|
||||
@@ -61,10 +61,10 @@ timer_interrupt (int irq, void *dev_id, struct pt_regs *regs)
|
||||
printk(KERN_ERR "Oops: timer tick before it's due (itc=%lx,itm=%lx)\n",
|
||||
ia64_get_itc(), new_itm);
|
||||
|
||||
profile_tick(CPU_PROFILING, regs);
|
||||
profile_tick(CPU_PROFILING);
|
||||
|
||||
while (1) {
|
||||
update_process_times(user_mode(regs));
|
||||
update_process_times(user_mode(get_irq_regs()));
|
||||
|
||||
new_itm += local_cpu_data->itm_delta;
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user