[RFC] breakage either in arch/sh/Kconfig or arch/sh/kernel/process.c?

Al Viro <[email protected]> Thu, 29 Sep 2005 07:12:39 +0100
Newsgroups gmane.linux.kernel,gmane.linux.ports.sh.general
Message-ID <[email protected]>
In process.c:
void flush_thread(void)
{
#if defined(CONFIG_SH_FPU)
        struct task_struct *tsk = current;
        struct pt_regs *regs = (struct pt_regs *)
                                ((unsigned long)tsk->thread_info
                                 + THREAD_SIZE - sizeof(struct pt_regs)
                                 - sizeof(unsigned long));
...
and
int dump_task_regs(struct task_struct *tsk, elf_gregset_t *regs)
{
        struct pt_regs ptregs;

        ptregs = *(struct pt_regs *)
                ((unsigned long)tsk->thread_info + THREAD_SIZE
                 - sizeof(struct pt_regs)
#ifdef CONFIG_SH_DSP
                 - sizeof(struct pt_dspregs)
#endif
                 - sizeof(unsigned long));

which is obviously inconsistent if we ever build with both SH_FPU and SH_DSP
set.  Now, in arch/sh/Kconfig we see that SH_FPU depends on !CPU_SH3 and SH_DSP
on !CPU_SH4.  Which leaves CPU_SH2 picking both options.

Comments?  Looks like either Kconfig or flush_thread() needs fixing...