IAR provide a function to get a frame address of a function, allowing you more control. Does mspgcc have anything similar?

GCC provides the function "__builtin_frame_address(LEVEL)", but this will not help you much, unless R4 is being used as a frame pointer. With optimisation switched on, it will not. Of course, mspgcc has a real solution to this problem. Look in the Calls Definition section of the mspgcc manual for information on ".L__FrameSize". Of course, mspgcc also has things like "_BIC_SR_IRQ()" and "_BIS_SR_IRQ()", which simplify the most common reasons to work directly with the frame address.