summaryrefslogtreecommitdiff
path: root/arch/powerpc/kernel/cpu_setup_a2.S
diff options
context:
space:
mode:
authorJimi Xenidis <jimix@pobox.com>2011-09-29 10:55:13 +0000
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2011-11-25 14:11:28 +1100
commitfac26ad4f9cb794c9d1032f55f40a31cb55be09a (patch)
tree6acb31ab3fbc959de6f62aa4dd6ea08c004205f4 /arch/powerpc/kernel/cpu_setup_a2.S
parent9d670280908013004f173b2b86414d9b6918511b (diff)
downloadlwn-fac26ad4f9cb794c9d1032f55f40a31cb55be09a.tar.gz
lwn-fac26ad4f9cb794c9d1032f55f40a31cb55be09a.zip
powerpc/book3e: Add ICSWX/ACOP support to Book3e cores like A2
ICSWX is also used by the A2 processor to access coprocessors, although not all "chips" that contain A2s have coprocessors. Signed-off-by: Jimi Xenidis <jimix@pobox.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/kernel/cpu_setup_a2.S')
-rw-r--r--arch/powerpc/kernel/cpu_setup_a2.S10
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/cpu_setup_a2.S b/arch/powerpc/kernel/cpu_setup_a2.S
index 7f818feaa7a5..ebc62f42a237 100644
--- a/arch/powerpc/kernel/cpu_setup_a2.S
+++ b/arch/powerpc/kernel/cpu_setup_a2.S
@@ -41,11 +41,16 @@ _GLOBAL(__setup_cpu_a2)
* core local but doing it always won't hurt
*/
-#ifdef CONFIG_PPC_WSP_COPRO
+#ifdef CONFIG_PPC_ICSWX
/* Make sure ACOP starts out as zero */
li r3,0
mtspr SPRN_ACOP,r3
+ /* Skip the following if we are in Guest mode */
+ mfmsr r3
+ andis. r0,r3,MSR_GS@h
+ bne _icswx_skip_guest
+
/* Enable icswx instruction */
mfspr r3,SPRN_A2_CCR2
ori r3,r3,A2_CCR2_ENABLE_ICSWX
@@ -54,7 +59,8 @@ _GLOBAL(__setup_cpu_a2)
/* Unmask all CTs in HACOP */
li r3,-1
mtspr SPRN_HACOP,r3
-#endif /* CONFIG_PPC_WSP_COPRO */
+_icswx_skip_guest:
+#endif /* CONFIG_PPC_ICSWX */
/* Enable doorbell */
mfspr r3,SPRN_A2_CCR2