summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorDale Rahn <drahn@cvs.openbsd.org>2002-09-06 14:24:36 +0000
committerDale Rahn <drahn@cvs.openbsd.org>2002-09-06 14:24:36 +0000
commit621fc0c10d6d9f2f7380037d6580c4af69808ad5 (patch)
tree9bb2867fd089470b3f4bb8723cd28dfaa3777bd6 /sys
parent284201d8c10822c1d342c2a286b0a219d4050235 (diff)
Restore EE bit of MSR on return from exception, rather than blindly
enabling it. pefo@
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/macppc/macppc/locore.S7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/arch/macppc/macppc/locore.S b/sys/arch/macppc/macppc/locore.S
index 50433e85933..f7619dbf436 100644
--- a/sys/arch/macppc/macppc/locore.S
+++ b/sys/arch/macppc/macppc/locore.S
@@ -1,4 +1,4 @@
-/* $OpenBSD: locore.S,v 1.4 2002/07/24 02:19:28 drahn Exp $ */
+/* $OpenBSD: locore.S,v 1.5 2002/09/06 14:24:35 drahn Exp $ */
/* $NetBSD: locore.S,v 1.2 1996/10/16 19:33:09 ws Exp $ */
/*
@@ -911,7 +911,10 @@ s_trap:
FRAME_SETUP(tempsave)
/* Now we can recover interrupts again: */
mfmsr 7
- ori 7,7,(PSL_EE|PSL_ME|PSL_RI)
+ mfsrr1 31
+ andi. 31,31,PSL_EE /* restore EE from previous context */
+ or 7,7,31
+ ori 7,7,(PSL_ME|PSL_RI)
mtmsr 7
isync
/* Call C trap code: */