mirror of
https://github.com/reactos/reactos.git
synced 2025-07-31 15:51:49 +00:00
[NTOS:KE:X64][ASM:X64] Fix delivery of APCs
- Deliver pending APCs on trap exit - Pass the trapframe of KiApcInterrupt to KiDeliverApcs, not NULL. - Fix parameter passing from KiSwapContext to KiSwapContextInternal and KiSwapContextResume, so that the ApcBypass parameter is not uninitialized - Fix return value of KiSwapContextResume to correctly indicate whether we want to have APCs directly delivered or not (when there are non, or when delivery is suppressed)
This commit is contained in:
parent
fdc1261fb7
commit
a016ccd117
4 changed files with 76 additions and 35 deletions
|
@ -150,6 +150,7 @@ ENDM
|
|||
MACRO(ExitTrap, Flags)
|
||||
LOCAL kernel_mode_return
|
||||
LOCAL IntsEnabled
|
||||
LOCAL NoUserApc
|
||||
|
||||
#if DBG
|
||||
/* Check previous irql */
|
||||
|
@ -181,8 +182,9 @@ MACRO(ExitTrap, Flags)
|
|||
/* Load current thread into r10 */
|
||||
mov r10, gs:[PcCurrentThread]
|
||||
cmp byte ptr [r10 + KTHREAD_UserApcPending], 0
|
||||
jne KiExitToUserApc
|
||||
|
||||
je NoUserApc
|
||||
call KiInitiateUserApc
|
||||
NoUserApc:
|
||||
endif
|
||||
|
||||
#if DBG
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue