Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b1f44e13 authored by David S. Miller's avatar David S. Miller
Browse files

sparc32: Be less strict in matching %lo part of relocation.



The "(insn & 0x01800000) != 0x01800000" test matches 'restore'
but that is a legitimate place to see the %lo() part of a 32-bit
symbol relocation, particularly in tail calls.

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Tested-by: default avatarSergei Trofimovich <slyfox@gentoo.org>
parent dbf2b92d
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -302,8 +302,7 @@ void __init btfixup(void)
				case 'i':	/* INT */
					if ((insn & 0xc1c00000) == 0x01000000) /* %HI */
						set_addr(addr, q[1], fmangled, (insn & 0xffc00000) | (p[1] >> 10));
					else if ((insn & 0x80002000) == 0x80002000 &&
					         (insn & 0x01800000) != 0x01800000) /* %LO */
					else if ((insn & 0x80002000) == 0x80002000) /* %LO */
						set_addr(addr, q[1], fmangled, (insn & 0xffffe000) | (p[1] & 0x3ff));
					else {
						prom_printf(insn_i, p, addr, insn);