summaryrefslogtreecommitdiff
path: root/arch/powerpc/kernel/entry_64.S
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2008-12-20 22:42:55 (GMT)
committerTakashi Iwai <tiwai@suse.de>2008-12-20 22:42:55 (GMT)
commit6a8436419d1b77b24d82bd90354adc4baa393566 (patch)
treed20e17b148f37dc299658a60303e6a2e4e6ce63f /arch/powerpc/kernel/entry_64.S
parent55fa518867978e1f5fd8353098f80d125ac734d7 (diff)
parentff75427a7f641c4468610fbda2ccb69218174cd1 (diff)
downloadlinux-fsl-qoriq-6a8436419d1b77b24d82bd90354adc4baa393566.tar.xz
Merge branch 'topic/ca0106-capture-no-44khz' into topic/ca0106
Diffstat (limited to 'arch/powerpc/kernel/entry_64.S')
-rw-r--r--arch/powerpc/kernel/entry_64.S8
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
index e6d5284..e0bcf93 100644
--- a/arch/powerpc/kernel/entry_64.S
+++ b/arch/powerpc/kernel/entry_64.S
@@ -57,12 +57,18 @@ system_call_common:
beq- 1f
ld r1,PACAKSAVE(r13)
1: std r10,0(r1)
- crclr so
std r11,_NIP(r1)
std r12,_MSR(r1)
std r0,GPR0(r1)
std r10,GPR1(r1)
ACCOUNT_CPU_USER_ENTRY(r10, r11)
+ /*
+ * This "crclr so" clears CR0.SO, which is the error indication on
+ * return from this system call. There must be no cmp instruction
+ * between it and the "mfcr r9" below, otherwise if XER.SO is set,
+ * CR0.SO will get set, causing all system calls to appear to fail.
+ */
+ crclr so
std r2,GPR2(r1)
std r3,GPR3(r1)
std r4,GPR4(r1)