diff options
Diffstat (limited to 'arch/sparc/kernel/process.c')
-rw-r--r-- | arch/sparc/kernel/process.c | 41 |
1 files changed, 2 insertions, 39 deletions
diff --git a/arch/sparc/kernel/process.c b/arch/sparc/kernel/process.c index 88db458e0..195f26df5 100644 --- a/arch/sparc/kernel/process.c +++ b/arch/sparc/kernel/process.c @@ -1,4 +1,4 @@ -/* $Id: process.c,v 1.139 1999/08/14 03:51:14 anton Exp $ +/* $Id: process.c,v 1.142 1999/12/27 06:08:31 anton Exp $ * linux/arch/sparc/kernel/process.c * * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) @@ -33,6 +33,7 @@ #include <asm/uaccess.h> #include <asm/system.h> #include <asm/page.h> +#include <asm/pgalloc.h> #include <asm/pgtable.h> #include <asm/delay.h> #include <asm/processor.h> @@ -55,7 +56,6 @@ int cpu_idle(void) { int ret = -EPERM; - lock_kernel(); if (current->pid != 0) goto out; @@ -100,7 +100,6 @@ int cpu_idle(void) } ret = 0; out: - unlock_kernel(); return ret; } @@ -188,9 +187,7 @@ void show_regwindow(struct reg_window *rw) rw->ins[4], rw->ins[5], rw->ins[6], rw->ins[7]); } -#ifdef __SMP__ static spinlock_t sparc_backtrace_lock = SPIN_LOCK_UNLOCKED; -#endif void __show_backtrace(unsigned long fp) { @@ -702,37 +699,3 @@ pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) "g1", "g2", "g3", "o0", "o1", "memory", "cc"); return retval; } - -/* - * These bracket the sleeping functions.. - */ -extern void scheduling_functions_start_here(void); -extern void scheduling_functions_end_here(void); -#define first_sched ((unsigned long) scheduling_functions_start_here) -#define last_sched ((unsigned long) scheduling_functions_end_here) - -unsigned long get_wchan(struct task_struct *p) -{ - unsigned long pc, fp, bias = 0; - unsigned long task_base = (unsigned long) p; - struct reg_window *rw; - int count = 0; - if (!p || p == current || p->state == TASK_RUNNING) - return 0; - - fp = p->thread.ksp + bias; - do { - /* Bogus frame pointer? */ - if (fp < (task_base + sizeof(struct task_struct)) || - fp >= (task_base + (2 * PAGE_SIZE))) - break; - rw = (struct reg_window *) fp; - pc = rw->ins[7]; - if (pc < first_sched || pc >= last_sched) - return pc; - fp = rw->ins[6] + bias; - } while (++count < 16); - return 0; -} -#undef last_sched -#undef first_sched |