Messages in this thread | | | Date | Mon, 18 Apr 2016 17:54:40 +0200 | From | Ralf Baechle <> | Subject | Re: {standard input}:136: Error: number (0x9000000080000000) larger than 32 bits |
| |
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
| |