With ARM, you need to think about calling convention since a function with more than four arguments would have them spilled to stack. I find it much safer to use GCC's __builtin_frame_address.
Built-in Function: void * __builtin_frame_address (unsigned int level)