• Paul Mundt's avatar
    sh: Fix up R0 dependence in __arch_swab16/32. · 567bb8fd
    Paul Mundt authored
    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: default avatarPaul Mundt <lethal@linux-sh.org>
    567bb8fd
swab.h 1015 Bytes