reactos/sdk/lib/rtl/amd64
Timo Kreuzer e801b7dda2 [RTL/x64] Implement RtlpCaptureNonVolatileContextPointers and RtlSetUnwindContext
RtlpCaptureNonVolatileContextPointers walks the stack and captures the addresses of all non-volatile registers on the stack, when they have been saved first. This is needed to be able to fix up the non-volatile on a system call, which doesn't capture non-volatiles, but relies on them to be restored by the callees.

Instead of only checking for the TargetFrame, also check for a mode change, i.e. RIP went from kernel to user, in which case the target frame was not reached yet, because it was too large, but processing can't continue here.

RtlSetUnwindContext uses RtlpCaptureNonVolatileContextPointers to set the non-volatile registers in the the stack. They will be picked up, when returning back or unwinding, e.g. to the system call handler.
2021-06-02 18:25:36 +02:00
..
debug_asm.S
except_asm.S [RTL/x64] Implement RtlRestoreContext 2021-05-29 21:20:48 +02:00
rtlmem.S
slist.S
stubs.c [RTL/x64] Implement RtlRestoreContext 2021-05-29 21:20:48 +02:00
unwind.c [RTL/x64] Implement RtlpCaptureNonVolatileContextPointers and RtlSetUnwindContext 2021-06-02 18:25:36 +02:00