Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 Sep 2002 19:11:40 +0200
From:      Joshua LeVasseur <jtl-freebsd@bothan.net>
To:        freebsd-ppc <freebsd-ppc@freebsd.org>
Subject:   [freebsd-ppc] psim bug
Message-ID:  <0769F91E-CCBC-11D6-9A64-003065468D4E@bothan.net>

next in thread | raw e-mail | index | archive | help

Has anyone noticed a problem with psim's external interrupt delivery?  
psim refuses to raise an external interrupt (on behalf of my IPIs) if 
the simulator has a pending decrementer interrupt.  The bug is in 
interrupts.c:external_interrupt().  It uses a logical inversion where 
it should perform a bitwise inversion:

     if (!ints->pending_interrupts & external_interrupt_pending) {
       ints->pending_interrupts |= external_interrupt_pending;
       if (cpu_registers(processor)->msr & msr_external_interrupt_enable)
         schedule_hardware_interrupt_delivery(processor);
     }

The if-clause is superfluous, so I removed it:

     ints->pending_interrupts |= external_interrupt_pending;
     if (cpu_registers(processor)->msr & msr_external_interrupt_enable)
       schedule_hardware_interrupt_delivery(processor);

Now external interrupt delivery functions as expected.

-Josh


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-ppc" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?0769F91E-CCBC-11D6-9A64-003065468D4E>