void foo(void){ bState = 0; MACRO_THING(bState); bState = bar(bState); // i call another function here bState++;}char bar(char state){ state &= GLOBAL_SOMETHING; return (state >> 4);}
... MOV r0, sp MOV sp, #-1 ... ; IRQ happens here MOV sp, r0 ...