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