mystuff/emulators/wine/patches/patch-dlls_ntdll_unix_signa...

67 lines
2.8 KiB
Plaintext

Index: dlls/ntdll/unix/signal_x86_64.c
--- dlls/ntdll/unix/signal_x86_64.c.orig
+++ dlls/ntdll/unix/signal_x86_64.c
@@ -206,6 +206,39 @@ __ASM_GLOBAL_FUNC( alloc_fs_sel,
#define FPU_sig(context) ((XMM_SAVE_AREA32 *)((context)->uc_mcontext.__fpregs))
#define XState_sig(context) NULL
+#elif defined(__OpenBSD__)
+
+#include <amd64/trap.h>
+
+#define RAX_sig(context) ((context)->sc_rax)
+#define RBX_sig(context) ((context)->sc_rbx)
+#define RCX_sig(context) ((context)->sc_rcx)
+#define RDX_sig(context) ((context)->sc_rdx)
+#define RSI_sig(context) ((context)->sc_rsi)
+#define RDI_sig(context) ((context)->sc_rdi)
+#define RBP_sig(context) ((context)->sc_rbp)
+#define R8_sig(context) ((context)->sc_r8)
+#define R9_sig(context) ((context)->sc_r9)
+#define R10_sig(context) ((context)->sc_r10)
+#define R11_sig(context) ((context)->sc_r11)
+#define R12_sig(context) ((context)->sc_r12)
+#define R13_sig(context) ((context)->sc_r13)
+#define R14_sig(context) ((context)->sc_r14)
+#define R15_sig(context) ((context)->sc_r15)
+#define CS_sig(context) ((context)->sc_cs)
+#define DS_sig(context) ((context)->sc_ds)
+#define ES_sig(context) ((context)->sc_es)
+#define FS_sig(context) ((context)->sc_fs)
+#define GS_sig(context) ((context)->sc_gs)
+#define SS_sig(context) ((context)->sc_ss)
+#define EFL_sig(context) ((context)->sc_rflags)
+#define RIP_sig(context) ((context)->sc_rip)
+#define RSP_sig(context) ((context)->sc_rsp)
+#define TRAP_sig(context) ((context)->sc_trapno)
+#define ERROR_sig(context) ((context)->sc_err)
+#define FPU_sig(context) ((XMM_SAVE_AREA32 *)((context)->sc_fpstate))
+#define XState_sig(context) NULL
+
#elif defined (__APPLE__)
#define RAX_sig(context) ((context)->uc_mcontext->__ss.__rax)
@@ -258,8 +291,13 @@ enum i386_trap_code
TRAP_x86_PAGEFLT = T_PAGEFLT, /* Page fault */
TRAP_x86_ARITHTRAP = T_ARITHTRAP, /* Floating point exception */
TRAP_x86_ALIGNFLT = T_ALIGNFLT, /* Alignment check exception */
+#if defined(__OpenBSD__)
+ TRAP_x86_MCHK = T_MCA, /* Machine check exception */
+ TRAP_x86_CACHEFLT = T_XMM /* Cache flush exception */
+#else
TRAP_x86_MCHK = T_MCHK, /* Machine check exception */
TRAP_x86_CACHEFLT = T_XMMFLT /* Cache flush exception */
+#endif
#else
TRAP_x86_DIVIDE = 0, /* Division by zero exception */
TRAP_x86_TRCTRAP = 1, /* Single-step exception */
@@ -2931,6 +2969,8 @@ void signal_init_thread( TEB *teb )
amd64_set_gsbase( teb );
#elif defined(__NetBSD__)
sysarch( X86_64_SET_GSBASE, &teb );
+#elif defined(__OpenBSD__)
+ sysarch( 0, &teb ); /* XXX: TODO */
#elif defined (__APPLE__)
__asm__ volatile (".byte 0x65\n\tmovq %0,%c1"
: