patch-2.1.79 linux/arch/sparc64/kernel/smp.c

Next file: linux/arch/sparc64/kernel/sparc64_ksyms.c
Previous file: linux/arch/sparc64/kernel/signal32.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.78/linux/arch/sparc64/kernel/smp.c linux/arch/sparc64/kernel/smp.c
@@ -3,6 +3,7 @@
  * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
  */
 
+#include <linux/config.h>
 #include <linux/kernel.h>
 #include <linux/sched.h>
 #include <linux/tasks.h>
@@ -23,6 +24,7 @@
 #include <asm/spinlock.h>
 #include <asm/hardirq.h>
 #include <asm/softirq.h>
+#include <asm/uaccess.h>
 
 #define __KERNEL_SYSCALLS__
 #include <linux/unistd.h>
@@ -346,7 +348,7 @@
 	spin_lock(&scheduler_lock);
 	get_new_mmu_context(mm, &tlb_context_cache);
 	mm->cpu_vm_mask = (1UL << smp_processor_id());
-	if(current->tss.current_ds) {
+	if(segment_eq(current->tss.current_ds,USER_DS)) {
 		u32 ctx = mm->context & 0x1fff;
 
 		current->tss.ctx = ctx;
@@ -473,6 +475,7 @@
 
 static inline void sparc64_do_profile(unsigned long pc)
 {
+#ifdef CONFIG_PROFILE
 	if(prof_buffer && current->pid) {
 		extern int _stext;
 
@@ -483,6 +486,7 @@
 			pc = prof_len - 1;
 		atomic_inc((atomic_t *)&prof_buffer[pc]);
 	}
+#endif
 }
 
 static unsigned long real_tick_offset, current_tick_offset;
@@ -510,7 +514,7 @@
 				update_one_process(current, 1, user, !user);
 				if(--current->counter < 0) {
 					current->counter = 0;
-					resched_force();
+					need_resched = 1;
 				}
 
 				if(user) {

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov