summaryrefslogtreecommitdiffstats
path: root/sys/cddl/compat/opensolaris/kern/opensolaris_atomic.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/cddl/compat/opensolaris/kern/opensolaris_atomic.c')
-rw-r--r--sys/cddl/compat/opensolaris/kern/opensolaris_atomic.c24
1 files changed, 9 insertions, 15 deletions
diff --git a/sys/cddl/compat/opensolaris/kern/opensolaris_atomic.c b/sys/cddl/compat/opensolaris/kern/opensolaris_atomic.c
index 72d1557..4aba9ea 100644
--- a/sys/cddl/compat/opensolaris/kern/opensolaris_atomic.c
+++ b/sys/cddl/compat/opensolaris/kern/opensolaris_atomic.c
@@ -83,8 +83,7 @@ atomic_add_64_nv(volatile uint64_t *target, int64_t delta)
return (newval);
}
-#if defined(__sparc64__) || defined(__powerpc__) || defined(__arm__) || \
- defined(__mips__)
+#if defined(__powerpc__) || defined(__arm__) || defined(__mips__)
void
atomic_or_8(volatile uint8_t *target, uint8_t value)
{
@@ -105,27 +104,23 @@ atomic_or_8_nv(volatile uint8_t *target, uint8_t value)
return (newval);
}
-#ifndef __LP64__
-void *
-atomic_cas_ptr(volatile void *target, void *cmp, void *newval)
+uint64_t
+atomic_cas_64(volatile uint64_t *target, uint64_t cmp, uint64_t newval)
{
- void *oldval, **trg;
+ uint64_t oldval;
mtx_lock(&atomic_mtx);
- trg = __DEVOLATILE(void **, target);
- oldval = *trg;
+ oldval = *target;
if (oldval == cmp)
- *trg = newval;
+ *target = newval;
mtx_unlock(&atomic_mtx);
return (oldval);
}
-#endif
-#ifndef __sparc64__
-uint64_t
-atomic_cas_64(volatile uint64_t *target, uint64_t cmp, uint64_t newval)
+uint32_t
+atomic_cas_32(volatile uint32_t *target, uint32_t cmp, uint32_t newval)
{
- uint64_t oldval;
+ uint32_t oldval;
mtx_lock(&atomic_mtx);
oldval = *target;
@@ -134,7 +129,6 @@ atomic_cas_64(volatile uint64_t *target, uint64_t cmp, uint64_t newval)
mtx_unlock(&atomic_mtx);
return (oldval);
}
-#endif
void
membar_producer(void)
OpenPOWER on IntegriCloud