linux-user,sh4: fix signal retcode address
authorLaurent Vivier <laurent@vivier.eu>
Mon, 23 Nov 2015 10:38:26 +0000 (11:38 +0100)
committerRiku Voipio <riku.voipio@linaro.org>
Fri, 8 Jan 2016 13:24:57 +0000 (15:24 +0200)
commit2a0fa68fb9761e2eb3dae4034131948d33018dc9
treebc45e914b06f678d92bc879c890005c8da5caa04
parent861d72cd28b5793fc367c46b7821a5372b66e3f4
linux-user,sh4: fix signal retcode address

To return from a signal, setup_frame() puts an instruction to
be executed in the stack. This sequence calls the syscall sigreturn().

The address of the instruction must be set in the PR register
to be executed.

This patch fixes this: the current code sets the register to the address
of the instruction in the host address space (which can be 64bit whereas
PR is only 32bit), but the virtual CPU can't access this address space,
so we put in PR the address of the instruction in the guest address space.

This patch also removes an useless variable (ret) in the modified functions.

Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
linux-user/signal.c