Actually, it seems that stack pointers are always 2 bytes in all Mega AVRs, but you have two extra registers to access the flash memory (RAMPZ and EIND), so I guess they both should be saved.
You could do something like this in bertos/cpu/avr/hw/switch_ctx_avr.S:
and below, when restoring the context (line 94):
out SPL-__SFR_OFFSET,r18 ; SP = *new_sp
out SREG-__SFR_OFFSET,r0 ; Restore previous IRQ state
Of course you will need to add a
CPU_PUSH_WORD((sp), RAMPZ); \
to account for the extra register.
I don't have a Mega2560 to test the code, I hope you can make it work correctly!