summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgrehan <grehan@FreeBSD.org>2002-09-19 04:39:04 +0000
committergrehan <grehan@FreeBSD.org>2002-09-19 04:39:04 +0000
commit5688c41f5db8f8e1c39bd091a8bb4a8ac53fa1bb (patch)
treebbaa567691f16cc390dc58748f665bad060f6330
parentb53c0c445dfd2e88a81ebeb493a39ef7286b9533 (diff)
downloadFreeBSD-src-5688c41f5db8f8e1c39bd091a8bb4a8ac53fa1bb.zip
FreeBSD-src-5688c41f5db8f8e1c39bd091a8bb4a8ac53fa1bb.tar.gz
- make sure recoverable interrupts are re-enabled in the trap handler
- turn on ast() loop to enable signal delivery Approved by: benno
-rw-r--r--sys/powerpc/aim/trap_subr.S10
-rw-r--r--sys/powerpc/powerpc/trap_subr.S10
2 files changed, 6 insertions, 14 deletions
diff --git a/sys/powerpc/aim/trap_subr.S b/sys/powerpc/aim/trap_subr.S
index 0340d78..e8cf4c6 100644
--- a/sys/powerpc/aim/trap_subr.S
+++ b/sys/powerpc/aim/trap_subr.S
@@ -535,7 +535,7 @@ CNAME(ipkdbsize) = .-CNAME(ipkdblow)
mfsrr1 31; \
stmw 30,savearea+24(0); \
mfmsr 30; \
- ori 30,30,(PSL_DR|PSL_IR)@l; \
+ ori 30,30,(PSL_DR|PSL_IR|PSL_RI)@l; \
mtmsr 30; \
isync; \
mfsprg 31,1; \
@@ -580,7 +580,7 @@ CNAME(ipkdbsize) = .-CNAME(ipkdblow)
mtsprg 3,3; \
/* Disable translation, machine check and recoverability: */ \
mfmsr 2; \
- andi. 2,2,~(PSL_DR|PSL_IR|PSL_ME|PSL_RI)@l; \
+ andi. 2,2,~(PSL_DR|PSL_IR|PSL_EE|PSL_ME|PSL_RI)@l; \
mtmsr 2; \
isync; \
/* Decide whether we return to user mode: */ \
@@ -679,7 +679,6 @@ trapagain:
.globl CNAME(trapexit)
CNAME(trapexit):
-#if 0
/* Disable interrupts: */
mfmsr 3
andi. 3,3,~PSL_EE@l
@@ -695,17 +694,14 @@ CNAME(trapexit):
lwz 4, KE_FLAGS(3) /* get KSE flags value */
andi. 4,4,KEF_ASTPENDING|KEF_NEEDRESCHED
beq 1f
- li 6,EXC_AST /* update exception type */
- stw 6,FRAME_EXC+8(1)
mfmsr 3 /* re-enable interrupts */
ori 3,3,PSL_EE@l
mtmsr 3
isync
addi 3,1,8
- bl CNAME(ast_test)
+ bl CNAME(ast)
b trapexit /* test ast ret value ? */
1:
-#endif
FRAME_LEAVE(tempsave)
rfi
diff --git a/sys/powerpc/powerpc/trap_subr.S b/sys/powerpc/powerpc/trap_subr.S
index 0340d78..e8cf4c6 100644
--- a/sys/powerpc/powerpc/trap_subr.S
+++ b/sys/powerpc/powerpc/trap_subr.S
@@ -535,7 +535,7 @@ CNAME(ipkdbsize) = .-CNAME(ipkdblow)
mfsrr1 31; \
stmw 30,savearea+24(0); \
mfmsr 30; \
- ori 30,30,(PSL_DR|PSL_IR)@l; \
+ ori 30,30,(PSL_DR|PSL_IR|PSL_RI)@l; \
mtmsr 30; \
isync; \
mfsprg 31,1; \
@@ -580,7 +580,7 @@ CNAME(ipkdbsize) = .-CNAME(ipkdblow)
mtsprg 3,3; \
/* Disable translation, machine check and recoverability: */ \
mfmsr 2; \
- andi. 2,2,~(PSL_DR|PSL_IR|PSL_ME|PSL_RI)@l; \
+ andi. 2,2,~(PSL_DR|PSL_IR|PSL_EE|PSL_ME|PSL_RI)@l; \
mtmsr 2; \
isync; \
/* Decide whether we return to user mode: */ \
@@ -679,7 +679,6 @@ trapagain:
.globl CNAME(trapexit)
CNAME(trapexit):
-#if 0
/* Disable interrupts: */
mfmsr 3
andi. 3,3,~PSL_EE@l
@@ -695,17 +694,14 @@ CNAME(trapexit):
lwz 4, KE_FLAGS(3) /* get KSE flags value */
andi. 4,4,KEF_ASTPENDING|KEF_NEEDRESCHED
beq 1f
- li 6,EXC_AST /* update exception type */
- stw 6,FRAME_EXC+8(1)
mfmsr 3 /* re-enable interrupts */
ori 3,3,PSL_EE@l
mtmsr 3
isync
addi 3,1,8
- bl CNAME(ast_test)
+ bl CNAME(ast)
b trapexit /* test ast ret value ? */
1:
-#endif
FRAME_LEAVE(tempsave)
rfi
OpenPOWER on IntegriCloud