by Mike Smith <mike@pressed.spam.frisbee.net.au>, with some changes to the autoconfiguration model and slight changes to the interrupt glue by me.