Hi!
Can someone explain me why “cli” is not at line 1? Couldn’t it be that if it’s not called in an isr there could be an interrupt at line 1 - 2 and then r0 isn’t saved correct?
Okay that is plausible, but there’s still the chance that it may interrupt between line 1-2?
And why has r1 to be cleared? Just because the compiler generated code assumes something is a little vague reason.
but there’s still the chance that it may interrupt between line 1-2?
From reading the explanation on the webpage you link to, it looks like if the function is entered through an interrupt then it can’t get interrupted between lines 1 and 2, and if it is entered by a function call then it does not matter if it gets interrupted between lines 1 and 2 (any more than it matters that any function call gets interrupted).
I would have to look at the compiler documentation to know why R1 is cleared, but without doing that just assume the compiler expects it to be zero at some point.