Ah ....
In that case you probably need to use 'stw' to save sp in memory, switch registers, then 'ldw' the value back - probably via offset from gp (which you want the same in both register sets).
I don't think there is anywhere (other than memory) the sp value can be saved across the register switch - although I guess a custom instruction could save it somewhere.
You have bigger problems if you are writing in C though - as gcc will have all sorts of values in registers!
On he other hand, if you are worried enough about perfromance somewhere to be avoiding register save/restore, I'd have thought you'd want to avoid all stack accesses!
I've been compiling code in a single source module so that gcc inlines all static function (anything called only once is always inlined), and taken care elsewhere that no locals end up on the stack - so the only stack accesses are saving the callee saved registers on entry (which never get restored because the function doesn't return).
After specifying -fcall-used-rxx for r16-25,29-31, it is a shame you can't include sp itself! (nor fp or r1).