Com o ARM, você precisa pensar em ligar para a convenção, já que uma função com mais de quatro argumentos os faria derramar para empilhar. Eu acho muito mais seguro usar __Builtin_frame_address do GCC.
Built-in Function: void * __builtin_frame_address (unsigned int level)