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 <lethal@linux-sh.org>
This commit is contained in:
parent
a66c2edea5
commit
4d2947f7c6
1 changed files with 1 additions and 2 deletions
|
@ -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(OR_R0_R0, &frame->retcode[6]);
|
||||||
err |= __put_user((__NR_rt_sigreturn), &frame->retcode[7]);
|
err |= __put_user((__NR_rt_sigreturn), &frame->retcode[7]);
|
||||||
regs->pr = (unsigned long) frame->retcode;
|
regs->pr = (unsigned long) frame->retcode;
|
||||||
|
flush_icache_range(regs->pr, regs->pr + sizeof(frame->retcode));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (err)
|
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",
|
pr_debug("SIG deliver (%s:%d): sp=%p pc=%08lx pr=%08lx\n",
|
||||||
current->comm, task_pid_nr(current), frame, regs->pc, regs->pr);
|
current->comm, task_pid_nr(current), frame, regs->pc, regs->pr);
|
||||||
|
|
||||||
flush_icache_range(regs->pr, regs->pr + sizeof(frame->retcode));
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
give_sigsegv:
|
give_sigsegv:
|
||||||
|
|
Reference in a new issue