X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fm68k%2Fkernel%2Fprocess.c;h=33648efb772eadde09a4f517353c85660ea1b895;hb=43bc926fffd92024b46cafaf7350d669ba9ca884;hp=93b043e2a4359985b80ab1890135ccc1e57351dc;hpb=cee37fe97739d85991964371c1f3a745c00dd236;p=linux-2.6.git diff --git a/arch/m68k/kernel/process.c b/arch/m68k/kernel/process.c index 93b043e2a..33648efb7 100644 --- a/arch/m68k/kernel/process.c +++ b/arch/m68k/kernel/process.c @@ -77,7 +77,7 @@ unsigned long thread_saved_pc(struct task_struct *tsk) /* * The idle loop on an m68k.. */ -void default_idle(void) +static void default_idle(void) { if (!need_resched()) #if defined(MACH_ATARI_ONLY) && !defined(CONFIG_HADES) @@ -102,7 +102,9 @@ void cpu_idle(void) while (1) { while (!need_resched()) idle(); + preempt_enable_no_resched(); schedule(); + preempt_disable(); } } @@ -113,8 +115,6 @@ void machine_restart(char * __unused) for (;;); } -EXPORT_SYMBOL(machine_restart); - void machine_halt(void) { if (mach_halt) @@ -122,8 +122,6 @@ void machine_halt(void) for (;;); } -EXPORT_SYMBOL(machine_halt); - void machine_power_off(void) { if (mach_power_off) @@ -131,7 +129,8 @@ void machine_power_off(void) for (;;); } -EXPORT_SYMBOL(machine_power_off); +void (*pm_power_off)(void) = machine_power_off; +EXPORT_SYMBOL(pm_power_off); void show_regs(struct pt_regs * regs) { @@ -242,10 +241,9 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long usp, { struct pt_regs * childregs; struct switch_stack * childstack, *stack; - unsigned long stack_offset, *retp; + unsigned long *retp; - stack_offset = THREAD_SIZE - sizeof(struct pt_regs); - childregs = (struct pt_regs *) ((unsigned long) (p->thread_info) + stack_offset); + childregs = (struct pt_regs *) (task_stack_page(p) + THREAD_SIZE) - 1; *childregs = *regs; childregs->d0 = 0; @@ -390,7 +388,7 @@ unsigned long get_wchan(struct task_struct *p) if (!p || p == current || p->state == TASK_RUNNING) return 0; - stack_page = (unsigned long)(p->thread_info); + stack_page = (unsigned long)task_stack_page(p); fp = ((struct switch_stack *)p->thread.ksp)->a6; do { if (fp < stack_page+sizeof(struct thread_info) ||