Quote:
Thank you for the infomative links. But information about the 8259A is not the problem. The problem is that the 8259A is designed for x86 and expects a certain behaviour of the processor (interrupt acknowledge sequence). A PPC processor does not provide this behaviour in the same manner. So, the question is: how is it done on Pegasos?
Hi guys, ...
I am not entirely sure of what you really want here, and as i keep saying the existing sample working code, either in linux, or the older openbsd release, is accesible, and you should be able to extract the needed info from there.
Basically, as i understand it, the powerpc has one pin for external interrupts, which corresponds to one interrupt vector called external. The via southbridge and its embedded 8259A interrupt controller is interfaced to that pin, and you will then get a powerpc external interrupt each time an interrupt is send to the 8259A. The interrupt vector should then easily enough investigate what happened on the 8259A for which you have the docs and act acordyingly. If you have some trouble with the powerpc interrupt vector, i invite you to consult some of the powerpc programming manual available from freescale (they will even send them to you free of charge if you ask for printed copies). The one you want is called Programing environment manual for 32bit implementations of the powerpc architecture.
There is really nothing magic about the pegasos interrupt stuff, and it doesn't differ in much from other powerpc CHRP implementations, apart that we don't have an openpic, and the code used probes the chip directly for information about level or edge for each interrupt. The interrupts are currently mapped to each device with :
$ more /proc/interrupts
CPU0
2: 0 i8259 Edge 82c59 secondary cascade
9: 19042865 i8259 Edge ohci_hcd:usb1, ohci_hcd:usb2, uhci_hcd:usb3, uhci_hcd:usb4, libata, sym53c8xx, ehci_hcd:usb5, ohci1394, VIA686A, eth0, radeon@pci:0000:01:08.0
14: 544656 i8259 Edge ide0
15: 706059 i8259 Edge ide1
BAD: 0
So, you see most everything is mapped on interrupt 9, apart from the two ide channels which have 14 and 15 (instead of just one). The above is auto-probed by linux anyway.
But then, it is my believe that guys coding their own OS like you do are well aware of the above information, and i am truly baffled about what you really want
Friendly,
Sven Luther