A quick word on shared interrupts: shared interrupt lines should always use level-sensitive devices which should all be the same level (hi vs. low) as well. With edge-triggered interrupts there would be no way to guarantee that after one device triggers, but before it returns to its steady state, the other device won't trigger. It becomes a race condition that is impossible to avoid.
Level-triggered interrupts on the other hand stay active until a flag on the device that triggered it has been cleared. While handling the first device, if the second device triggers, then it will wait with the IRQ line held active until the handler enables the IRQ line again.