diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-12-03 12:54:45 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-12-03 12:54:45 +0100 |
commit | c36910c147fd7b129a8f1269c76b9767c99de5cd (patch) | |
tree | 29403cd341b62581718f6b34944271980fb133e6 /arch/powerpc/kernel/entry_64.S | |
parent | 70d7d357578245f1993fd2d3ccd26088bcd38941 (diff) | |
parent | 09ee17eb8ea89514c13980c4010bdbbaea8630c2 (diff) | |
download | op-kernel-dev-c36910c147fd7b129a8f1269c76b9767c99de5cd.zip op-kernel-dev-c36910c147fd7b129a8f1269c76b9767c99de5cd.tar.gz |
Merge branch 'iommu-fixes-2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into x86/urgent
Diffstat (limited to 'arch/powerpc/kernel/entry_64.S')
-rw-r--r-- | arch/powerpc/kernel/entry_64.S | 8 |
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) |