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"
                       :
