Also, most device functions related to IRQ handling no longer take a device pointer. We make so many assumptions about the machine's layout in irq.c that this just seemed silly.
While I'm here, fix all the other GCC warnings too.
Not very well-tested, but it seems to work.