xref: /qemu/linux-user/generic/target_prctl_unalign.h (revision 6e8dcacd0840b3c38e7ec664bb9adbccc2108fdd)
1*6e8dcacdSRichard Henderson /*
2*6e8dcacdSRichard Henderson  * Generic prctl unalign functions for linux-user
3*6e8dcacdSRichard Henderson  *
4*6e8dcacdSRichard Henderson  * SPDX-License-Identifier: GPL-2.0-or-later
5*6e8dcacdSRichard Henderson  */
6*6e8dcacdSRichard Henderson #ifndef GENERIC_TARGET_PRCTL_UNALIGN_H
7*6e8dcacdSRichard Henderson #define GENERIC_TARGET_PRCTL_UNALIGN_H
8*6e8dcacdSRichard Henderson 
9*6e8dcacdSRichard Henderson static abi_long do_prctl_get_unalign(CPUArchState *env, target_long arg2)
10*6e8dcacdSRichard Henderson {
11*6e8dcacdSRichard Henderson     CPUState *cs = env_cpu(env);
12*6e8dcacdSRichard Henderson     uint32_t res = PR_UNALIGN_NOPRINT;
13*6e8dcacdSRichard Henderson     if (cs->prctl_unalign_sigbus) {
14*6e8dcacdSRichard Henderson         res |= PR_UNALIGN_SIGBUS;
15*6e8dcacdSRichard Henderson     }
16*6e8dcacdSRichard Henderson     return put_user_u32(res, arg2);
17*6e8dcacdSRichard Henderson }
18*6e8dcacdSRichard Henderson #define do_prctl_get_unalign do_prctl_get_unalign
19*6e8dcacdSRichard Henderson 
20*6e8dcacdSRichard Henderson static abi_long do_prctl_set_unalign(CPUArchState *env, target_long arg2)
21*6e8dcacdSRichard Henderson {
22*6e8dcacdSRichard Henderson     env_cpu(env)->prctl_unalign_sigbus = arg2 & PR_UNALIGN_SIGBUS;
23*6e8dcacdSRichard Henderson     return 0;
24*6e8dcacdSRichard Henderson }
25*6e8dcacdSRichard Henderson #define do_prctl_set_unalign do_prctl_set_unalign
26*6e8dcacdSRichard Henderson 
27*6e8dcacdSRichard Henderson #endif /* GENERIC_TARGET_PRCTL_UNALIGN_H */
28