|  | /* | 
|  | * FreeBSD has a common ucontext definition for all architectures. | 
|  | * | 
|  | * Copyright 2021 Warner Losh <imp@bsdimp.com> | 
|  | * | 
|  | * SPDX-License-Identifier: GPL-2.0-or-later OR BSD-3-Clause | 
|  | */ | 
|  | #ifndef TARGET_OS_UCONTEXT_H | 
|  | #define TARGET_OS_UCONTEXT_H | 
|  |  | 
|  | /* | 
|  | * Defines the common bits for all of FreeBSD's architectures. Has to be | 
|  | * included AFTER the MD target_mcontext_t is defined, however, so can't | 
|  | * be in the grab-bag that is target_os_signal.h. | 
|  | */ | 
|  |  | 
|  | /* See FreeBSD's sys/ucontext.h */ | 
|  | #define TARGET_MC_GET_CLEAR_RET 0x0001 | 
|  |  | 
|  | /* FreeBSD's sys/_ucontext.h structures */ | 
|  | typedef struct target_ucontext { | 
|  | target_sigset_t     uc_sigmask; | 
|  | target_mcontext_t   uc_mcontext; | 
|  | abi_ulong           uc_link; | 
|  | target_stack_t      uc_stack; | 
|  | int32_t             uc_flags; | 
|  | int32_t             __spare__[4]; | 
|  | } target_ucontext_t; | 
|  |  | 
|  | G_STATIC_ASSERT(TARGET_MCONTEXT_SIZE == sizeof(target_mcontext_t)); | 
|  | G_STATIC_ASSERT(TARGET_UCONTEXT_SIZE == sizeof(target_ucontext_t)); | 
|  |  | 
|  | struct target_sigframe; | 
|  |  | 
|  | abi_long set_sigtramp_args(CPUArchState *env, int sig, | 
|  | struct target_sigframe *frame, | 
|  | abi_ulong frame_addr, | 
|  | struct target_sigaction *ka); | 
|  | abi_long get_mcontext(CPUArchState *env, target_mcontext_t *mcp, int flags); | 
|  | abi_long set_mcontext(CPUArchState *env, target_mcontext_t *mcp, int srflag); | 
|  | abi_long get_ucontext_sigreturn(CPUArchState *env, abi_ulong target_sf, | 
|  | abi_ulong *target_uc); | 
|  |  | 
|  | #endif /* TARGET_OS_UCONTEXT_H */ |