sp contains the stack pointer,lr (link register) contains the return address,fp contains the frame pointer,r19 to r28 are callee-saved and must be reset to their original state before returning, andr0 to r7 are used to store the arguments and results of a subroutine.Additionally:
sp mod 16 == 0.lr onto the stack,fp onto the stack, thensp into fp.stp fp, lr, [sp, -16]! mov fp, sp
ldp fp, lr, [sp], #16