С помощью ARM вам нужно подумать о вызове конвенции, поскольку функция с более чем четырьмя аргументами заставила бы их проливаться в стек. Я нахожу намного безопаснее использовать GCC __builtin_frame_address.
Built-in Function: void * __builtin_frame_address (unsigned int level)