linux-user/alpha: Fix sigsuspend for big-endian hosts
On alpha, the sigset argument for sigsuspend is in a register. When we drop that into memory that happens in host-endianness, but target_to_host_old_sigset will treat it as target-endianness. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Laurent Vivier <laurent@vivier.eu> Message-Id: <20220315084308.433109-2-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
This commit is contained in:
parent
80f0fe3a85
commit
7fb5ef350b
@ -9559,7 +9559,8 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
|
||||
{
|
||||
TaskState *ts = cpu->opaque;
|
||||
#if defined(TARGET_ALPHA)
|
||||
abi_ulong mask = arg1;
|
||||
/* target_to_host_old_sigset will bswap back */
|
||||
abi_ulong mask = tswapal(arg1);
|
||||
target_to_host_old_sigset(&ts->sigsuspend_mask, &mask);
|
||||
#else
|
||||
if (!(p = lock_user(VERIFY_READ, arg1, sizeof(target_sigset_t), 1)))
|
||||
|
Loading…
Reference in New Issue
Block a user