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
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
arch
/
xtensa
/
kernel
/
time.c
diff --git
a/arch/xtensa/kernel/time.c
b/arch/xtensa/kernel/time.c
index
937d81f
..
a350431
100644
(file)
--- a/
arch/xtensa/kernel/time.c
+++ b/
arch/xtensa/kernel/time.c
@@
-12,7
+12,6
@@
* Chris Zankel <chris@zankel.net>
*/
* Chris Zankel <chris@zankel.net>
*/
-#include <linux/config.h>
#include <linux/errno.h>
#include <linux/time.h>
#include <linux/timex.h>
#include <linux/errno.h>
#include <linux/time.h>
#include <linux/timex.h>
@@
-27,9
+26,7
@@
#include <asm/platform.h>
#include <asm/platform.h>
-extern volatile unsigned long wall_jiffies;
-
-spinlock_t rtc_lock = SPIN_LOCK_UNLOCKED;
+DEFINE_SPINLOCK(rtc_lock);
EXPORT_SYMBOL(rtc_lock);
EXPORT_SYMBOL(rtc_lock);
@@
-50,10
+47,10
@@
unsigned long long sched_clock(void)
return (unsigned long long)jiffies * (1000000000 / HZ);
}
return (unsigned long long)jiffies * (1000000000 / HZ);
}
-static irqreturn_t timer_interrupt(int irq, void *dev_id
, struct pt_regs *regs
);
+static irqreturn_t timer_interrupt(int irq, void *dev_id);
static struct irqaction timer_irqaction = {
.handler = timer_interrupt,
static struct irqaction timer_irqaction = {
.handler = timer_interrupt,
- .flags =
SA_INTERRUPT
,
+ .flags =
IRQF_DISABLED
,
.name = "timer",
};
.name = "timer",
};
@@
-111,7
+108,6
@@
int do_settimeofday(struct timespec *tv)
*/
ccount = get_ccount();
nsec -= (ccount - last_ccount_stamp) * CCOUNT_NSEC;
*/
ccount = get_ccount();
nsec -= (ccount - last_ccount_stamp) * CCOUNT_NSEC;
- nsec -= (jiffies - wall_jiffies) * CCOUNT_PER_JIFFY * CCOUNT_NSEC;
wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - sec);
wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - nsec);
wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - sec);
wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - nsec);
@@
-130,7
+126,7
@@
EXPORT_SYMBOL(do_settimeofday);
void do_gettimeofday(struct timeval *tv)
{
unsigned long flags;
void do_gettimeofday(struct timeval *tv)
{
unsigned long flags;
- unsigned long sec, usec, delta,
lost,
seq;
+ unsigned long sec, usec, delta, seq;
do {
seq = read_seqbegin_irqsave(&xtime_lock, flags);
do {
seq = read_seqbegin_irqsave(&xtime_lock, flags);
@@
-138,12
+134,9
@@
void do_gettimeofday(struct timeval *tv)
delta = get_ccount() - last_ccount_stamp;
sec = xtime.tv_sec;
usec = (xtime.tv_nsec / NSEC_PER_USEC);
delta = get_ccount() - last_ccount_stamp;
sec = xtime.tv_sec;
usec = (xtime.tv_nsec / NSEC_PER_USEC);
-
- lost = jiffies - wall_jiffies;
-
} while (read_seqretry_irqrestore(&xtime_lock, seq, flags));
} while (read_seqretry_irqrestore(&xtime_lock, seq, flags));
- usec +=
lost * (1000000UL/HZ) +
(delta * CCOUNT_NSEC) / NSEC_PER_USEC;
+ usec += (delta * CCOUNT_NSEC) / NSEC_PER_USEC;
for (; usec >= 1000000; sec++, usec -= 1000000)
;
for (; usec >= 1000000; sec++, usec -= 1000000)
;
@@
-157,7
+150,7
@@
EXPORT_SYMBOL(do_gettimeofday);
* The timer interrupt is called HZ times per second.
*/
* The timer interrupt is called HZ times per second.
*/
-irqreturn_t timer_interrupt (int irq, void *dev_id
, struct pt_regs *regs
)
+irqreturn_t timer_interrupt (int irq, void *dev_id)
{
unsigned long next;
{
unsigned long next;
@@
-167,21
+160,20
@@
irqreturn_t timer_interrupt (int irq, void *dev_id, struct pt_regs *regs)
again:
while ((signed long)(get_ccount() - next) > 0) {
again:
while ((signed long)(get_ccount() - next) > 0) {
- profile_tick(CPU_PROFILING
, regs
);
+ profile_tick(CPU_PROFILING);
#ifndef CONFIG_SMP
#ifndef CONFIG_SMP
- update_process_times(user_mode(
regs
));
+ update_process_times(user_mode(
get_irq_regs()
));
#endif
write_seqlock(&xtime_lock);
last_ccount_stamp = next;
next += CCOUNT_PER_JIFFY;
#endif
write_seqlock(&xtime_lock);
last_ccount_stamp = next;
next += CCOUNT_PER_JIFFY;
- do_timer (
regs
); /* Linux handler in kernel/timer.c */
+ do_timer (
1
); /* Linux handler in kernel/timer.c */
if (ntp_synced() &&
xtime.tv_sec - last_rtc_update >= 659 &&
if (ntp_synced() &&
xtime.tv_sec - last_rtc_update >= 659 &&
- abs((xtime.tv_nsec/1000)-(1000000-1000000/HZ))<5000000/HZ &&
- jiffies - wall_jiffies == 1) {
+ abs((xtime.tv_nsec/1000)-(1000000-1000000/HZ))<5000000/HZ) {
if (platform_set_rtc_time(xtime.tv_sec+1) == 0)
last_rtc_update = xtime.tv_sec+1;
if (platform_set_rtc_time(xtime.tv_sec+1) == 0)
last_rtc_update = xtime.tv_sec+1;