diff options
author | Anton Blanchard <anton@samba.org> | 2012-04-04 20:24:29 +0200 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2012-04-30 07:34:44 +0200 |
commit | 823df43552da39fd48a2dd74949363a1c8cf62bb (patch) | |
tree | 6528a931fade61d09a5a83951906cb6dcbaf33f9 /arch/powerpc/kernel/entry_64.S | |
parent | powerpc: Hide some system call labels from profile tools (diff) | |
download | linux-823df43552da39fd48a2dd74949363a1c8cf62bb.tar.xz linux-823df43552da39fd48a2dd74949363a1c8cf62bb.zip |
powerpc: No need to save XER in a system call
The XER is a volatile register so there is no need to save and restore
it over a system call - zero it out in the exception stack frame
instead.
This should fix a 5 cycle stall of the mfxer/std seen on POWER7.
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/kernel/entry_64.S')
-rw-r--r-- | arch/powerpc/kernel/entry_64.S | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index e212c2f57fd8..7f1e6de9a5a9 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S @@ -82,6 +82,7 @@ system_call_common: std r11,GPR10(r1) std r11,GPR11(r1) std r11,GPR12(r1) + std r11,_XER(r1) std r9,GPR13(r1) mfcr r9 mflr r10 @@ -89,9 +90,7 @@ system_call_common: std r9,_CCR(r1) std r10,_LINK(r1) std r11,_TRAP(r1) - mfxer r9 mfctr r10 - std r9,_XER(r1) std r10,_CTR(r1) std r3,ORIG_GPR3(r1) ld r2,PACATOC(r13) |