An old IAR manual I have suggests that the __disable_interrupts() intrinsic only inserts a DINT instruction, not the NOP that's required to ensure that the following instruction is not interrupted. Could people with access to the IAR and professional CCS compilers answer whether that's true or false? I'd like mspgcc to behave the same.
If, while you were at it, you could also verify that __get_interrupt_state() and __set_interrupt_state() save and restore the whole status register and not just the GIE bit, I'd appreciate it.
Thanks.