Hi Oleg, On Mon, 11 Jul 2005, Oleg Nesterov wrote:
> > The change is so that we can send IRQs higher than 256 to do_IRQ. That > > looks like it tries to check if we came in via system_call since we'd save > > the system call number as orig_eax. Now that i think about it, doesn't > > that path always get taken when we interrupt userspace and have pending > > signals on return from interrupt? > > As far as I can see, we always have orig_eax < 0 on interrupt, because > > irq_entries_start: > pushl $vector-256 <----- orig_eax > jmp common_interrupt > > and NR_IRQS < 256. So if we have pending signals on return from interrupt, > do_signal() will not corrupt userspace registers when regs->eax == > -ERESTART... > accidentally. > > Probably it makes sense to change it to > pushl $vector - 0xFFFF - 1 > > and in do_IRQ() > int irq = regs->orig_eax & 0xFFFF > > if you need to send IRQs higher than 256 to do_IRQ. Good catch, thanks i'll change that! Zwane - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/