Subject: mips: kernel compiled with binutils 2.9.1 on r4000, other mips3?
To: None <,>
From: Jonathan Stone <jonathan@DSG.Stanford.EDU>
List: tech-toolchain
Date: 03/03/1999 02:37:22
hi all,

Every kernel I've tried to build with binutils 2.9.1 gas has died on
my 5000/150 (r4000).  The code produced by gas for the assembler
pseudo-op "divu" changed from binutils 2.8.1 to 2.9.1.

Given the input
        divu    $4,$4,$2
        mfhi    $6

The `old' gas produces

   0:   0082001b        divu    $zero,$a0,$v0
   4:   14400002        bnez    $v0,10 <test_frag+10>
   8:   00000000        nop
   c:   0007000d        break   0x7
  10:   00002012        mflo    $a0
  14:   00003010        mfhi    $a2

While the `improved' code emits

   0:   14400002        bnez    $v0,c <test_frag+c>
   4:   0082001b        divu    $zero,$a0,$v0
   8:   0007000d        break   0x7
   c:   00002012        mflo    $a0
  10:   00003010        mfhi    $a2

which looks valid, and seems to work in userlevel code (the
most-recent pmax snapshot on the FTP server was built using 2.9.1),
but appears to leave 0 in $a2 on my r4000.

Can anyone else report success for kernels on a 5000/50, 5000/150, or
other r4000 for built with binutils 2.9.1?