Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752640AbcDRPyr (ORCPT ); Mon, 18 Apr 2016 11:54:47 -0400 Received: from eddie.linux-mips.org ([148.251.95.138]:59048 "EHLO cvs.linux-mips.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751808AbcDRPyq (ORCPT ); Mon, 18 Apr 2016 11:54:46 -0400 Date: Mon, 18 Apr 2016 17:54:40 +0200 From: Ralf Baechle To: "Maciej W. Rozycki" Cc: "Maciej W. Rozycki" , kbuild test robot , Paul Burton , kbuild-all@01.org, linux-kernel@vger.kernel.org Subject: Re: {standard input}:136: Error: number (0x9000000080000000) larger than 32 bits Message-ID: <20160418155440.GC24051@linux-mips.org> References: <201604170836.kTyP1sCY%fengguang.wu@intel.com> <20160417011926.GA4014@linux-mips.org> <20160418133449.GB24051@linux-mips.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2536 Lines: 65 On Mon, Apr 18, 2016 at 03:25:56PM +0100, Maciej W. Rozycki wrote: > On Mon, 18 Apr 2016, Ralf Baechle wrote: > > > The old case btw, affects ip22 with a random_config: > > > > CC arch/mips/mm/sc-ip22.o > > {standard input}: Assembler messages: > > {standard input}:137: Error: number (0x9000000080000000) larger than 32 bits > > {standard input}:162: Error: number (0x9000000080000000) larger than 32 bits > > scripts/Makefile.build:258: recipe for target 'arch/mips/mm/sc-ip22.o' failed > > make[2]: *** [arch/mips/mm/sc-ip22.o] Error 1 > > scripts/Makefile.build:403: recipe for target 'arch/mips/mm' failed > > make[1]: *** [arch/mips/mm] Error 2 > > Makefile:947: recipe for target 'arch/mips' failed > > make: *** [arch/mips] Error 2 > > > > and I was able to reproduce it with binutils 2.26 and commit > > c517d838eb7d07bbe9507871fab3931deccff539 ("Linux 4.0-rc1"). The code > > in question looks like: > > > > static inline void indy_sc_wipe(unsigned long first, unsigned long last) > > { > > unsigned long tmp; > > > > __asm__ __volatile__( > > ".set\tpush\t\t\t# indy_sc_wipe\n\t" > > ".set\tnoreorder\n\t" > > ".set\tmips3\n\t" > > ".set\tnoat\n\t" > > "mfc0\t%2, $12\n\t" > > "li\t$1, 0x80\t\t\t# Go 64 bit\n\t" > > "mtc0\t$1, $12\n\t" > > > > "dli\t$1, 0x9000000080000000\n\t" > > That does not help me, I'm afraid, I can't trigger the issue with this > piece of code alone. It may be caused by a particular combination of GAS > command line options and `.set' directives. > > Since you can reproduce it, can you please send me the offending .s file > (`make arch/mips/mm/sc-ip22.s') and the GAS invocation line used? GCC > will print the latter along all kinds of diagnostic stuff if -v is passed > to an invocation involving assembly (e.g. `make V=1 CFLAGS_sc-ip22.o=-v > arch/mips/mm/sc-ip22.o'). You can send me the whole diagnostics, I'll > filter what I need. > > I think it'll be the most efficient way to move forward; otherwise I may > keep missing the issue. I extracted a rather simple test case: $ echo >> testcase .s << EOF .set mips3 dli $2, 0x9000000080000000 EOF $ mips-linux-as -mips3 -march=r4600 -o testcase.o testcase.s testcase.s: Assembler messages: testcase.s:2: Error: number (0x9000000080000000) larger than 32 bits $ mips-linux-as -mips4 -march=vr5000 -o testcase.o testcase.s $ I can trigger the error message with vanilla 2.25 and 2.26 but not 2.24. Ralf