Hi there. I'm porting vmadump (a process checkpoint module) to
Linux/MIPS. The thing now works, but to make it go I had to adjust
the entry and exit points in arch/mips/kernel/scall_o32.S such that
they always do SAVE_ALL and RESTORE_ALL_AND_RET.
Normally, it appears that "static" registers and probably a few others
are either left alone by the kernel code or stored on the stack
somewhere by the syscall and/or subsequent jump instructions.
Anywho, the rub is that the vmadump code needs for the passed-in
pt_regs to be complete, and needs for the syscall return path from it
to fully restore from pt_regs if it has been modified. Obviously I'd
like to do this without making all syscalls store everything.
I see that marking the task for rescheduling will make all the
registers be saved and restored, but that's either *after* I'm
supposed to have copied all the register contents, or *before* I've
written new information to the pt_regs, so that's not it.
Is there any nice way to read and/or modifiy the static and other
"!SOME" register values from within my system call implementation? I
assume I can find them on the stack somewhere, but that seems awfully
Grant Taylor - email@example.com - http://www.picante.com/~gtaylor/
Linux Printing Website and HOWTO: http://www.linuxprinting.org/