diff options
author | grehan <grehan@FreeBSD.org> | 2002-09-19 04:39:04 +0000 |
---|---|---|
committer | grehan <grehan@FreeBSD.org> | 2002-09-19 04:39:04 +0000 |
commit | 5688c41f5db8f8e1c39bd091a8bb4a8ac53fa1bb (patch) | |
tree | bbaa567691f16cc390dc58748f665bad060f6330 | |
parent | b53c0c445dfd2e88a81ebeb493a39ef7286b9533 (diff) | |
download | FreeBSD-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.S | 10 | ||||
-rw-r--r-- | sys/powerpc/powerpc/trap_subr.S | 10 |
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 |