Clark,
I asked around, and no one had anything handy to do this. This is their recommendation:
Shutdown sequence:
1) Trigger the shutdown sequence with an interrupt.
2) The shutdown routine should save all registers and state. It must not use the stack. Next, copy all of memory to a non-volatile storage device.
3) Write to a non-volatile memory location a flag that at next boot a warm-boot should be performed. I recommend a 32 bit word with a unique pattern. Ex: 1234_CDEFh
4) Processor then signals the power supply to turn off.
Restart sequence:
1) At boot the processor checks the warm-boot flag. If set follow the steps below. Again, don't use the stack.
2) Copy the saved memory from the non-volatile storage device to system memory.
3) Restore all saved processor registers.
4) Execute a return from interrupt.
This assumes power is lost after suspend. If power is not lost, then there is no need for the non-volatile memory.
Austin