diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-15 21:50:19 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-15 21:50:19 -0400 |
commit | 835a906c74ecf20cdb817d6d02975cc0ba421e35 (patch) | |
tree | 86db6424947e8f5b4ddb1f7f6bfdaf9353f194d7 /arch/sh64/kernel/time.c | |
parent | e089d43fb1ab8e39168c9f61d30aef5b8724d085 (diff) | |
parent | 51a41e7d39ce0da1198837aaa495fe6dbcc4f802 (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh64-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh64-2.6:
sh64: Add .gitignore entry for syscalltab.
sh64: generic quicklist support.
sh64: Update cayman defconfig.
sh64: Fixup sh-sci build.
sh64: ppoll/pselect6() and restartable syscalls.
sh64: dma-mapping updates.
sh64: Fixups for the irq_regs changes.
sh64: Wire up many new syscalls.
spelling fixes: arch/sh64/
sh64: ROUND_UP macro cleanup in arch/sh64/kernel/pci_sh5.c
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 | ||