From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1GgO4b-00062i-0a for qemu-devel@nongnu.org; Sat, 04 Nov 2006 11:08:45 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1GgO4a-000629-25 for qemu-devel@nongnu.org; Sat, 04 Nov 2006 11:08:44 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1GgO4Z-000626-TC for qemu-devel@nongnu.org; Sat, 04 Nov 2006 11:08:43 -0500 Received: from [64.233.162.205] (helo=nz-out-0102.google.com) by monty-python.gnu.org with esmtp (Exim 4.52) id 1GgO4Z-00014o-Id for qemu-devel@nongnu.org; Sat, 04 Nov 2006 11:08:43 -0500 Received: by nz-out-0102.google.com with SMTP id 9so766579nzo for ; Sat, 04 Nov 2006 08:08:42 -0800 (PST) Message-ID: Date: Sat, 4 Nov 2006 17:08:42 +0100 From: "Alessandro Corradi" Subject: Re: [Qemu-devel] Interrupt request info In-Reply-To: <200611012331.38312.paul@codesourcery.com> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_22144_15628287.1162656522452" References: <200611011205.1gFjwA1qs3Nl3pX2@cave.mail.atl.earthlink.net> <002e01c6fe0d$0d434460$7e00a8c0@DELL3G> <200611012331.38312.paul@codesourcery.com> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org ------=_Part_22144_15628287.1162656522452 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Thank you very much for the answer, so the only think to do to raise correctly an interrupt (I think) is only to raise it when a read funciton is completed (in case of my simple memory) because it will alarm the process in waiting status to read the value in the register. the workaround of a read operation of a cell of this memory is: 1)write address of the cell that I want to read in the address register, 2)send the execution request to get the value of the cell indicated by the address reg (write on the command register the read opcode), 3)wait for control register response untill read operation is executed. 4)read the data register. so I think that interrupt request must be between point 3 and 4. Do you agree with my consideration? I hope that writed something understandable :) Thanks Ale 2006/11/2, Paul Brook : > > On Wednesday 01 November 2006 23:25, Roger Lathrop wrote: > > Alessandro, > > > > All you should need to do to raise an IRQ in your code is: > > pic_set_irq(s->irq,1); > > > > When the irq is serviced (in one of your ioport traps, I would assume), > > knock the irq down: > > pic_set_irq(s->irq,0); > > No. You should use pic_set_irq_new. Otherwise your code will break on > machines > with multiple interrupt controllers. > > Paul > > > _______________________________________________ > Qemu-devel mailing list > Qemu-devel@nongnu.org > http://lists.nongnu.org/mailman/listinfo/qemu-devel > ------=_Part_22144_15628287.1162656522452 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Thank you very much for the answer,
so the only think to do to raise correctly an interrupt (I think) is only to raise it when a read funciton is completed (in case of my simple memory) because it will alarm the process in waiting status to read the value in the register.

the workaround of a read operation of a cell of this memory is:
1)write address of the cell that I want to read in the address register,
2)send the execution request to get the value of the cell indicated by the address reg (write on the command register the read opcode),
3)wait for control register response untill read operation is executed.
4)read the data register.

so I think that interrupt request must be between point 3 and 4.
Do you agree with my consideration?

I hope that writed something understandable :)

Thanks

Ale


2006/11/2, Paul Brook <paul@codesourcery.com>:
On Wednesday 01 November 2006 23:25, Roger Lathrop wrote:
> Alessandro,
>
> All you should need to do to raise an IRQ in your code is:
> pic_set_irq(s->irq,1);
>
> When the irq is serviced (in one of your ioport traps, I would assume),
> knock the irq down:
> pic_set_irq(s->irq,0);

No. You should use pic_set_irq_new. Otherwise your code will break on machines
with multiple interrupt controllers.

Paul


_______________________________________________
Qemu-devel mailing list
Qemu-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/qemu-devel

------=_Part_22144_15628287.1162656522452--