Browse Source
This requires extra work for each target, but adds the common syscall code, and the necessary flag in CPUState. Reviewed-by: Warner Losh <imp@bsdimp.com> Reviewed-by: Laurent Vivier <laurent@vivier.eu> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20211227150127.2659293-4-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier <laurent@vivier.eu>pull/216/head
committed by
Laurent Vivier
4 changed files with 56 additions and 7 deletions
@ -0,0 +1,27 @@ |
|||
/*
|
|||
* Generic prctl unalign functions for linux-user |
|||
* |
|||
* SPDX-License-Identifier: GPL-2.0-or-later |
|||
*/ |
|||
#ifndef GENERIC_TARGET_PRCTL_UNALIGN_H |
|||
#define GENERIC_TARGET_PRCTL_UNALIGN_H |
|||
|
|||
static abi_long do_prctl_get_unalign(CPUArchState *env, target_long arg2) |
|||
{ |
|||
CPUState *cs = env_cpu(env); |
|||
uint32_t res = PR_UNALIGN_NOPRINT; |
|||
if (cs->prctl_unalign_sigbus) { |
|||
res |= PR_UNALIGN_SIGBUS; |
|||
} |
|||
return put_user_u32(res, arg2); |
|||
} |
|||
#define do_prctl_get_unalign do_prctl_get_unalign |
|||
|
|||
static abi_long do_prctl_set_unalign(CPUArchState *env, target_long arg2) |
|||
{ |
|||
env_cpu(env)->prctl_unalign_sigbus = arg2 & PR_UNALIGN_SIGBUS; |
|||
return 0; |
|||
} |
|||
#define do_prctl_set_unalign do_prctl_set_unalign |
|||
|
|||
#endif /* GENERIC_TARGET_PRCTL_UNALIGN_H */ |
|||
Loading…
Reference in new issue