summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/entry_64.S
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2008-12-01 18:02:17 +0100
committerTakashi Iwai <tiwai@suse.de>2008-12-01 18:02:17 +0100
commit3af4182cc5be7d5505f9801ee3297373f1872446 (patch)
tree214348d40ed547a72f9612a7e5c94a01afded812 /arch/powerpc/kernel/entry_64.S
parentf5d4c67e41a262f0cdfaec1bb0fa8e5952187ef9 (diff)
parentc07f62e5f18123103459ff74e86af1518a5b8af5 (diff)
downloadop-kernel-dev-3af4182cc5be7d5505f9801ee3297373f1872446.zip
op-kernel-dev-3af4182cc5be7d5505f9801ee3297373f1872446.tar.gz
Merge branch 'upstream' into topic/asoc
Diffstat (limited to 'arch/powerpc/kernel/entry_64.S')
-rw-r--r--arch/powerpc/kernel/entry_64.S10
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
index fd8b4ba..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)
@@ -884,7 +890,7 @@ _GLOBAL(enter_prom)
mtlr r0
blr
-#ifdef CONFIG_FTRACE
+#ifdef CONFIG_FUNCTION_TRACER
#ifdef CONFIG_DYNAMIC_FTRACE
_GLOBAL(mcount)
_GLOBAL(_mcount)
OpenPOWER on IntegriCloud