From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54709) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VWlLX-00077o-IG for qemu-devel@nongnu.org; Thu, 17 Oct 2013 07:02:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VWlLR-0002cd-Hm for qemu-devel@nongnu.org; Thu, 17 Oct 2013 07:02:27 -0400 Received: from mx1.redhat.com ([209.132.183.28]:46360) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VWlLR-0002cT-9W for qemu-devel@nongnu.org; Thu, 17 Oct 2013 07:02:21 -0400 Message-ID: <525FC3B9.5060807@redhat.com> Date: Thu, 17 Oct 2013 13:02:17 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <20131016194653.GA10517@redhat.com> <20131017062751.GK15657@redhat.com> <525FC214.4020501@redhat.com> <20131017105807.GA26798@redhat.com> In-Reply-To: <20131017105807.GA26798@redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] kvm-unittest: fix build with gcc 4.3.X and older List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Gleb Natapov Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org, "Michael S. Tsirkin" Il 17/10/2013 12:58, Gleb Natapov ha scritto: >>> > > @@ -143,14 +143,14 @@ static inline int rtc_in(u8 reg) >>> > > { >>> > > u8 x = reg; >>> > > asm volatile("outb %b1, $0x70; inb $0x71, %b0" >>> > > - : "+a"(x) : "0"(x)); >>> > > + : "=a"(x) : "0"(x)); >>> > > return x; >>> > > } >> > >> > This should be wrong. GCC should complain that the same operand is used >> > for both input and output but has an "=" constraint. >> > >>> > > static inline void rtc_out(u8 reg, u8 val) >>> > > { >>> > > asm volatile("outb %b1, $0x70; mov %b2, %b1; outb %b1, $0x71" >>> > > - : "+a"(reg) : "0"(reg), "ri"(val)); >>> > > + : "=a"(reg) : "0"(reg), "ri"(val)); >>> > > } >> > >> > Same here. >> > >> > But I'm not sure what is the error message for older GCC for s3.c, as I >> > wrote in reply to Michael. >> > > x86/s3.c: In function 'main': > x86/s3.c:145: error: inconsistent operand constraints in an 'asm' > > And I am puzzled by this too. Hmm, looks like my version is the incorrect one and, if you use "+a" you need not use the matching input constraint. So it's either your version, or one that removes the "0" altogether. Thus, Reviewed-by: Paolo Bonzini Paolo