svn commit: r253891 - in projects/atomic64/sys: amd64/include i386/include
Jung-uk Kim
jkim at FreeBSD.org
Fri Aug 2 19:37:21 UTC 2013
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 2013-08-02 15:14:42 -0400, Konstantin Belousov wrote:
> On Fri, Aug 02, 2013 at 06:32:02PM +0000, Jung-uk Kim wrote:
>> Author: jkim Date: Fri Aug 2 18:32:01 2013 New Revision: 253891
>> URL: http://svnweb.freebsd.org/changeset/base/253891
>>
>> Log: Allow an immediate for the bit number.
>>
>> Suggested by:
>>
>> Modified: projects/atomic64/sys/amd64/include/atomic.h
>> projects/atomic64/sys/i386/include/atomic.h
>>
>> Modified: projects/atomic64/sys/amd64/include/atomic.h
>> ==============================================================================
>>
>>
- --- projects/atomic64/sys/amd64/include/atomic.h Fri Aug 2 18:05:42
2013 (r253890)
>> +++ projects/atomic64/sys/amd64/include/atomic.h Fri Aug 2
>> 18:32:01 2013 (r253891) @@ -225,7 +225,7 @@
>> atomic_testandset_int(volatile u_int *p, "#
>> atomic_testandset_int" : "=r" (res), /* 0 */ "=m" (*p) /* 1
>> */ - : "r" (v), /* 2 */ + : "Ir" (v % 32), /* 2 */ "m" (*p)
>> /* 3 */ : "cc"); return (res); @@ -243,7 +243,7 @@
>> atomic_testandset_long(volatile u_long * "#
>> atomic_testandset_long" : "=r" (res), /* 0 */ "=m" (*p) /* 1
>> */ - : "r" ((u_long)v), /* 2 */ + : "Jr" ((u_long)v % 64), /* 2
>> */ "m" (*p) /* 3 */ : "cc"); return (res);
>>
>> Modified: projects/atomic64/sys/i386/include/atomic.h
>> ==============================================================================
>>
>>
- --- projects/atomic64/sys/i386/include/atomic.h Fri Aug 2 18:05:42
2013 (r253890)
>> +++ projects/atomic64/sys/i386/include/atomic.h Fri Aug 2
>> 18:32:01 2013 (r253891) @@ -364,9 +364,9 @@
>> atomic_testandset_int(volatile u_int *p, " btsl %2, %1 ; " " setc
>> %0 ; " "# atomic_testandset_int" - : "=r" (res), /* 0 (result)
>> */ + : "=r" (res), /* 0 */ "=m" (*p) /* 1 */ - : "r" (v),
>> /* 2 */ + : "Ir" (v % 32), /* 2 */ "m" (*p) /* 3 */ : "cc");
>> return (res);
>
> You should also adjust the pointer then, to compensate the clamp
> of the bit number. Bit operations apparently work on
> arbitrary-length bitstrings.
It seems I missed note section of the i386 manual. :-(
Jung-uk Kim
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.20 (FreeBSD)
iQEcBAEBAgAGBQJR/AoXAAoJECXpabHZMqHOFLkIAIp8yFLiGGDGuT1M80sj2kRV
qEECAV3mncbuAynS1sjKFeCDpv4fJCtcWbqmDmn6QFDE3utkGaFaseSdoyhgMzUs
laoiLuulfrSHg7E6VfOgUFEdBWZt+zyBsigM60RlGV/7qW8J/W42xYtJwurjO6a1
eRErfHxCdRvTc1I/PXZQXF0bPySIciJOVJXAKLThgCG92TGXWjEh78zwYoSSQ5Jl
JG39HyaDrkqDna/eh9nZ8iyvyJWE5MckhgP6MCEYNuZzM8mYDRiOBOITZ7/OF40o
8ePCD/6eE59gg76ODj57X+stWCPP+KMZftc9WfXiGieVrJSdpL/Mq81xU8X90dU=
=Mcwe
-----END PGP SIGNATURE-----
More information about the svn-src-projects
mailing list