git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge to Fedora kernel-2.6.18-1.2224_FC5 patched with stable patch-2.6.18.1-vs2.0...
[linux-2.6.git]
/
arch
/
m32r
/
kernel
/
time.c
diff --git
a/arch/m32r/kernel/time.c
b/arch/m32r/kernel/time.c
index
25a3166
..
ded0be0
100644
(file)
--- a/
arch/m32r/kernel/time.c
+++ b/
arch/m32r/kernel/time.c
@@
-17,7
+17,6
@@
#undef DEBUG_TIMER
#undef DEBUG_TIMER
-#include <linux/config.h>
#include <linux/errno.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/errno.h>
#include <linux/init.h>
#include <linux/module.h>
@@
-39,10
+38,6
@@
extern void send_IPI_allbutself(int, int);
extern void smp_local_timer_interrupt(struct pt_regs *);
#endif
extern void smp_local_timer_interrupt(struct pt_regs *);
#endif
-u64 jiffies_64 = INITIAL_JIFFIES;
-
-EXPORT_SYMBOL(jiffies_64);
-
extern unsigned long wall_jiffies;
#define TICK_SIZE (tick_nsec / 1000)
extern unsigned long wall_jiffies;
#define TICK_SIZE (tick_nsec / 1000)
@@
-61,7
+56,7
@@
static unsigned long do_gettimeoffset(void)
#if defined(CONFIG_CHIP_M32102) || defined(CONFIG_CHIP_XNUX2) \
|| defined(CONFIG_CHIP_VDEC2) || defined(CONFIG_CHIP_M32700) \
#if defined(CONFIG_CHIP_M32102) || defined(CONFIG_CHIP_XNUX2) \
|| defined(CONFIG_CHIP_VDEC2) || defined(CONFIG_CHIP_M32700) \
- || defined(CONFIG_CHIP_OPSP)
+ || defined(CONFIG_CHIP_OPSP)
|| defined(CONFIG_CHIP_M32104)
#ifndef CONFIG_SMP
unsigned long count;
#ifndef CONFIG_SMP
unsigned long count;
@@
-171,10
+166,7
@@
int do_settimeofday(struct timespec *tv)
set_normalized_timespec(&xtime, sec, nsec);
set_normalized_timespec(&wall_to_monotonic, wtm_sec, wtm_nsec);
set_normalized_timespec(&xtime, sec, nsec);
set_normalized_timespec(&wall_to_monotonic, wtm_sec, wtm_nsec);
- time_adjust = 0; /* stop active adjtime() */
- time_status |= STA_UNSYNC;
- time_maxerror = NTP_PHASE_LIMIT;
- time_esterror = NTP_PHASE_LIMIT;
+ ntp_clear();
write_sequnlock_irq(&xtime_lock);
clock_was_set();
write_sequnlock_irq(&xtime_lock);
clock_was_set();
@@
-193,7
+185,7
@@
EXPORT_SYMBOL(do_settimeofday);
* BUG: This routine does not handle hour overflow properly; it just
* sets the minutes. Usually you won't notice until after reboot!
*/
* BUG: This routine does not handle hour overflow properly; it just
* sets the minutes. Usually you won't notice until after reboot!
*/
-static
__inline__
int set_rtc_mmss(unsigned long nowtime)
+static
inline
int set_rtc_mmss(unsigned long nowtime)
{
return 0;
}
{
return 0;
}
@@
-205,17
+197,23
@@
static long last_rtc_update = 0;
* timer_interrupt() needs to keep up the real-time clock,
* as well as call the "do_timer()" routine every clocktick
*/
* timer_interrupt() needs to keep up the real-time clock,
* as well as call the "do_timer()" routine every clocktick
*/
-static __inline__ void do_timer_interrupt(int irq, void *dev_id,
- struct pt_regs * regs)
+irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
{
+#ifndef CONFIG_SMP
+ profile_tick(CPU_PROFILING, regs);
+#endif
do_timer(regs);
do_timer(regs);
+#ifndef CONFIG_SMP
+ update_process_times(user_mode(regs));
+#endif
/*
* If we have an externally synchronized Linux clock, then update
* CMOS clock accordingly every ~11 minutes. Set_rtc_mmss() has to be
* called as close as possible to 500 ms before the new second starts.
*/
/*
* If we have an externally synchronized Linux clock, then update
* CMOS clock accordingly every ~11 minutes. Set_rtc_mmss() has to be
* called as close as possible to 500 ms before the new second starts.
*/
- if ((time_status & STA_UNSYNC) == 0
+ write_seqlock(&xtime_lock);
+ if (ntp_synced()
&& xtime.tv_sec > last_rtc_update + 660
&& (xtime.tv_nsec / 1000) >= 500000 - ((unsigned)TICK_SIZE) / 2
&& (xtime.tv_nsec / 1000) <= 500000 + ((unsigned)TICK_SIZE) / 2)
&& xtime.tv_sec > last_rtc_update + 660
&& (xtime.tv_nsec / 1000) >= 500000 - ((unsigned)TICK_SIZE) / 2
&& (xtime.tv_nsec / 1000) <= 500000 + ((unsigned)TICK_SIZE) / 2)
@@
-225,6
+223,7
@@
static __inline__ void do_timer_interrupt(int irq, void *dev_id,
else /* do it again in 60 s */
last_rtc_update = xtime.tv_sec - 600;
}
else /* do it again in 60 s */
last_rtc_update = xtime.tv_sec - 600;
}
+ write_sequnlock(&xtime_lock);
/* As we return to user mode fire off the other CPU schedulers..
this is basically because we don't yet share IRQ's around.
This message is rigged to be safe on the 386 - basically it's
/* As we return to user mode fire off the other CPU schedulers..
this is basically because we don't yet share IRQ's around.
This message is rigged to be safe on the 386 - basically it's
@@
-232,23
+231,13
@@
static __inline__ void do_timer_interrupt(int irq, void *dev_id,
#ifdef CONFIG_SMP
smp_local_timer_interrupt(regs);
#ifdef CONFIG_SMP
smp_local_timer_interrupt(regs);
-#endif
-}
-
-irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
-{
- write_seqlock(&xtime_lock);
- do_timer_interrupt(irq, NULL, regs);
- write_sequnlock(&xtime_lock);
-
-#ifndef CONFIG_SMP
- profile_tick(CPU_PROFILING, regs);
+ smp_send_timer();
#endif
return IRQ_HANDLED;
}
#endif
return IRQ_HANDLED;
}
-struct irqaction irq0 = { timer_interrupt,
SA_INTERRUPT
, CPU_MASK_NONE,
+struct irqaction irq0 = { timer_interrupt,
IRQF_DISABLED
, CPU_MASK_NONE,
"MFT2", NULL, NULL };
void __init time_init(void)
"MFT2", NULL, NULL };
void __init time_init(void)
@@
-273,12
+262,12
@@
void __init time_init(void)
xtime.tv_sec = mktime(year, mon, day, hour, min, sec);
xtime.tv_nsec = (INITIAL_JIFFIES % HZ) * (NSEC_PER_SEC / HZ);
xtime.tv_sec = mktime(year, mon, day, hour, min, sec);
xtime.tv_nsec = (INITIAL_JIFFIES % HZ) * (NSEC_PER_SEC / HZ);
- wall_to_monotonic.tv_sec = -xtime.tv_sec;
-
wall_to_monotonic.tv_nsec = -xtime.tv_nsec
;
+ set_normalized_timespec(&wall_to_monotonic,
+
-xtime.tv_sec, -xtime.tv_nsec)
;
#if defined(CONFIG_CHIP_M32102) || defined(CONFIG_CHIP_XNUX2) \
|| defined(CONFIG_CHIP_VDEC2) || defined(CONFIG_CHIP_M32700) \
#if defined(CONFIG_CHIP_M32102) || defined(CONFIG_CHIP_XNUX2) \
|| defined(CONFIG_CHIP_VDEC2) || defined(CONFIG_CHIP_M32700) \
- || defined(CONFIG_CHIP_OPSP)
+ || defined(CONFIG_CHIP_OPSP)
|| defined(CONFIG_CHIP_M32104)
/* M32102 MFT setup */
setup_irq(M32R_IRQ_MFT2, &irq0);
/* M32102 MFT setup */
setup_irq(M32R_IRQ_MFT2, &irq0);
@@
-314,4
+303,3
@@
unsigned long long sched_clock(void)
{
return (unsigned long long)jiffies * (1000000000 / HZ);
}
{
return (unsigned long long)jiffies * (1000000000 / HZ);
}
-