freebsd-dev/sys/amd64
John Baldwin 79ba91952d Use 'e' instead of 'i' constraints with 64-bit atomic operations on amd64.
The ADD, AND, OR, and SUB instructions take at most a 32-bit
sign-extended immediate operand.  64-bit constants that do not fit into
that constraint need to be loaded into a register.  The 'i' constraint
tells the compiler it can pass any integer constant to the assembler,
whereas the 'e' constrain only permits constants that fit into a 32-bit
sign-extended value.  This fixes using
atomic_add/clear/set/subtract_long/64 with constants that do not fit into
a 32-bit sign-extended immediate.

Reported by:	several folks
Tested by:	Pete Wright <pete@nomadlogic.org>
MFC after:	2 weeks
2018-07-03 22:03:28 +00:00
..
acpica Rename assym.s to assym.inc 2018-03-20 17:58:51 +00:00
amd64 inline atomics and allow tied modules to inline locks 2018-07-02 19:48:38 +00:00
cloudabi32 Use TO_PTR() to convert integers to pointers. 2017-11-26 14:45:56 +00:00
cloudabi64 Use TO_PTR() to convert integers to pointers. 2017-11-26 14:45:56 +00:00
conf remove ixl iwarp and ixlv from the build until they are in a working state 2018-06-19 02:48:53 +00:00
ia32 Fix PSL_T inheritance on exec for x86. 2018-04-12 20:43:39 +00:00
include Use 'e' instead of 'i' constraints with 64-bit atomic operations on amd64. 2018-07-03 22:03:28 +00:00
linux Fix the Linux kernel version number calculation 2018-06-22 00:02:03 +00:00
linux32 Fix the Linux kernel version number calculation 2018-06-22 00:02:03 +00:00
pci sys/amd64: further adoption of SPDX licensing ID tags. 2017-11-27 15:03:07 +00:00
sgx Rename assym.s to assym.inc 2018-03-20 17:58:51 +00:00
vmm Add SPDX tags to vmm(4). 2018-06-13 07:02:58 +00:00
Makefile Bring the tags and links entries for amd64 up to date. 2015-10-27 22:59:24 +00:00