In gcc/config/mn13000/mn10300.c, the expand_prologue prologue
function is pretty readable, and has a nice explanation of how the
prologue is generated. The prologues generated by that code will
- have the following form:
+ have the following form (NOTE: the current code doesn't handle all
+ this!):
+ If this is an old-style varargs function, then its arguments
need to be flushed back to the stack:
fmov fsM,(OFFSETM,sp)
...
+ Note that, if OFFSETN happens to be zero, you'll get the
+ different opcode: fmov fsN,(sp)
+
. Or, set a0 to the start of the save area, and then use
post-increment addressing to save the FP registers.