Using latest AVR32 Studio, GNU, UC3B framework.
I've got different devices on different interrupt levels. The devices on levels 0-2 all get executed at the correct level but the one registered to level 3 is executed at level 2 instead.
I'm using the Newlib addons to get the register_interrupt function. I've verified that it indeed is running at level 2 by looking at the SR register as well as the Interrupt Cause registers.
I've traced the register_interrupt execution into interrupts.c and it is indeed executing the "case 3" code.