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: Chen Gang <gang.chen.5i5j@gmail.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Laurent Vivier <laurent@vivier.eu>
This commit is contained in:
parent
166c97edd6
commit
5b1d59d0bb
@ -4159,8 +4159,8 @@ static void setup_frame(int sig, struct target_sigaction *ka,
|
||||
env->regs[14] = (unsigned long)
|
||||
ka->sa_restorer | PSW_ADDR_AMODE;
|
||||
} else {
|
||||
env->regs[14] = (unsigned long)
|
||||
frame->retcode | PSW_ADDR_AMODE;
|
||||
env->regs[14] = (frame_addr + offsetof(sigframe, retcode))
|
||||
| PSW_ADDR_AMODE;
|
||||
__put_user(S390_SYSCALL_OPCODE | TARGET_NR_sigreturn,
|
||||
(uint16_t *)(frame->retcode));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user