diff options
Diffstat (limited to 'arch/m68k/kernel/process.c')
| -rw-r--r-- | arch/m68k/kernel/process.c | 56 | 
1 files changed, 28 insertions, 28 deletions
diff --git a/arch/m68k/kernel/process.c b/arch/m68k/kernel/process.c index c55ff719fa72..4ba1ae7345c3 100644 --- a/arch/m68k/kernel/process.c +++ b/arch/m68k/kernel/process.c @@ -203,11 +203,8 @@ int copy_thread(unsigned long clone_flags, unsigned long usp,  }  /* Fill in the fpu structure for a core dump.  */ -#ifdef CONFIG_FPU  int dump_fpu (struct pt_regs *regs, struct user_m68kfp_struct *fpu)  { -	char fpustate[216]; -  	if (FPU_IS_EMU) {  		int i; @@ -222,37 +219,40 @@ int dump_fpu (struct pt_regs *regs, struct user_m68kfp_struct *fpu)  		return 1;  	} -	/* First dump the fpu context to avoid protocol violation.  */ -	asm volatile ("fsave %0" :: "m" (fpustate[0]) : "memory"); -	if (!CPU_IS_060 ? !fpustate[0] : !fpustate[2]) -		return 0; +	if (IS_ENABLED(CONFIG_FPU)) { +		char fpustate[216]; -	if (CPU_IS_COLDFIRE) { -		asm volatile ("fmovel %/fpiar,%0\n\t" -			      "fmovel %/fpcr,%1\n\t" -			      "fmovel %/fpsr,%2\n\t" -			      "fmovemd %/fp0-%/fp7,%3" -			      : -			      : "m" (fpu->fpcntl[0]), -				"m" (fpu->fpcntl[1]), -				"m" (fpu->fpcntl[2]), -				"m" (fpu->fpregs[0]) -			      : "memory"); -	} else { -		asm volatile ("fmovem %/fpiar/%/fpcr/%/fpsr,%0" -			      : -			      : "m" (fpu->fpcntl[0]) -			      : "memory"); -		asm volatile ("fmovemx %/fp0-%/fp7,%0" -			      : -			      : "m" (fpu->fpregs[0]) -			      : "memory"); +		/* First dump the fpu context to avoid protocol violation.  */ +		asm volatile ("fsave %0" :: "m" (fpustate[0]) : "memory"); +		if (!CPU_IS_060 ? !fpustate[0] : !fpustate[2]) +			return 0; + +		if (CPU_IS_COLDFIRE) { +			asm volatile ("fmovel %/fpiar,%0\n\t" +				      "fmovel %/fpcr,%1\n\t" +				      "fmovel %/fpsr,%2\n\t" +				      "fmovemd %/fp0-%/fp7,%3" +				      : +				      : "m" (fpu->fpcntl[0]), +					"m" (fpu->fpcntl[1]), +					"m" (fpu->fpcntl[2]), +					"m" (fpu->fpregs[0]) +				      : "memory"); +		} else { +			asm volatile ("fmovem %/fpiar/%/fpcr/%/fpsr,%0" +				      : +				      : "m" (fpu->fpcntl[0]) +				      : "memory"); +			asm volatile ("fmovemx %/fp0-%/fp7,%0" +				      : +				      : "m" (fpu->fpregs[0]) +				      : "memory"); +		}  	}  	return 1;  }  EXPORT_SYMBOL(dump_fpu); -#endif /* CONFIG_FPU */  unsigned long get_wchan(struct task_struct *p)  {  |