Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 02 Aug 2013 15:35:51 -0400
From:      Jung-uk Kim <jkim@FreeBSD.org>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        svn-src-projects@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r253891 - in projects/atomic64/sys: amd64/include i386/include
Message-ID:  <51FC0A17.3040402@FreeBSD.org>
In-Reply-To: <20130802191442.GD4972@kib.kiev.ua>
References:  <201308021832.r72IW2pR034687@svn.freebsd.org> <20130802191442.GD4972@kib.kiev.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
-----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-----



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?51FC0A17.3040402>