sh: Fix up DSP context save/restore.
There were a number of issues with the DSP context save/restore code, mostly left-over relics from when it was introduced on SH3-DSP with little follow-up testing, resulting in things like task_pt_dspregs() referencing incorrect state on the stack. This follows the MIPS convention of tracking the DSP state in the thread_struct and handling the state save/restore in switch_to() and finish_arch_switch() respectively. The regset interface is also updated, which allows us to finally be rid of task_pt_dspregs() and the special cased task_pt_regs(). Signed-off-by: Michael Trimarchi <michael@evidence.eu.com> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
committed by
Paul Mundt
parent
a27873cd23
commit
01ab10393c
@@ -57,6 +57,14 @@ asmlinkage void __init sh_cpu_init(void);
|
||||
#define SR_IMASK 0x000000f0
|
||||
#define SR_FD 0x00008000
|
||||
|
||||
/*
|
||||
* DSP structure and data
|
||||
*/
|
||||
struct sh_dsp_struct {
|
||||
unsigned long dsp_regs[14];
|
||||
long status;
|
||||
};
|
||||
|
||||
/*
|
||||
* FPU structure and data
|
||||
*/
|
||||
@@ -96,6 +104,11 @@ struct thread_struct {
|
||||
|
||||
/* floating point info */
|
||||
union sh_fpu_union fpu;
|
||||
|
||||
#ifdef CONFIG_SH_DSP
|
||||
/* Dsp status information */
|
||||
struct sh_dsp_struct dsp_status;
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Count of active tasks with UBC settings */
|
||||
|
Reference in New Issue
Block a user