diff options
Diffstat (limited to 'arch/sh/kernel/signal_32.c')
| -rw-r--r-- | arch/sh/kernel/signal_32.c | 9 | 
1 files changed, 4 insertions, 5 deletions
diff --git a/arch/sh/kernel/signal_32.c b/arch/sh/kernel/signal_32.c index 6729703547a..3db37425210 100644 --- a/arch/sh/kernel/signal_32.c +++ b/arch/sh/kernel/signal_32.c @@ -145,7 +145,7 @@ static inline int restore_sigcontext_fpu(struct sigcontext __user *sc)  {  	struct task_struct *tsk = current; -	if (!(current_cpu_data.flags & CPU_HAS_FPU)) +	if (!(boot_cpu_data.flags & CPU_HAS_FPU))  		return 0;  	set_used_math(); @@ -158,7 +158,7 @@ static inline int save_sigcontext_fpu(struct sigcontext __user *sc,  {  	struct task_struct *tsk = current; -	if (!(current_cpu_data.flags & CPU_HAS_FPU)) +	if (!(boot_cpu_data.flags & CPU_HAS_FPU))  		return 0;  	if (!used_math()) { @@ -199,7 +199,7 @@ restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, int *r0_p  #undef COPY  #ifdef CONFIG_SH_FPU -	if (current_cpu_data.flags & CPU_HAS_FPU) { +	if (boot_cpu_data.flags & CPU_HAS_FPU) {  		int owned_fp;  		struct task_struct *tsk = current; @@ -472,6 +472,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,  		err |= __put_user(OR_R0_R0, &frame->retcode[6]);  		err |= __put_user((__NR_rt_sigreturn), &frame->retcode[7]);  		regs->pr = (unsigned long) frame->retcode; +		flush_icache_range(regs->pr, regs->pr + sizeof(frame->retcode));  	}  	if (err) @@ -497,8 +498,6 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,  	pr_debug("SIG deliver (%s:%d): sp=%p pc=%08lx pr=%08lx\n",  		 current->comm, task_pid_nr(current), frame, regs->pc, regs->pr); -	flush_icache_range(regs->pr, regs->pr + sizeof(frame->retcode)); -  	return 0;  give_sigsegv:  |