Port-powerpc archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: ext_intr thoughts



Hello,

so I sat down and ripped macppc's extintr.c apart and a few minutes ago my PowerBook went multiuser with the new interrupt code.
For macppc we need to support 4 different PICs:
- GrandCentral - 32 IRQs, MP capable
- ohare - 32 IRQs, might have a 2nd, identical PIC, no MP capability
- Heathrow - 64 IRQs, might have a 2nd identical PIC, MP capable
- and OpenPIC
I only did ohare for now, because that's what the PowerBook uses.
We need an additional method - pic_reenable_irq, which checks for lost interrupts and marks them as pending. Since the pending filed is in struct cpu we can't do that during setup, at least not on macppc. The spl* stuff in interrupts.c should probably go to powerpc/ so only the actual PIC setup stays there. Then, what's openpic_eoi() for? Just interrupt clearing? I added pic_ack_irq for it but that can probably go. Some of the stuff in pic/ is rather powerpc-ish ( mtmsr/mfmsr etc. ) - we should probably require macros for that in machine/intr.h, with that the code would be pretty much MI. Then we need to specify how PICs are supposed to signal IPIs, that seems to be rather different between GC and OpenPIC. And lastly - is there a good reason to let only CPU 0 take non-IPI interrupts? I think with a bunch of mutex_enter/mutex_exit we can let them all help.

have fun
Michael

Attachment: macppc.tar.gz
Description: GNU Zip compressed data

Attachment: pic.tar.gz
Description: GNU Zip compressed data

 

Attachment: PGP.sig
Description: This is a digitally signed message part



Home | Main Index | Thread Index | Old Index