Skip to content

Commit

Permalink
BHYVE: OS-6851 some bhyve atomics shims are too heavy-handed
Browse files Browse the repository at this point in the history
Reviewed by: John Levon <john.levon@joyent.com>
Reviewed by: Mike Gerdts <mike.gerdts@joyent.com>
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Approved by: Jerry Jelinek <jerry.jelinek@joyent.com>
  • Loading branch information
pfmooney authored and citrus-it committed Apr 5, 2018
1 parent a281e26 commit 3911032
Showing 1 changed file with 5 additions and 44 deletions.
49 changes: 5 additions & 44 deletions usr/src/compat/freebsd/amd64/machine/atomic.h
Expand Up @@ -17,38 +17,14 @@
#ifndef _COMPAT_FREEBSD_AMD64_MACHINE_ATOMIC_H_
#define _COMPAT_FREEBSD_AMD64_MACHINE_ATOMIC_H_

static __inline u_char
atomic_load_acq_char(volatile u_char *p)
{
u_char res;

__asm volatile("lock ; " "cmpxchgb %b0,%1"
: "=a" (res), "=m" (*p)
: "m" (*p) : "memory", "cc");
return (res);
}

static __inline u_short
atomic_load_acq_short(volatile u_short *p)
{
u_short res;

__asm volatile("lock ; " "cmpxchgw %w0,%1"
: "=a" (res), "=m" (*p)
: "m" (*p)
: "memory", "cc");
return (res);
}

static __inline u_int
atomic_load_acq_int(volatile u_int *p)
{
u_int res;

__asm volatile("lock ; " "cmpxchgl %0,%1"
: "=a" (res), "=m" (*p)
: "m" (*p)
: "memory", "cc");
res = *p;
__asm volatile("" : : : "memory");

return (res);
}

Expand All @@ -57,25 +33,10 @@ atomic_load_acq_long(volatile u_long *p)
{
u_long res;

__asm volatile("lock ; " "cmpxchgq %0,%1"
: "=a" (res), "=m" (*p)
: "m" (*p)
: "memory", "cc");
return (res);
}

static __inline void
atomic_store_rel_char(volatile u_char *p, u_char v)
{
res = *p;
__asm volatile("" : : : "memory");
*p = v;
}

static __inline void
atomic_store_rel_short(volatile u_short *p, u_short v)
{
__asm volatile("" : : : "memory");
*p = v;
return (res);
}

static __inline void
Expand Down

0 comments on commit 3911032

Please sign in to comment.