Handling Interrupts
This actually is very simple. gcc provides the means to mark a function as an interrupt service routine, namely prefixing a function with __attribute__(interrupt). So, something like this:
__attribute__((interrupt)) duart_interrupt(void) { /* Handle the interrupt */