From: Dave A. <ai...@us...> - 2001-12-15 12:24:02
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel In directory usw-pr-cvs1:/tmp/cvs-serv15809 Modified Files: interrupt.c Log Message: DA: align with what other archs seem to look like .. thought this might fix the missing signal... it doesn't Index: interrupt.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel/interrupt.c,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- interrupt.c 2001/11/09 23:48:40 1.22 +++ interrupt.c 2001/12/15 12:23:58 1.23 @@ -396,6 +396,7 @@ vec_num = handler - stray_handlers; + if (autoprobing && vec_num >= FIRST_ADAPTER_VECTOR) { stray_handlers[vec_num].flags |= STRAY_EXCEPTION_FIRED; return 0; @@ -458,13 +459,14 @@ status = dispatch_irq(regs, vec); irq_exit(cpu); - if (status) { - if (softirq_active(cpu)&softirq_mask(cpu)) { - do_softirq(); - } - } restore_flags(flags); + // if (status) { + if (softirq_active(cpu)&softirq_mask(cpu)) { + do_softirq(); + // } + } + } static inline void do_exception(struct pt_regs *regs, struct irqvector *vec, void *excep_info) @@ -484,7 +486,7 @@ void do_irq_excep(struct pt_regs *regs, void *inside_vec, void *excep_info) { struct irqvector *vec; - + int cpu; vec = (struct irqvector *)(inside_vec - offsetof(struct irqvector, excep_info_size)); @@ -505,15 +507,17 @@ } ret_from_sys_call: - if (in_softirq()) { - do_softirq(); + cpu=smp_processor_id(); + if (softirq_active(cpu)&softirq_mask(cpu)) { + do_softirq(); goto ret_from_intr; } goto ret_with_reschedule; ret_from_exception: - if (in_softirq()) { - do_softirq(); + cpu=smp_processor_id(); + if (softirq_active(cpu)&softirq_mask(cpu)) { + do_softirq(); } ret_from_intr: @@ -535,6 +539,7 @@ /* FIXME: oldset? */ do_signal(0,regs); } + // printk("syscall: out of c code\n"); done: } |