commit 4493abdf56ae497d8a3c79c136f7f56f0dd818b1
parent bea13c27623fb389d20cb90d0e26fffb1da10534
Author: rminnich@gmail.com <none@none>
Date:   Tue, 18 Jan 2011 18:31:25 -0800
This now builds fine on darwin if you say make 9vx/9vx in vx32/src
Add oscmpswap -- builds will now break on Linux but that's because you
have to fix it.
Diffstat:
5 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/src/9vx/Makefrag b/src/9vx/Makefrag
@@ -97,7 +97,7 @@ PLAN9_OBJS = \
 	)
 
 ifeq ($(OS),darwin)
-PLAN9_OBJS := $(PLAN9_OBJS) 9vx/osx/signal.o
+PLAN9_OBJS := $(PLAN9_OBJS) 9vx/osx/signal.o 9vx/osx/cmpswap.o
 endif
 
 PLAN9_A_OBJS = \
diff --git a/src/9vx/a/fns.h b/src/9vx/a/fns.h
@@ -8,6 +8,7 @@ ulong	cankaddr(ulong);
 void	clockintr(Ureg*, void*);
 int	(*cmpswap)(long*, long, long);
 int	cmpswap486(long*, long, long);
+int	oscmpswap(long*, long, long);
 void	(*coherence)(void);
 void	cpuid(int, ulong regs[]);
 int	cpuidentify(void);
diff --git a/src/9vx/main.c b/src/9vx/main.c
@@ -88,6 +88,7 @@ main(int argc, char **argv)
 #endif
 	setmach(&mach0);
 	coherence = nop;
+	cmpswap = oscmpswap;
 	quotefmtinstall();
 
 	cpulimit = 0;
diff --git a/src/9vx/osx/cmpswap.c b/src/9vx/osx/cmpswap.c
@@ -0,0 +1,9 @@
+#include <libkern/OSAtomic.h>
+
+int
+oscmpswap(long *addr, long oldValue, long newValue)
+{
+	if (OSAtomicCompareAndSwapLong(oldValue, newValue, addr))
+		return 1;
+	return 0;
+}
diff --git a/src/Makefrag b/src/Makefrag
@@ -5,14 +5,14 @@ COMMON_CFLAGS = -g -O2 -MD -std=gnu99 -I. -fno-stack-protector $(CFLAGS)
 COMMON_LDFLAGS = -g -L. $(LDFLAGS)
 
 ifeq ($(OS),darwin)
-COMMON_CFLAGS += -m32 -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -DARCH=i386
-COMMON_LDFLAGS += -m32
+	COMMON_CFLAGS += -m32 -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -DARCH=i386
+	COMMON_LDFLAGS += -m32
 endif
 
  # Host environment compiler options
 HOST_CC		:= $(CC) -fno-inline
 ifeq ($(OS),darwin)
-	HOST_CC		:= $(HOST_CC)  -D_XOPEN_SOURCE -arch i386 -m32
+	HOST_CC		:= $(HOST_CC)  -D_XOPEN_SOURCE -arch i386 -m32  -DARCH=i386
 endif
 HOST_LD		:= $(LD) -arch i386
 HOST_AR		:= $(AR)
@@ -48,8 +48,10 @@ endif
 
 INSTALL = install
 
+# there's only one thing we really care about. 9vx
+9vx/9vx:
 # Make sure that 'all' is the first target
-all:
+all: 
 
 # Install libvx32 too
 install: 9vx/install libvxc/install vxlinux/install vxrun/install