diff options
Diffstat (limited to 'arch/sh64/kernel/time.c')
-rw-r--r-- | arch/sh64/kernel/time.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/arch/sh64/kernel/time.c b/arch/sh64/kernel/time.c index 390b40de7cef..b37f4f4981d2 100644 --- a/arch/sh64/kernel/time.c +++ b/arch/sh64/kernel/time.c | |||
@@ -123,7 +123,7 @@ static unsigned long long usecs_per_jiffy = 1000000/HZ; /* Approximation */ | |||
123 | static unsigned long long scaled_recip_ctc_ticks_per_jiffy; | 123 | static unsigned long long scaled_recip_ctc_ticks_per_jiffy; |
124 | 124 | ||
125 | /* Estimate number of microseconds that have elapsed since the last timer tick, | 125 | /* Estimate number of microseconds that have elapsed since the last timer tick, |
126 | by scaling the delta that has occured in the CTC register. | 126 | by scaling the delta that has occurred in the CTC register. |
127 | 127 | ||
128 | WARNING WARNING WARNING : This algorithm relies on the CTC decrementing at | 128 | WARNING WARNING WARNING : This algorithm relies on the CTC decrementing at |
129 | the CPU clock rate. If the CPU sleeps, the CTC stops counting. Bear this | 129 | the CPU clock rate. If the CPU sleeps, the CTC stops counting. Bear this |
@@ -282,7 +282,7 @@ static long last_rtc_update = 0; | |||
282 | * timer_interrupt() needs to keep up the real-time clock, | 282 | * timer_interrupt() needs to keep up the real-time clock, |
283 | * as well as call the "do_timer()" routine every clocktick | 283 | * as well as call the "do_timer()" routine every clocktick |
284 | */ | 284 | */ |
285 | static inline void do_timer_interrupt(int irq, struct pt_regs *regs) | 285 | static inline void do_timer_interrupt(void) |
286 | { | 286 | { |
287 | unsigned long long current_ctc; | 287 | unsigned long long current_ctc; |
288 | asm ("getcon cr62, %0" : "=r" (current_ctc)); | 288 | asm ("getcon cr62, %0" : "=r" (current_ctc)); |
@@ -290,9 +290,10 @@ static inline void do_timer_interrupt(int irq, struct pt_regs *regs) | |||
290 | 290 | ||
291 | do_timer(1); | 291 | do_timer(1); |
292 | #ifndef CONFIG_SMP | 292 | #ifndef CONFIG_SMP |
293 | update_process_times(user_mode(regs)); | 293 | update_process_times(user_mode(get_irq_regs())); |
294 | #endif | 294 | #endif |
295 | profile_tick(CPU_PROFILING, regs); | 295 | if (current->pid) |
296 | profile_tick(CPU_PROFILING); | ||
296 | 297 | ||
297 | #ifdef CONFIG_HEARTBEAT | 298 | #ifdef CONFIG_HEARTBEAT |
298 | { | 299 | { |
@@ -323,7 +324,7 @@ static inline void do_timer_interrupt(int irq, struct pt_regs *regs) | |||
323 | * Time Stamp Counter value at the time of the timer interrupt, so that | 324 | * Time Stamp Counter value at the time of the timer interrupt, so that |
324 | * we later on can estimate the time of day more exactly. | 325 | * we later on can estimate the time of day more exactly. |
325 | */ | 326 | */ |
326 | static irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 327 | static irqreturn_t timer_interrupt(int irq, void *dev_id) |
327 | { | 328 | { |
328 | unsigned long timer_status; | 329 | unsigned long timer_status; |
329 | 330 | ||
@@ -340,7 +341,7 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
340 | * locally disabled. -arca | 341 | * locally disabled. -arca |
341 | */ | 342 | */ |
342 | write_lock(&xtime_lock); | 343 | write_lock(&xtime_lock); |
343 | do_timer_interrupt(irq, regs); | 344 | do_timer_interrupt(); |
344 | write_unlock(&xtime_lock); | 345 | write_unlock(&xtime_lock); |
345 | 346 | ||
346 | return IRQ_HANDLED; | 347 | return IRQ_HANDLED; |
@@ -465,9 +466,10 @@ static __init unsigned int get_cpu_hz(void) | |||
465 | #endif | 466 | #endif |
466 | } | 467 | } |
467 | 468 | ||
468 | static irqreturn_t sh64_rtc_interrupt(int irq, void *dev_id, | 469 | static irqreturn_t sh64_rtc_interrupt(int irq, void *dev_id) |
469 | struct pt_regs *regs) | ||
470 | { | 470 | { |
471 | struct pt_regs *regs = get_irq_regs(); | ||
472 | |||
471 | ctrl_outb(0, RCR1); /* Disable Carry Interrupts */ | 473 | ctrl_outb(0, RCR1); /* Disable Carry Interrupts */ |
472 | regs->regs[3] = 1; /* Using r3 */ | 474 | regs->regs[3] = 1; /* Using r3 */ |
473 | 475 | ||