question to freertos implementation

pocketstargate wrote on Monday, November 12, 2012:

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?

And I don’t get why r1 has to be cleared?

pocketstargate wrote on Monday, November 12, 2012:

oops i forgot the link: http://www.freertos.org/implementation/a00016.html

davedoors wrote on Monday, November 12, 2012:

Presumably because CLI will change the status register and you the status register cannot be changed until it has first been saved.

pocketstargate wrote on Monday, November 12, 2012:

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.

davedoors wrote on Monday, November 12, 2012:

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.