openbsd
diff --git a/src/libthread/386-ucontext.h b/src/libthread/386-ucontext.h
index 87edc79..35e99ca 100644
--- a/src/libthread/386-ucontext.h
+++ b/src/libthread/386-ucontext.h
@@ -1,4 +1,5 @@
-
+typedef struct mcontext mcontext_t;
+typedef struct ucontext ucontext_t;
 
 extern	int		getcontext(ucontext_t*);
 extern	void		setcontext(ucontext_t*);
@@ -67,7 +68,7 @@
  * $FreeBSD: src/sys/i386/include/ucontext.h,v 1.4 1999/10/11 20:33:09 luoqi Exp $
  */
 
-typedef struct __mcontext {
+struct mcontext {
 	/*
 	 * The first 20 fields must match the definition of
 	 * sigcontext. So that we can support sigcontext
@@ -96,9 +97,9 @@
 
 	int	mc_fpregs[28];		/* env87 + fpacc87 + u_long */
 	int	__spare__[17];
-} mcontext_t;
+};
 
-typedef struct __ucontext {
+struct ucontext {
 	/*
 	 * Keep the order of the first two fields. Also,
 	 * keep them the first two fields in the structure.
@@ -113,6 +114,6 @@
 	struct __ucontext *uc_link;
 	stack_t		uc_stack;
 	int		__spare__[8];
-} ucontext_t;
+};
 
 
diff --git a/src/libthread/sysofiles.sh b/src/libthread/sysofiles.sh
index 3c3ee9c..be0b2fb 100644
--- a/src/libthread/sysofiles.sh
+++ b/src/libthread/sysofiles.sh
@@ -23,6 +23,8 @@
 *-Darwin-*)
 	echo ${SYSNAME}-${OBJTYPE}-asm.o ${SYSNAME}-${OBJTYPE}.o pthread.o
 	;;
+386-OpenBSD-*)
+	echo ${SYSNAME}-${OBJTYPE}-asm.o ${SYSNAME}-${OBJTYPE}.o pthread.o
 *-OpenBSD-*)
 	echo ${SYSNAME}-${OBJTYPE}-asm.o ${SYSNAME}-${OBJTYPE}.o $SYSNAME.o
 	;;
diff --git a/src/libthread/threadimpl.h b/src/libthread/threadimpl.h
index ad66ee5..a46019b 100644
--- a/src/libthread/threadimpl.h
+++ b/src/libthread/threadimpl.h
@@ -28,6 +28,10 @@
 #endif
 
 #if defined(__OpenBSD__)
+#	define mcontext libthread_mcontext
+#	define mcontext_t libthread_mcontext_t
+#	define ucontext libthread_ucontext
+#	define ucontext_t libthread_ucontext_t
 #	if defined __i386__
 #		include "386-ucontext.h"
 #	else