提交 5b1d59d0 编写于 作者: C Chen Gang 提交者: Riku Voipio

linux-user/signal.c: Use s390 target space address instead of host space

The return address is in target space, so the restorer address needs to
be target space, too.
Signed-off-by: NChen Gang <gang.chen.5i5j@gmail.com>
Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
Reviewed-by: NLaurent Vivier <laurent@vivier.eu>
上级 166c97ed
...@@ -4159,8 +4159,8 @@ static void setup_frame(int sig, struct target_sigaction *ka, ...@@ -4159,8 +4159,8 @@ static void setup_frame(int sig, struct target_sigaction *ka,
env->regs[14] = (unsigned long) env->regs[14] = (unsigned long)
ka->sa_restorer | PSW_ADDR_AMODE; ka->sa_restorer | PSW_ADDR_AMODE;
} else { } else {
env->regs[14] = (unsigned long) env->regs[14] = (frame_addr + offsetof(sigframe, retcode))
frame->retcode | PSW_ADDR_AMODE; | PSW_ADDR_AMODE;
__put_user(S390_SYSCALL_OPCODE | TARGET_NR_sigreturn, __put_user(S390_SYSCALL_OPCODE | TARGET_NR_sigreturn,
(uint16_t *)(frame->retcode)); (uint16_t *)(frame->retcode));
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册