Hi,
I don't know much about tilegx, but
I think the patch should work as is.
This is because the
Save r10 code is a bundle
{
addi sp, sp, -8
st sp, r10
}
which stores r10 at [sp] and subtracts 8 from sp.
The restore r10 code is actually two bundles:
addi sp, sp, 8
ld r10, sp
This just adds 8 to sp, and loads r10 from there.
I don't know how __mcount is implemented, it must
be some asm code, almost all functions save the
lr at [sp] when invoked, but I don't know if __mcount
does that at all, if it doesn't do that, then the
adjusting of sp might be unnecessary.
The only thing that might be a problem is that
the stack is always adjusted in multiples of 16
on the tilegx platform, see tilegx.h:
#define STACK_BOUNDARY 128
That is counted in bits, and means 16 bytes.
But your patch adjusts the stack only by 8.
Furthermore, I don't see how the stack unwinding will work
with this stack adjustment when no .cfi directives
are emitted, but that is probably not a big problem.
You might see a difference, when single-stepping
over the function entry.
Maybe a test case would be good as well.
Bernd.