Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8774cb81 authored by Al Viro's avatar Al Viro Committed by Linus Torvalds
Browse files

[PATCH] minimal alpha pt_regs fixes

parent 2850bc27
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -129,6 +129,7 @@ unlock:
void
handle_irq(int irq, struct pt_regs * regs)
{	
	struct pt_regs *old_regs;
	/* 
	 * We ack quickly, we don't want the irq controller
	 * thinking we're snobs just because some other CPU has
@@ -149,6 +150,7 @@ handle_irq(int irq, struct pt_regs * regs)
		return;
	}

	old_regs = set_irq_regs(regs);
	irq_enter();
	/*
	 * __do_IRQ() must be called with IPL_MAX. Note that we do not
@@ -157,6 +159,7 @@ handle_irq(int irq, struct pt_regs * regs)
	 * at IPL 0.
	 */
	local_irq_disable();
	__do_IRQ(irq, regs);
	__do_IRQ(irq);
	irq_exit();
	set_irq_regs(old_regs);
}
+1 −1
Original line number Diff line number Diff line
@@ -133,7 +133,7 @@ extern void smp_percpu_timer_interrupt(struct pt_regs *);
/* extern void reset_for_srm(void); */

/* time.c */
extern irqreturn_t timer_interrupt(int irq, void *dev, struct pt_regs * regs);
extern irqreturn_t timer_interrupt(int irq, void *dev);
extern void common_init_rtc(void);
extern unsigned long est_cycle_freq;

+5 −1
Original line number Diff line number Diff line
@@ -515,12 +515,15 @@ smp_cpus_done(unsigned int max_cpus)
void
smp_percpu_timer_interrupt(struct pt_regs *regs)
{
	struct pt_regs *old_regs;
	int cpu = smp_processor_id();
	unsigned long user = user_mode(regs);
	struct cpuinfo_alpha *data = &cpu_data[cpu];

	old_regs = set_irq_regs(regs);

	/* Record kernel PC.  */
	profile_tick(CPU_PROFILING, regs);
	profile_tick(CPU_PROFILING);

	if (!--data->prof_counter) {
		/* We need to make like a normal interrupt -- otherwise
@@ -534,6 +537,7 @@ smp_percpu_timer_interrupt(struct pt_regs *regs)

		irq_exit();
	}
	set_irq_regs(old_regs);
}

int __init
+3 −3
Original line number Diff line number Diff line
@@ -104,7 +104,7 @@ unsigned long long sched_clock(void)
 * timer_interrupt() needs to keep up the real-time clock,
 * as well as call the "do_timer()" routine every clocktick
 */
irqreturn_t timer_interrupt(int irq, void *dev, struct pt_regs * regs)
irqreturn_t timer_interrupt(int irq, void *dev)
{
	unsigned long delta;
	__u32 now;
@@ -112,7 +112,7 @@ irqreturn_t timer_interrupt(int irq, void *dev, struct pt_regs * regs)

#ifndef CONFIG_SMP
	/* Not SMP, do kernel PC profiling here.  */
	profile_tick(CPU_PROFILING, regs);
	profile_tick(CPU_PROFILING);
#endif

	write_seqlock(&xtime_lock);
@@ -132,7 +132,7 @@ irqreturn_t timer_interrupt(int irq, void *dev, struct pt_regs * regs)
	while (nticks > 0) {
		do_timer(1);
#ifndef CONFIG_SMP
		update_process_times(user_mode(regs));
		update_process_times(user_mode(get_irq_regs()));
#endif
		nticks--;
	}
+1 −0
Original line number Diff line number Diff line
#include <asm-generic/irq_regs.h>