Well, it shouldn't be impossible to get the SP through ANSI C:
unsigned char* stackPtr;
{
volatile unsigned char foo;
stackPtr = &foo + sizeof(foo);
}
But I would still recommend inline asm in this case. And to get index registers etc, you must use it.