diff options
author | Keith M Wesolowski <wesolows@foobazco.org> | 2014-08-20 20:04:47 +0000 |
---|---|---|
committer | Keith M Wesolowski <wesolows@foobazco.org> | 2014-08-20 20:04:47 +0000 |
commit | 5f00496ef2e39b976b062f196ff01a99fd4864a4 (patch) | |
tree | 20be9cbc8f4b7ed3e616ce23552728083801e846 /usr/src/uts/intel | |
parent | af59b1a40df03681c1c8129aea7b1f5f52f2bcea (diff) | |
parent | 86bb58aec7165f8a0303564575c65e5a2ad58bf1 (diff) | |
download | illumos-joyent-release-20140821.tar.gz |
[illumos-gate merge]20140821release-20140821
commit 86bb58aec7165f8a0303564575c65e5a2ad58bf1
5095 panic when adding a duplicate dbuf to dn_dbufs
commit 60a61f7adabc73a7a0cb70d200ac2a6735f4a6e8
5092 env files don't need to define LOCKNAME by default
5091 illumos.sh env file's LOCKNAME definition is busted
commit 5e3f545c431ec4bce3e1b52f3f81bc9befe501f2
4989 removal of ntfsprogs and parted
commit ba3594ba9b5dd4c846c472a8d657edcb7c8109ac
5066 remove support for non-ANSI compilation
5068 Remove SCCSID() macro from <macros.h>
commit d8ccf998f9c944b8cf27ed840c376f9b79ebce5c
5087 8-bit inline atomic {add,or,and} use wrong reg constraints on x86
Manifests:
usr/src/pkg/manifests/SUNWntfsprogs.mf (torch library)
usr/src/pkg/manifests/SUNWparted.mf (torch headers)
usr/src/pkg/manifests/system-file-system-ntfsprogs.mf
usr/src/pkg/manifests/system-storage-parted.mf
Diffstat (limited to 'usr/src/uts/intel')
-rw-r--r-- | usr/src/uts/intel/asm/atomic.h | 54 |
1 files changed, 27 insertions, 27 deletions
diff --git a/usr/src/uts/intel/asm/atomic.h b/usr/src/uts/intel/asm/atomic.h index 8310186bf5..29913b6bd5 100644 --- a/usr/src/uts/intel/asm/atomic.h +++ b/usr/src/uts/intel/asm/atomic.h @@ -105,24 +105,24 @@ __ATOMIC_OPXX(atomic_dec_ulong, ulong_t, "dec" SUF_LONG) #undef __ATOMIC_OPXX -#define __ATOMIC_OPXX(fxn, type1, type2, op) \ +#define __ATOMIC_OPXX(fxn, type1, type2, op, reg) \ extern __GNU_INLINE void \ fxn(volatile type1 *target, type2 delta) \ { \ __asm__ __volatile__( \ "lock; " op " %1,%0" \ : "+m" (*target) \ - : "ir" (delta)); \ + : "i" reg (delta)); \ } -__ATOMIC_OPXX(atomic_add_8, uint8_t, int8_t, "add" SUF_8) -__ATOMIC_OPXX(atomic_add_16, uint16_t, int16_t, "add" SUF_16) -__ATOMIC_OPXX(atomic_add_32, uint32_t, int32_t, "add" SUF_32) -__ATOMIC_OP64(atomic_add_64, uint64_t, int64_t, "add" SUF_64) -__ATOMIC_OPXX(atomic_add_char, uchar_t, signed char, "add" SUF_8) -__ATOMIC_OPXX(atomic_add_short, ushort_t, short, "add" SUF_16) -__ATOMIC_OPXX(atomic_add_int, uint_t, int, "add" SUF_32) -__ATOMIC_OPXX(atomic_add_long, ulong_t, long, "add" SUF_LONG) +__ATOMIC_OPXX(atomic_add_8, uint8_t, int8_t, "add" SUF_8, "q") +__ATOMIC_OPXX(atomic_add_16, uint16_t, int16_t, "add" SUF_16, "r") +__ATOMIC_OPXX(atomic_add_32, uint32_t, int32_t, "add" SUF_32, "r") +__ATOMIC_OP64(atomic_add_64, uint64_t, int64_t, "add" SUF_64, "r") +__ATOMIC_OPXX(atomic_add_char, uchar_t, signed char, "add" SUF_8, "q") +__ATOMIC_OPXX(atomic_add_short, ushort_t, short, "add" SUF_16, "r") +__ATOMIC_OPXX(atomic_add_int, uint_t, int, "add" SUF_32, "r") +__ATOMIC_OPXX(atomic_add_long, ulong_t, long, "add" SUF_LONG, "r") /* * We don't use the above macro here because atomic_add_ptr has an @@ -140,23 +140,23 @@ atomic_add_ptr(volatile void *target, ssize_t delta) : "ir" (delta)); } -__ATOMIC_OPXX(atomic_or_8, uint8_t, uint8_t, "or" SUF_8) -__ATOMIC_OPXX(atomic_or_16, uint16_t, uint16_t, "or" SUF_16) -__ATOMIC_OPXX(atomic_or_32, uint32_t, uint32_t, "or" SUF_32) -__ATOMIC_OP64(atomic_or_64, uint64_t, uint64_t, "or" SUF_64) -__ATOMIC_OPXX(atomic_or_uchar, uchar_t, uchar_t, "or" SUF_8) -__ATOMIC_OPXX(atomic_or_ushort, ushort_t, ushort_t, "or" SUF_16) -__ATOMIC_OPXX(atomic_or_uint, uint_t, uint_t, "or" SUF_32) -__ATOMIC_OPXX(atomic_or_ulong, ulong_t, ulong_t, "or" SUF_LONG) - -__ATOMIC_OPXX(atomic_and_8, uint8_t, uint8_t, "and" SUF_8) -__ATOMIC_OPXX(atomic_and_16, uint16_t, uint16_t, "and" SUF_16) -__ATOMIC_OPXX(atomic_and_32, uint32_t, uint32_t, "and" SUF_32) -__ATOMIC_OP64(atomic_and_64, uint64_t, uint64_t, "and" SUF_64) -__ATOMIC_OPXX(atomic_and_uchar, uchar_t, uchar_t, "and" SUF_8) -__ATOMIC_OPXX(atomic_and_ushort, ushort_t, ushort_t, "and" SUF_16) -__ATOMIC_OPXX(atomic_and_uint, uint_t, uint_t, "and" SUF_32) -__ATOMIC_OPXX(atomic_and_ulong, ulong_t, ulong_t, "and" SUF_LONG) +__ATOMIC_OPXX(atomic_or_8, uint8_t, uint8_t, "or" SUF_8, "q") +__ATOMIC_OPXX(atomic_or_16, uint16_t, uint16_t, "or" SUF_16, "r") +__ATOMIC_OPXX(atomic_or_32, uint32_t, uint32_t, "or" SUF_32, "r") +__ATOMIC_OP64(atomic_or_64, uint64_t, uint64_t, "or" SUF_64, "r") +__ATOMIC_OPXX(atomic_or_uchar, uchar_t, uchar_t, "or" SUF_8, "q") +__ATOMIC_OPXX(atomic_or_ushort, ushort_t, ushort_t, "or" SUF_16, "r") +__ATOMIC_OPXX(atomic_or_uint, uint_t, uint_t, "or" SUF_32, "r") +__ATOMIC_OPXX(atomic_or_ulong, ulong_t, ulong_t, "or" SUF_LONG, "r") + +__ATOMIC_OPXX(atomic_and_8, uint8_t, uint8_t, "and" SUF_8, "q") +__ATOMIC_OPXX(atomic_and_16, uint16_t, uint16_t, "and" SUF_16, "r") +__ATOMIC_OPXX(atomic_and_32, uint32_t, uint32_t, "and" SUF_32, "r") +__ATOMIC_OP64(atomic_and_64, uint64_t, uint64_t, "and" SUF_64, "r") +__ATOMIC_OPXX(atomic_and_uchar, uchar_t, uchar_t, "and" SUF_8, "q") +__ATOMIC_OPXX(atomic_and_ushort, ushort_t, ushort_t, "and" SUF_16, "r") +__ATOMIC_OPXX(atomic_and_uint, uint_t, uint_t, "and" SUF_32, "r") +__ATOMIC_OPXX(atomic_and_ulong, ulong_t, ulong_t, "and" SUF_LONG, "r") #undef __ATOMIC_OPXX |