aboutsummaryrefslogtreecommitdiff
path: root/bsd-user/x86_64/target_arch_signal.h
diff options
context:
space:
mode:
Diffstat (limited to 'bsd-user/x86_64/target_arch_signal.h')
-rw-r--r--bsd-user/x86_64/target_arch_signal.h110
1 files changed, 58 insertions, 52 deletions
diff --git a/bsd-user/x86_64/target_arch_signal.h b/bsd-user/x86_64/target_arch_signal.h
index 4c1ff0e5ba..ca24bf1e7f 100644
--- a/bsd-user/x86_64/target_arch_signal.h
+++ b/bsd-user/x86_64/target_arch_signal.h
@@ -15,8 +15,9 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef _TARGET_ARCH_SIGNAL_H_
-#define _TARGET_ARCH_SIGNAL_H_
+
+#ifndef TARGET_ARCH_SIGNAL_H
+#define TARGET_ARCH_SIGNAL_H
#include "cpu.h"
@@ -27,23 +28,64 @@
#define TARGET_MINSIGSTKSZ (512 * 4) /* min sig stack size */
#define TARGET_SIGSTKSZ (MINSIGSTKSZ + 32768) /* recommended size */
-#define TARGET_MC_GET_CLEAR_RET 0x0001
+typedef struct target_mcontext {
+ abi_ulong mc_onstack; /* XXX - sigcontext compat. */
+ abi_ulong mc_rdi; /* machine state (struct trapframe) */
+ abi_ulong mc_rsi;
+ abi_ulong mc_rdx;
+ abi_ulong mc_rcx;
+ abi_ulong mc_r8;
+ abi_ulong mc_r9;
+ abi_ulong mc_rax;
+ abi_ulong mc_rbx;
+ abi_ulong mc_rbp;
+ abi_ulong mc_r10;
+ abi_ulong mc_r11;
+ abi_ulong mc_r12;
+ abi_ulong mc_r13;
+ abi_ulong mc_r14;
+ abi_ulong mc_r15;
+ uint32_t mc_trapno;
+ uint16_t mc_fs;
+ uint16_t mc_gs;
+ abi_ulong mc_addr;
+ uint32_t mc_flags;
+ uint16_t mc_es;
+ uint16_t mc_ds;
+ abi_ulong mc_err;
+ abi_ulong mc_rip;
+ abi_ulong mc_cs;
+ abi_ulong mc_rflags;
+ abi_ulong mc_rsp;
+ abi_ulong mc_ss;
-struct target_sigcontext {
- /* to be added */
-};
+ abi_long mc_len; /* sizeof(mcontext_t) */
-typedef struct target_mcontext {
+#define _MC_FPFMT_NODEV 0x10000 /* device not present or configured */
+#define _MC_FPFMT_XMM 0x10002
+ abi_long mc_fpformat;
+#define _MC_FPOWNED_NONE 0x20000 /* FP state not used */
+#define _MC_FPOWNED_FPU 0x20001 /* FP state came from FPU */
+#define _MC_FPOWNED_PCB 0x20002 /* FP state came from PCB */
+ abi_long mc_ownedfp;
+ /*
+ * See <machine/fpu.h> for the internals of mc_fpstate[].
+ */
+ abi_long mc_fpstate[64] __aligned(16);
+
+ abi_ulong mc_fsbase;
+ abi_ulong mc_gsbase;
+
+ abi_ulong mc_xfpustate;
+ abi_ulong mc_xfpustate_len;
+
+ abi_long mc_spare[4];
} target_mcontext_t;
-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;
+#define TARGET_MCONTEXT_SIZE 800
+#define TARGET_UCONTEXT_SIZE 880
+
+#include "target_os_ucontext.h"
struct target_sigframe {
abi_ulong sf_signum;
@@ -55,40 +97,4 @@ struct target_sigframe {
uint32_t __spare__[2];
};
-/*
- * Compare to amd64/amd64/machdep.c sendsig()
- * Assumes that target stack frame memory is locked.
- */
-static inline abi_long set_sigtramp_args(CPUX86State *regs,
- int sig, struct target_sigframe *frame, abi_ulong frame_addr,
- struct target_sigaction *ka)
-{
- /* XXX return -TARGET_EOPNOTSUPP; */
- return 0;
-}
-
-/* Compare to amd64/amd64/machdep.c get_mcontext() */
-static inline abi_long get_mcontext(CPUX86State *regs,
- target_mcontext_t *mcp, int flags)
-{
- /* XXX */
- return -TARGET_EOPNOTSUPP;
-}
-
-/* Compare to amd64/amd64/machdep.c set_mcontext() */
-static inline abi_long set_mcontext(CPUX86State *regs,
- target_mcontext_t *mcp, int srflag)
-{
- /* XXX */
- return -TARGET_EOPNOTSUPP;
-}
-
-static inline abi_long get_ucontext_sigreturn(CPUX86State *regs,
- abi_ulong target_sf, abi_ulong *target_uc)
-{
- /* XXX */
- *target_uc = 0;
- return -TARGET_EOPNOTSUPP;
-}
-
-#endif /* !TARGET_ARCH_SIGNAL_H_ */
+#endif /* TARGET_ARCH_SIGNAL_H */