When control is passed to the called routine, the stack pointer points to
the callee's frame, which looks like:
fp reg save area (optional)
ireg save area (optional)
CR save area (optional)
Local storage (optional)
8(r1)
Parameter area (optional)
4(r1)
Link register (LR) save
0(r1)
ptr to callee's stack
Stack pointer is always 16-byte (quad-word) aligned.
Stack pointer (sp) updated atomically via ``store word with update''.
Any non-scratch reg f# must be saved to the fp reg save area at location
8*(32-#) from the previous frame (i.e., the register f31 is saved
adjacent to previous ptr to callee's stack).
Any non-scratch reg r# must be saved in the ireg save area 4*(32-#)
bytes before the low-addressed end of the fp reg save area.
Minimum stack frame callee save and LR save.
No red zone is specifically mandated.
If number if ipara is and the number of fppara , then
no values are stored in the parameter area, and if this is true for
all calls made by the routine, the parameter area will be of size 0.
Stack pointer must be quadword aligned
If parameters are contained in registers, no space allocated in frame