summaryrefslogtreecommitdiffstats
path: root/arch/i386
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-07-11 02:32:09 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-07-11 02:32:09 +0000
commit7f5ea64ad438953cbeb3055f424dfac01d5bcfc7 (patch)
treef8cabc30da0d0eaa578cb6369c816e02af148510 /arch/i386
parent99e873a7003ab3980a6296c29066e3ab7956a009 (diff)
Merge with Linux 2.4.0-test3.
Diffstat (limited to 'arch/i386')
-rw-r--r--arch/i386/defconfig7
-rw-r--r--arch/i386/kernel/apic.c2
-rw-r--r--arch/i386/kernel/entry.S4
-rw-r--r--arch/i386/kernel/process.c2
-rw-r--r--arch/i386/kernel/time.c16
5 files changed, 14 insertions, 17 deletions
diff --git a/arch/i386/defconfig b/arch/i386/defconfig
index 068aceaf2..35444fef3 100644
--- a/arch/i386/defconfig
+++ b/arch/i386/defconfig
@@ -45,6 +45,7 @@ CONFIG_NOHIGHMEM=y
# CONFIG_MATH_EMULATION is not set
# CONFIG_MTRR is not set
CONFIG_SMP=y
+CONFIG_HAVE_DEC_LOCK=y
#
# Loadable module support
@@ -141,14 +142,10 @@ CONFIG_INET=y
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_IP_ALIAS is not set
+# CONFIG_INET_ECN is not set
# CONFIG_SYN_COOKIES is not set
#
-# (it is safe to leave these untouched)
-#
-CONFIG_SKB_LARGE=y
-
-#
#
#
# CONFIG_IPX is not set
diff --git a/arch/i386/kernel/apic.c b/arch/i386/kernel/apic.c
index 88d571654..0600d91a9 100644
--- a/arch/i386/kernel/apic.c
+++ b/arch/i386/kernel/apic.c
@@ -589,7 +589,7 @@ static inline void handle_smp_time (int user, int cpu)
p->counter = 0;
p->need_resched = 1;
}
- if (p->priority < DEF_PRIORITY) {
+ if (p->nice > 0) {
kstat.cpu_nice += user;
kstat.per_cpu_nice[cpu] += user;
} else {
diff --git a/arch/i386/kernel/entry.S b/arch/i386/kernel/entry.S
index 660a9e1fb..da7fd047d 100644
--- a/arch/i386/kernel/entry.S
+++ b/arch/i386/kernel/entry.S
@@ -77,8 +77,8 @@ sigpending = 8
addr_limit = 12
exec_domain = 16
need_resched = 20
-processor = 48
-tsk_ptrace = 56
+tsk_ptrace = 24
+processor = 52
ENOSYS = 38
diff --git a/arch/i386/kernel/process.c b/arch/i386/kernel/process.c
index e240cc79a..83ec9d192 100644
--- a/arch/i386/kernel/process.c
+++ b/arch/i386/kernel/process.c
@@ -123,7 +123,7 @@ void cpu_idle (void)
{
/* endless idle loop with no priority at all */
init_idle();
- current->priority = 0;
+ current->nice = 20;
current->counter = -100;
while (1) {
diff --git a/arch/i386/kernel/time.c b/arch/i386/kernel/time.c
index a009a428b..4bb184112 100644
--- a/arch/i386/kernel/time.c
+++ b/arch/i386/kernel/time.c
@@ -79,7 +79,7 @@ static unsigned long last_tsc_low; /* lsb 32 bits of Time Stamp Counter */
unsigned long fast_gettimeoffset_quotient=0;
extern rwlock_t xtime_lock;
-extern volatile unsigned long lost_ticks;
+extern unsigned long wall_jiffies;
spinlock_t rtc_lock = SPIN_LOCK_UNLOCKED;
@@ -262,7 +262,7 @@ void do_gettimeofday(struct timeval *tv)
read_lock_irqsave(&xtime_lock, flags);
usec = do_gettimeoffset();
{
- unsigned long lost = lost_ticks;
+ unsigned long lost = jiffies - wall_jiffies;
if (lost)
usec += lost * (1000000 / HZ);
}
@@ -282,14 +282,14 @@ void do_gettimeofday(struct timeval *tv)
void do_settimeofday(struct timeval *tv)
{
write_lock_irq(&xtime_lock);
- /* This is revolting. We need to set the xtime.tv_usec
- * correctly. However, the value in this location is
- * is value at the last tick.
- * Discover what correction gettimeofday
- * would have done, and then undo it!
+ /*
+ * This is revolting. We need to set "xtime" correctly. However, the
+ * value in this location is the value at the most recent update of
+ * wall time. Discover what correction gettimeofday() would have
+ * made, and then undo it!
*/
tv->tv_usec -= do_gettimeoffset();
- tv->tv_usec -= lost_ticks * (1000000 / HZ);
+ tv->tv_usec -= (jiffies - wall_jiffies) * (1000000 / HZ);
while (tv->tv_usec < 0) {
tv->tv_usec += 1000000;