|
From: <gs...@no...> - 2002-02-13 23:51:40
|
The following patch adds support for NetBSD/i386 and NetBSD/sparc to
state-threads. I already uploaded it to the state-threads patch
repository on sourceforge, but apparently no one is actually using
that so I'm resending it to the state-threads-devel list.
--
Andreas Gustafsson, gs...@no...
diff -u -r st-1.3d.orig/Makefile st-1.3d/Makefile
--- st-1.3d.orig/Makefile Tue Jan 15 22:34:48 2002
+++ st-1.3d/Makefile Fri Feb 8 17:17:02 2002
@@ -46,6 +46,7 @@
#OS = IRIX_64
#OS = LINUX
#OS = LINUX_IA64
+#OS = NETBSD
#OS = OPENBSD
#OS = OSF1
#OS = SOLARIS
@@ -86,6 +87,7 @@
irix-64-debug irix-64-optimized \
linux-debug linux-optimized \
linux-ia64-debug linux-ia64-optimized \
+ netbsd-debug netbsd-optimized \
openbsd-debug openbsd-optimized \
osf1-debug osf1-optimized \
solaris-debug solaris-optimized
@@ -148,6 +150,12 @@
OTHER_FLAGS = -Wall
endif
+ifeq ($(OS), NETBSD)
+SFLAGS = -fPIC
+LDFLAGS = -shared -soname=$(SONAME) -lc
+OTHER_FLAGS = -Wall
+endif
+
ifeq ($(OS), OPENBSD)
SFLAGS = -fPIC
LDFLAGS = -shared -soname=$(SONAME) -lc
@@ -326,6 +334,11 @@
$(MAKE) OS="LINUX_IA64" BUILD="DBG"
linux-ia64-optimized:
$(MAKE) OS="LINUX_IA64" BUILD="OPT"
+
+netbsd-debug:
+ $(MAKE) OS="NETBSD" BUILD="DBG"
+netbsd-optimized:
+ $(MAKE) OS="NETBSD" BUILD="OPT"
openbsd-debug:
$(MAKE) OS="OPENBSD" BUILD="DBG"
diff -u -r st-1.3d.orig/examples/Makefile st-1.3d/examples/Makefile
--- st-1.3d.orig/examples/Makefile Sat Nov 3 13:18:42 2001
+++ st-1.3d/examples/Makefile Fri Feb 8 17:17:43 2002
@@ -38,6 +38,7 @@
# IRIX_64
# LINUX
# LINUX_IA64
+# NETBSD
# OPENBSD
# OSF1
# SOLARIS
diff -u -r st-1.3d.orig/md.h st-1.3d/md.h
--- st-1.3d.orig/md.h Tue Jan 15 22:20:40 2002
+++ st-1.3d/md.h Fri Feb 8 17:13:40 2002
@@ -245,6 +245,40 @@
(void) gettimeofday(&tv, NULL); \
return (tv.tv_sec * 1000000LL + tv.tv_usec)
+#elif defined (NETBSD)
+
+#define MD_STACK_GROWS_DOWN
+#define MD_USE_BSD_ANON_MMAP
+#define MD_ACCEPT_NB_INHERITED
+#define MD_ALWAYS_UNSERIALIZED_ACCEPT
+#define MD_HAVE_SOCKLEN_T
+
+#define MD_SETJMP(env) _setjmp(env)
+#define MD_LONGJMP(env, val) _longjmp(env, val)
+
+#if __sparc__
+#define MD_INIT_CONTEXT(_thread, _sp, _main) \
+ ST_BEGIN_MACRO \
+ (void) MD_SETJMP((_thread)->context); \
+ (_thread)->context[0] = (long) (_sp); \
+ (_thread)->context[1] = (long) (_main) - 8; \
+ ST_END_MACRO
+#elif __i386__
+#define MD_INIT_CONTEXT(_thread, _sp, _main) \
+ ST_BEGIN_MACRO \
+ (void) MD_SETJMP((_thread)->context); \
+ (_thread)->context[0] = (long) _main; \
+ (_thread)->context[2] = (long) (_sp); \
+ ST_END_MACRO
+#else
+#error Unsupported architecture
+#endif
+
+#define MD_GET_UTIME() \
+ struct timeval tv; \
+ (void) gettimeofday(&tv, NULL); \
+ return (tv.tv_sec * 1000000LL + tv.tv_usec)
+
#elif defined (OPENBSD)
#define MD_STACK_GROWS_DOWN
diff -u -r st-1.3d.orig/osguess.sh st-1.3d/osguess.sh
--- st-1.3d.orig/osguess.sh Tue Jan 15 22:34:20 2002
+++ st-1.3d/osguess.sh Fri Feb 8 17:18:43 2002
@@ -32,6 +32,7 @@
*-sgi-irix6* ) OS=IRIX ;;
ia64-*-linux* ) OS=LINUX_IA64 ;;
*-linux* ) OS=LINUX ;;
+ *-netbsd* ) OS=NETBSD ;;
*-openbsd* ) OS=OPENBSD ;;
*-dec-osf* ) OS=OSF1 ;;
*-solaris2* ) OS=SOLARIS ;;
|