Don't save and restore previous mode in trap handlers. This allows us to call KeGetPreviousMode() from exception handlers and get the right value. Modified: trunk/reactos/ntoskrnl/ke/i386/trap.s _____
Modified: trunk/reactos/ntoskrnl/ke/i386/trap.s --- trunk/reactos/ntoskrnl/ke/i386/trap.s 2005-08-05 17:28:17 UTC (rev 17073) +++ trunk/reactos/ntoskrnl/ke/i386/trap.s 2005-08-05 18:26:43 UTC (rev 17074) @@ -45,13 +45,8 @@
popl %edx popl %ecx popl %eax - - /* Restore the old previous mode */ popl %ebx - cmpl $0, %esi - je .L7 - movb %bl, %ss:KTHREAD_PREVIOUS_MODE(%esi) -.L7: + /* Restore the old exception handler list */ popl %ebx movl %ebx, %fs:KPCR_EXCEPTION_LIST @@ -140,13 +135,6 @@ /* Set the new previous mode based on the saved CS selector */ movl KTRAP_FRAME_CS(%ebp), %eax andl $0x0000FFFF, %eax - cmpl $KERNEL_CS, %eax - jne .L1 - movb $KernelMode, KTHREAD_PREVIOUS_MODE(%edi) - jmp .L3 -.L1: - movb $UserMode, KTHREAD_PREVIOUS_MODE(%edi) -.L3:
/* Save the old trap frame. */ movl KTHREAD_TRAP_FRAME(%edi), %edx