X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fmips%2Fkernel%2Fprocess.c;h=092679c2dca9b83bd3e66503d83413daf29853d7;hb=987b0145d94eecf292d8b301228356f44611ab7c;hp=199a06e873c6ab2e06166234a82d42fa1d3747e7;hpb=f7ed79d23a47594e7834d66a8f14449796d4f3e6;p=linux-2.6.git diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c index 199a06e87..092679c2d 100644 --- a/arch/mips/kernel/process.c +++ b/arch/mips/kernel/process.c @@ -41,10 +41,6 @@ #include #include #include -#ifdef CONFIG_MIPS_MT_SMTC -#include -extern void smtc_idle_loop_hook(void); -#endif /* CONFIG_MIPS_MT_SMTC */ /* * The idle thread. There's no useful work to be done, so just try to conserve @@ -55,22 +51,26 @@ ATTRIB_NORET void cpu_idle(void) { /* endless idle loop with no priority at all */ while (1) { - while (!need_resched()) { -#ifdef CONFIG_MIPS_MT_SMTC - smtc_idle_loop_hook(); -#endif /* CONFIG_MIPS_MT_SMTC */ + while (!need_resched()) if (cpu_wait) (*cpu_wait)(); - } preempt_enable_no_resched(); schedule(); preempt_disable(); } } +extern void do_signal(struct pt_regs *regs); +extern void do_signal32(struct pt_regs *regs); + /* * Native o32 and N64 ABI without DSP ASE */ +extern int setup_frame(struct k_sigaction * ka, struct pt_regs *regs, + int signr, sigset_t *set); +extern int setup_rt_frame(struct k_sigaction * ka, struct pt_regs *regs, + int signr, sigset_t *set, siginfo_t *info); + struct mips_abi mips_abi = { .do_signal = do_signal, #ifdef CONFIG_TRAD_SIGNALS @@ -83,6 +83,11 @@ struct mips_abi mips_abi = { /* * o32 compatibility on 64-bit kernels, without DSP ASE */ +extern int setup_frame_32(struct k_sigaction * ka, struct pt_regs *regs, + int signr, sigset_t *set); +extern int setup_rt_frame_32(struct k_sigaction * ka, struct pt_regs *regs, + int signr, sigset_t *set, siginfo_t *info); + struct mips_abi mips_abi_32 = { .do_signal = do_signal32, .setup_frame = setup_frame_32, @@ -94,6 +99,9 @@ struct mips_abi mips_abi_32 = { /* * N32 on 64-bit kernels, without DSP ASE */ +extern int setup_rt_frame_n32(struct k_sigaction * ka, struct pt_regs *regs, + int signr, sigset_t *set, siginfo_t *info); + struct mips_abi mips_abi_n32 = { .do_signal = do_signal, .setup_rt_frame = setup_rt_frame_n32 @@ -185,17 +193,6 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long usp, childregs->cp0_status &= ~(ST0_CU2|ST0_CU1); clear_tsk_thread_flag(p, TIF_USEDFPU); -#ifdef CONFIG_MIPS_MT_FPAFF - /* - * FPU affinity support is cleaner if we track the - * user-visible CPU affinity from the very beginning. - * The generic cpus_allowed mask will already have - * been copied from the parent before copy_thread - * is invoked. - */ - p->thread.user_cpus_allowed = p->cpus_allowed; -#endif /* CONFIG_MIPS_MT_FPAFF */ - if (clone_flags & CLONE_SETTLS) ti->tp_value = regs->regs[7]; @@ -438,3 +435,4 @@ unsigned long get_wchan(struct task_struct *p) return pc; } +EXPORT_SYMBOL(get_wchan);