Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ionescu007/SimpleVisor.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Ionescu <aionescu@gmail.com>2017-03-15 04:52:49 +0300
committerAlex Ionescu <aionescu@gmail.com>2017-03-15 04:52:49 +0300
commit57b0e633538b67e03804caffb5d8c59227c68adf (patch)
tree625edc2cdca37eb38675b91f41963e3cbcde9eb5
parent42dc94556b1e396251508989ed7168a7f219ade5 (diff)
WIP: Redstone 2 fix
-rw-r--r--nt/shvos.c13
-rw-r--r--nt/shvosx64.asm47
2 files changed, 47 insertions, 13 deletions
diff --git a/nt/shvos.c b/nt/shvos.c
index 1a748b3..af143e6 100644
--- a/nt/shvos.c
+++ b/nt/shvos.c
@@ -243,19 +243,6 @@ ShvOsRunCallbackOnProcessors (
KeGenericCallDpc(ShvOsDpcRoutine, &dpcContext);
}
-DECLSPEC_NORETURN
-VOID
-__cdecl
-ShvOsRestoreContext (
- _In_ PCONTEXT ContextRecord
- )
-{
- //
- // Windows provides a nice OS function to do this
- //
- RtlRestoreContext(ContextRecord, NULL);
-}
-
VOID
ShvOsCaptureContext (
_In_ PCONTEXT ContextRecord
diff --git a/nt/shvosx64.asm b/nt/shvosx64.asm
index 1e75175..13d3b3e 100644
--- a/nt/shvosx64.asm
+++ b/nt/shvosx64.asm
@@ -44,4 +44,51 @@ include ksamd64.inc
ret ; return
LEAF_END __lgdt, _TEXT$00
+ LEAF_ENTRY ShvOsRestoreContext , _TEXT$00
+
+ movaps xmm0, xmmword ptr [rcx+1A0h]
+ movaps xmm1, xmmword ptr [rcx+1B0h]
+ movaps xmm2, xmmword ptr [rcx+1C0h]
+ movaps xmm3, xmmword ptr [rcx+1D0h]
+ movaps xmm4, xmmword ptr [rcx+1E0h]
+ movaps xmm5, xmmword ptr [rcx+1F0h]
+ movaps xmm6, xmmword ptr [rcx+200h]
+ movaps xmm7, xmmword ptr [rcx+210h]
+ movaps xmm8, xmmword ptr [rcx+220h]
+ movaps xmm9, xmmword ptr [rcx+230h]
+ movaps xmm10, xmmword ptr [rcx+240h]
+ movaps xmm11, xmmword ptr [rcx+250h]
+ movaps xmm12, xmmword ptr [rcx+260h]
+ movaps xmm13, xmmword ptr [rcx+270h]
+ movaps xmm14, xmmword ptr [rcx+280h]
+ movaps xmm15, xmmword ptr [rcx+290h]
+ ldmxcsr dword ptr [rcx+34h]
+
+ mov rax, [rcx+78h]
+ mov rdx, [rcx+88h]
+ mov r8, [rcx+0B8h]
+ mov r9, [rcx+0C0h]
+ mov r10, [rcx+0C8h]
+ mov r11, [rcx+0D0h]
+ cli
+
+ mov rbx, [rcx+90h]
+ mov rsi, [rcx+0A8h]
+ mov rdi, [rcx+0B0h]
+ mov rbp, [rcx+0A0h]
+ mov r12, [rcx+0D8h]
+ mov r13, [rcx+0E0h]
+ mov r14, [rcx+0E8h]
+ mov r15, [rcx+0F0h]
+
+ push [rcx+44h]
+ popfq
+
+ mov rsp, [rcx+98h]
+ push [rcx+0F8h]
+
+ mov rcx, [rcx+80h]
+ ret
+ LEAF_END ShvOsRestoreContext, _TEXT$00
+
end