From 2e3fe5de9034c0a5c2bfa898382444db557ad872 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 3 Dec 2022 14:59:14 +0200 Subject: [PATCH] [NTOS] Fix saving of XMM registers on some trap handlers --- ntoskrnl/ke/amd64/trap.S | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ntoskrnl/ke/amd64/trap.S b/ntoskrnl/ke/amd64/trap.S index 3e13d2b5eb4..45569495390 100644 --- a/ntoskrnl/ke/amd64/trap.S +++ b/ntoskrnl/ke/amd64/trap.S @@ -590,7 +590,7 @@ ENDFUNC PUBLIC KiApcInterrupt .PROC KiApcInterrupt /* No error code */ - EnterTrap (TF_VOLATILES or TF_IRQL) + EnterTrap (TF_SAVE_ALL or TF_IRQL) /* Raise to APC_LEVEL */ mov rax, APC_LEVEL @@ -617,7 +617,7 @@ PUBLIC KiApcInterrupt mov cr8, rax /* Return */ - ExitTrap (TF_VOLATILES or TF_IRQL) + ExitTrap (TF_SAVE_ALL or TF_IRQL) .ENDP /* @@ -659,20 +659,20 @@ PUBLIC KiRetireDpcListInDpcStack PUBLIC KiDpcInterrupt .PROC KiDpcInterrupt /* No error code */ - EnterTrap (TF_VOLATILES or TF_IRQL) + EnterTrap (TF_SAVE_ALL or TF_IRQL) /* Call the worker routine */ call KiDpcInterruptHandler /* Return, but don't send an EOI! */ - ExitTrap (TF_VOLATILES or TF_IRQL) + ExitTrap (TF_SAVE_ALL or TF_IRQL) .ENDP PUBLIC KiIpiInterrupt .PROC KiIpiInterrupt /* No error code */ - EnterTrap (TF_VOLATILES or TF_IRQL) + EnterTrap (TF_SAVE_ALL or TF_IRQL) /* Raise to IPI_LEVEL */ mov rax, IPI_LEVEL @@ -684,7 +684,7 @@ PUBLIC KiIpiInterrupt int 3 /* Return */ - ExitTrap (TF_VOLATILES or TF_IRQL) + ExitTrap (TF_SAVE_ALL or TF_IRQL) .ENDP