ISR wrapper required ? – ARM7/LPC2378/GCC

Environment:   FreeRTOS 5.0   ARM7 / NXP LPC2378   gcc 4.2.2 ; binutils 2.18 Based on some (maybe historic) comment in the forum and/or mailing list, I use the below construct for all my interrupt handlers. Can anybody confirm or negate this is still needed or was needed at all ? Thanks in advance,   A. Pretzsch static void XXXHandler(void) {    // real ISR } static void XXXIsr(void) __attribute__ ((naked)); static void XXXIsr(void) {     /* Save the context of the interrupted task. */     portSAVE_CONTEXT();     /* Call the handler.  This must be a separate function from the wrapper        to ensure the correct stack frame is set up. */     XXXHandler();     /* Restore the context of whichever task is going to run next. */     portRESTORE_CONTEXT(); }

ISR wrapper required ? – ARM7/LPC2378/GCC

As you are probably aware this was to work around a GCC bug. I don’t know if the latest GCC versions have fixed this or not but I think it is a good idea to keep it there.

ISR wrapper required ? – ARM7/LPC2378/GCC

Well, now I am :-) I’ve got another remark in my Makefile, probably related: # Probably needed due a compiler bug up till 4.2.1, see # http://sourceforge.net/forum/message.php?msg_id=4594229 CFLAGS+=-fomit-frame-pointer I didn’t have a look at the exact cause by now, neither at the current compiler status. Do you know who discovered the problem, maybe he knows more ? Might be worth a FAQ on the FreeRTOS site. I’m not a fan of keeping workarounds forever…