sh: Fix up R0 dependence in __arch_swab16/32.
authorPaul Mundt <lethal@linux-sh.org>
Sun, 10 May 2009 05:25:39 +0000 (14:25 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Sun, 10 May 2009 05:25:39 +0000 (14:25 +0900)
commit567bb8fd47624cb9f894c64ce9530d43d5862a71
treeffd7da1c98b16ff0939763553e3bb0ba87bf6718
parent457daa2b66e07bbd2280b9f8d2b03e800f357243
sh: Fix up R0 dependence in __arch_swab16/32.

There is nothing in these routines that inherently depends on R0 use.
Given that these routines are inlined, it is rather easy to blow up the
compiler by exhausting the spill class when performing a 64-bit swab.

This presently manifests itself as the following:

CC      fs/ocfs2/suballoc.o
fs/ocfs2/suballoc.c: In function 'ocfs2_reserve_suballoc_bits':
fs/ocfs2/suballoc.c:638: error: unrecognizable insn:
(insn 2793 1230 1231 103 arch/sh/include/asm/swab.h:33 (set (reg:HI 853)
        (subreg:HI (reg:SI 149 macl) 2)) -1 (expr_list:REG_DEAD (reg:SI 149 macl)
        (nil)))
fs/ocfs2/suballoc.c:638: internal compiler error: in extract_insn, at recog.c:1991

This patch switches over to using an arbitrarily assigned register instead.

While the same issue does not exist in the SH-5 case, there is likewise no harm
in having an alternate register used for the byterev/shari pair.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/include/asm/swab.h