Hi. I'm trying to figure out the structure of MIPS stack frame and how to write .frame / .mask properly. Since gcc/config/mips/mips.c was rewritten by Richard Sandiford, it got clearer that what GCC does (thanks for that).
- In gcc/config/mips/mips.c:mips_compute_frame_info() you do /* Move above the GPR save area. */ if (frame->num_gp > 0) { offset += MIPS_STACK_ALIGN (frame->num_gp * UNITS_PER_WORD); frame->gp_sp_offset = offset - UNITS_PER_WORD; } So what is "- UNITS_PER_WORD" for? - Why do you put MIPS_STACK_ALIGN in many places? The only constraint I know is that MIPSpro Assembly Language Programmer's Guide [1] says "The stack framesize must be a multiple of 16". - Could you document / comment the reason / source of such specifications about all of these? :) Thanks in advance. Masao [1] http://techpubs.sgi.com/library/tpl/cgi-bin/download.cgi?coll=0650&db=bks&docnumber=007-2418-006