summaryrefslogtreecommitdiffstats
path: root/arch/parisc
diff options
context:
space:
mode:
authorJohn David Anglin <dave.anglin@bell.net>2013-05-04 19:16:41 +0000
committerHelge Deller <deller@gmx.de>2013-05-06 23:09:48 +0200
commitbbbfde782084b4f0d85ddffb88f1cf4650ff40e4 (patch)
tree66e295f6e8f0223c5ef206df581959bf0f1f684c /arch/parisc
parent93782eba49e23c3f311a6b05a19ba15927ec4e8b (diff)
downloadlinux-stable-bbbfde782084b4f0d85ddffb88f1cf4650ff40e4.tar.gz
linux-stable-bbbfde782084b4f0d85ddffb88f1cf4650ff40e4.tar.bz2
linux-stable-bbbfde782084b4f0d85ddffb88f1cf4650ff40e4.zip
parisc: use long branch in fork_like macro
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>
Diffstat (limited to 'arch/parisc')
-rw-r--r--arch/parisc/kernel/entry.S3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S
index aa486e46ab97..36f4f1dcb778 100644
--- a/arch/parisc/kernel/entry.S
+++ b/arch/parisc/kernel/entry.S
@@ -1702,7 +1702,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