]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
parisc: use long branch in fork_like macro
authorJohn David Anglin <dave.anglin@bell.net>
Sat, 4 May 2013 19:16:41 +0000 (19:16 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 19 May 2013 18:38:46 +0000 (11:38 -0700)
commit bbbfde782084b4f0d85ddffb88f1cf4650ff40e4 upstream.

The "b" branch instruction used in the fork_like macro only can handle
17-bit pc-relative offsets.
This fails with an out of range offset with some .config files.
Rewrite to use the "be" instruction which
can branch to any address in a space.

Signed-off-by: John David Anglin <dave.anglin@bell.net>
Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/parisc/kernel/entry.S

index ac07f9634c57de13b733961e4be79977d864a840..897bce412c58bf048ad05315133670807ab22cf9 100644 (file)
@@ -1709,7 +1709,8 @@ ENTRY(sys_\name\()_wrapper)
        ldo     TASK_REGS(%r1),%r1
        reg_save %r1
        mfctl   %cr27, %r28
-       b       sys_\name
+       ldil    L%sys_\name, %r31
+       be      R%sys_\name(%sr4,%r31)
        STREG   %r28, PT_CR27(%r1)
 ENDPROC(sys_\name\()_wrapper)
        .endm