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 */