Date: Thu, 29 Aug 2013 19:47:53 +0000 (UTC) From: Jung-uk Kim <jkim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r255039 - head/sys/dev/drm2 Message-ID: <201308291947.r7TJlrqI051303@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jkim Date: Thu Aug 29 19:47:52 2013 New Revision: 255039 URL: http://svnweb.freebsd.org/changeset/base/255039 Log: - Remove test_and_set_bit() macro. It is unused since r255037. - Relax atomic_read() and atomic_set() macros. Linux does not require any memory barrier. Also, these macros may be even reordered or optimized away according to the API documentation: https://www.kernel.org/doc/Documentation/atomic_ops.txt Modified: head/sys/dev/drm2/drm_atomic.h Modified: head/sys/dev/drm2/drm_atomic.h ============================================================================== --- head/sys/dev/drm2/drm_atomic.h Thu Aug 29 19:35:14 2013 (r255038) +++ head/sys/dev/drm2/drm_atomic.h Thu Aug 29 19:47:52 2013 (r255039) @@ -37,8 +37,8 @@ typedef uint64_t atomic64_t; #define BITS_TO_LONGS(x) howmany(x, sizeof(long) * NBBY) -#define atomic_set(p, v) atomic_store_rel_int(p, v) -#define atomic_read(p) atomic_load_acq_int(p) +#define atomic_read(p) (*(volatile u_int *)(p)) +#define atomic_set(p, v) do { *(u_int *)(p) = (v); } while (0) #define atomic_add(v, p) atomic_add_int(p, v) #define atomic_sub(v, p) atomic_subtract_int(p, v) @@ -63,9 +63,7 @@ typedef uint64_t atomic64_t; #define set_bit(b, p) \ atomic_set_int((volatile u_int *)(p) + (b) / 32, 1 << (b) % 32) #define test_bit(b, p) \ - (atomic_load_acq_int((volatile u_int *)(p) + (b) / 32) & (1 << (b) % 32)) -#define test_and_set_bit(b, p) \ - atomic_testandset_int((volatile u_int *)(p) + (b) / 32, b) + ((atomic_read((volatile u_int *)(p) + (b) / 32) & (1 << (b) % 32)) != 0) static __inline int find_first_zero_bit(volatile void *p, int max)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201308291947.r7TJlrqI051303>