From: Paul Mundt Date: Wed, 14 Oct 2009 05:21:40 +0000 (+0900) Subject: sh: Optimize the setup_rt_frame() I-cache flush. X-Git-Tag: v2.6.32-rc5~20^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4d2947f7c69f812f09ff0e5cdc98dfa5317a4d81;p=platform%2Fkernel%2Flinux-3.10.git sh: Optimize the setup_rt_frame() I-cache flush. This only needs to flush the return code via the legacy path, and just invalidates uselessly otherwise. This makes the behaviour consistent for all of the trampoline setup paths. Signed-off-by: Paul Mundt --- diff --git a/arch/sh/kernel/signal_32.c b/arch/sh/kernel/signal_32.c index 55d1f81..3db3742 100644 --- a/arch/sh/kernel/signal_32.c +++ b/arch/sh/kernel/signal_32.c @@ -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: