|
@@ -833,11 +833,6 @@ ENTRY(syscall_exit_rfi)
|
|
|
STREG %r19,PT_SR7(%r16)
|
|
|
|
|
|
intr_return:
|
|
|
- /* NOTE: Need to enable interrupts incase we schedule. */
|
|
|
- ssm PSW_SM_I, %r0
|
|
|
-
|
|
|
-intr_check_resched:
|
|
|
-
|
|
|
/* check for reschedule */
|
|
|
mfctl %cr30,%r1
|
|
|
LDREG TI_FLAGS(%r1),%r19 /* sched.h: TIF_NEED_RESCHED */
|
|
@@ -864,6 +859,11 @@ intr_check_sig:
|
|
|
LDREG PT_IASQ1(%r16), %r20
|
|
|
cmpib,COND(=),n 0,%r20,intr_restore /* backward */
|
|
|
|
|
|
+ /* NOTE: We need to enable interrupts if we have to deliver
|
|
|
+ * signals. We used to do this earlier but it caused kernel
|
|
|
+ * stack overflows. */
|
|
|
+ ssm PSW_SM_I, %r0
|
|
|
+
|
|
|
copy %r0, %r25 /* long in_syscall = 0 */
|
|
|
#ifdef CONFIG_64BIT
|
|
|
ldo -16(%r30),%r29 /* Reference param save area */
|
|
@@ -915,6 +915,10 @@ intr_do_resched:
|
|
|
cmpib,COND(=) 0, %r20, intr_do_preempt
|
|
|
nop
|
|
|
|
|
|
+ /* NOTE: We need to enable interrupts if we schedule. We used
|
|
|
+ * to do this earlier but it caused kernel stack overflows. */
|
|
|
+ ssm PSW_SM_I, %r0
|
|
|
+
|
|
|
#ifdef CONFIG_64BIT
|
|
|
ldo -16(%r30),%r29 /* Reference param save area */
|
|
|
#endif
|