linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* Big Endian broken?
@ 2014-06-03  9:56 Russell King - ARM Linux
  2014-06-03 10:13 ` Arnd Bergmann
  0 siblings, 1 reply; 3+ messages in thread
From: Russell King - ARM Linux @ 2014-06-03  9:56 UTC (permalink / raw)
  To: linux-arm-kernel

Last night's randconfig build had big endian enabled:

CONFIG_CPU_BIG_ENDIAN=y
CONFIG_CPU_ENDIAN_BE8=y

which found this:

  CC      lib/lockref.o
/tmp/ccWo86hf.s: Assembler messages:
/tmp/ccWo86hf.s:63: Error: even register required -- `strexd r1,r5,r6,[r4]'
/tmp/ccWo86hf.s:135: Error: even register required -- `strexd r1,r5,r6,[r4]'
/tmp/ccWo86hf.s:212: Error: even register required -- `strexd r1,r5,r6,[r4]'
/tmp/ccWo86hf.s:291: Error: even register required -- `strexd r1,r5,r6,[r4]'
/tmp/ccWo86hf.s:398: Error: even register required -- `strexd r1,r5,r6,[r4]'
make[2]: *** [lib/lockref.o] Error 1

It looks to me like a toolchain issue - the compiler has swapped the
register order from (r6,r5) to (r5,r6) for BE, but the assembler still
wants (<even>,<odd>) for this instruction.  Maybe the BE guys can take
a look?

Full config:

http://www.arm.linux.org.uk/developer/build/file.php?lid=8653

-- 
FTTC broadband for 0.8mile line: now at 9.7Mbps down 460kbps up... slowly
improving, and getting towards what was expected from it.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Big Endian broken?
  2014-06-03  9:56 Big Endian broken? Russell King - ARM Linux
@ 2014-06-03 10:13 ` Arnd Bergmann
  2014-06-03 10:32   ` Russell King - ARM Linux
  0 siblings, 1 reply; 3+ messages in thread
From: Arnd Bergmann @ 2014-06-03 10:13 UTC (permalink / raw)
  To: linux-arm-kernel

On Tuesday 03 June 2014 10:56:19 Russell King - ARM Linux wrote:
> Last night's randconfig build had big endian enabled:
> 
> CONFIG_CPU_BIG_ENDIAN=y
> CONFIG_CPU_ENDIAN_BE8=y
> 
> which found this:
> 
>   CC      lib/lockref.o
> /tmp/ccWo86hf.s: Assembler messages:
> /tmp/ccWo86hf.s:63: Error: even register required -- `strexd r1,r5,r6,[r4]'
> /tmp/ccWo86hf.s:135: Error: even register required -- `strexd r1,r5,r6,[r4]'
> /tmp/ccWo86hf.s:212: Error: even register required -- `strexd r1,r5,r6,[r4]'
> /tmp/ccWo86hf.s:291: Error: even register required -- `strexd r1,r5,r6,[r4]'
> /tmp/ccWo86hf.s:398: Error: even register required -- `strexd r1,r5,r6,[r4]'
> make[2]: *** [lib/lockref.o] Error 1
> 
> It looks to me like a toolchain issue - the compiler has swapped the
> register order from (r6,r5) to (r5,r6) for BE, but the assembler still
> wants (<even>,<odd>) for this instruction.  Maybe the BE guys can take
> a look?
> 
> Full config:
> 
> http://www.arm.linux.org.uk/developer/build/file.php?lid=8653
> 


Which toolchain are you using? I just tried reproducing this but
it works on linux-next with your config for every version I tried:
ubuntu 4.6, 4.7, 4.8 and vanilla 4.8.0, 4.8.3, 4.9.0, 4.10-pre,
and gas 2.23.52.20130913 as well as 2.24.51.20131021.

I get the same even-odd pair for all versions:

gcc-4.6
        strexd          r1, r2, r3, [r4]        @ res, new, lockref
gcc-4.7
        strexd          r1, r2, r3, [r8]        @ res, new, lockref
gcc-4.8
        strexd          r1, r2, r3, [r8]        @ res, new, lockref
gcc-4.9
        strexd          r1, r2, r3, [r4]        @ res, new, lockref
gcc-4.10
        strexd          ip, r2, r3, [r4]        @ res, new, lockref

	Arbd

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Big Endian broken?
  2014-06-03 10:13 ` Arnd Bergmann
@ 2014-06-03 10:32   ` Russell King - ARM Linux
  0 siblings, 0 replies; 3+ messages in thread
From: Russell King - ARM Linux @ 2014-06-03 10:32 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Jun 03, 2014 at 12:13:37PM +0200, Arnd Bergmann wrote:
> On Tuesday 03 June 2014 10:56:19 Russell King - ARM Linux wrote:
> > Last night's randconfig build had big endian enabled:
> > 
> > CONFIG_CPU_BIG_ENDIAN=y
> > CONFIG_CPU_ENDIAN_BE8=y
> > 
> > which found this:
> > 
> >   CC      lib/lockref.o
> > /tmp/ccWo86hf.s: Assembler messages:
> > /tmp/ccWo86hf.s:63: Error: even register required -- `strexd r1,r5,r6,[r4]'
> > /tmp/ccWo86hf.s:135: Error: even register required -- `strexd r1,r5,r6,[r4]'
> > /tmp/ccWo86hf.s:212: Error: even register required -- `strexd r1,r5,r6,[r4]'
> > /tmp/ccWo86hf.s:291: Error: even register required -- `strexd r1,r5,r6,[r4]'
> > /tmp/ccWo86hf.s:398: Error: even register required -- `strexd r1,r5,r6,[r4]'
> > make[2]: *** [lib/lockref.o] Error 1
> > 
> > It looks to me like a toolchain issue - the compiler has swapped the
> > register order from (r6,r5) to (r5,r6) for BE, but the assembler still
> > wants (<even>,<odd>) for this instruction.  Maybe the BE guys can take
> > a look?
> > 
> > Full config:
> > 
> > http://www.arm.linux.org.uk/developer/build/file.php?lid=8653
> > 
> 
> 
> Which toolchain are you using? I just tried reproducing this but
> it works on linux-next with your config for every version I tried:
> ubuntu 4.6, 4.7, 4.8 and vanilla 4.8.0, 4.8.3, 4.9.0, 4.10-pre,
> and gas 2.23.52.20130913 as well as 2.24.51.20131021.

stock gcc 4.6.4 with stock binutils 2.22.

-- 
FTTC broadband for 0.8mile line: now at 9.7Mbps down 460kbps up... slowly
improving, and getting towards what was expected from it.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2014-06-03 10:32 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-06-03  9:56 Big Endian broken? Russell King - ARM Linux
2014-06-03 10:13 ` Arnd Bergmann
2014-06-03 10:32   ` Russell King - ARM Linux

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).