summaryrefslogtreecommitdiffstats
path: root/sys/cddl/compat/opensolaris
diff options
context:
space:
mode:
authorjchandra <jchandra@FreeBSD.org>2011-01-28 06:12:59 +0000
committerjchandra <jchandra@FreeBSD.org>2011-01-28 06:12:59 +0000
commit494df61f3bbd6b98dbe420f0854c6f0cb98ad36d (patch)
tree80eaa36d6670c31bba13e4745294e76f87c8a16a /sys/cddl/compat/opensolaris
parent2501c5eeee6bb52fa0ab1ccf812fcc63c3c1177d (diff)
downloadFreeBSD-src-494df61f3bbd6b98dbe420f0854c6f0cb98ad36d.zip
FreeBSD-src-494df61f3bbd6b98dbe420f0854c6f0cb98ad36d.tar.gz
CDDL fixes for MIPS n32.
Provide 64 bit atomic ops, and use 32 bit pointer.
Diffstat (limited to 'sys/cddl/compat/opensolaris')
-rw-r--r--sys/cddl/compat/opensolaris/kern/opensolaris_atomic.c2
-rw-r--r--sys/cddl/compat/opensolaris/sys/atomic.h6
2 files changed, 5 insertions, 3 deletions
diff --git a/sys/cddl/compat/opensolaris/kern/opensolaris_atomic.c b/sys/cddl/compat/opensolaris/kern/opensolaris_atomic.c
index bdb8f02..72d1557 100644
--- a/sys/cddl/compat/opensolaris/kern/opensolaris_atomic.c
+++ b/sys/cddl/compat/opensolaris/kern/opensolaris_atomic.c
@@ -52,7 +52,7 @@ atomic_init(void)
}
#endif
-#ifndef __LP64__
+#if !defined(__LP64__) && !defined(__mips_n32)
void
atomic_add_64(volatile uint64_t *target, int64_t delta)
{
diff --git a/sys/cddl/compat/opensolaris/sys/atomic.h b/sys/cddl/compat/opensolaris/sys/atomic.h
index 1a8bd45..ddfb325 100644
--- a/sys/cddl/compat/opensolaris/sys/atomic.h
+++ b/sys/cddl/compat/opensolaris/sys/atomic.h
@@ -36,9 +36,11 @@
atomic_cmpset_ptr((volatile uintptr_t *)(_a), (uintptr_t)(_b), (uintptr_t) (_c))
#define cas32 atomic_cmpset_32
-#ifndef __LP64__
+#if !defined(__LP64__) && !defined(__mips_n32)
extern void atomic_add_64(volatile uint64_t *target, int64_t delta);
extern void atomic_dec_64(volatile uint64_t *target);
+#endif
+#ifndef __LP64__
extern void *atomic_cas_ptr(volatile void *target, void *cmp, void *newval);
#endif
#ifndef __sparc64__
@@ -84,7 +86,7 @@ atomic_dec_32_nv(volatile uint32_t *target)
return (atomic_fetchadd_32(target, -1) - 1);
}
-#ifdef __LP64__
+#if defined(__LP64__) || defined(__mips_n32)
static __inline void
atomic_dec_64(volatile uint64_t *target)
{
OpenPOWER on IntegriCloud