While coding assembly I noticed stack initialization code and wondered if that is really necessary. If at boot SP=0 and the stack used pre-decrement for push/call, then the data would go to RAMEND and no stack initialization were necessary.
However, the stack uses post-decrement and pre-increment  and thus requires initialization (if one doesn't want the beginning of RAM used as stack).
Well, I thought, maybe that's because this addressing mode is used with other instructions. But rather it looks like it's exclusively used for the stack, while pre-decrement and post-increment is used with ST, LD, LDM, SPM.
Why does Atmel use post-decrement and pre-increment for the stack?
AVR Instruction Set (http://www.atmel.com/dyn/resourc...):
"The Stack Pointer uses a post-decrement scheme during CALL."
"The Stack Pointer uses a pre-increment scheme during RET."