diff --git a/xtoskrnl/ar/amd64/archsup.S b/xtoskrnl/ar/amd64/archsup.S index 159a82d..ebaba97 100644 --- a/xtoskrnl/ar/amd64/archsup.S +++ b/xtoskrnl/ar/amd64/archsup.S @@ -119,11 +119,11 @@ Ar\Type\Vector: mov %al, KTRAP_FRAME_PreviousMode(%rbp) /* Skip swapgs as the interrupt originated from kernel mode */ - jz UserMode\Type\Vector + jz Dispatch\Type\Vector swapgs -UserMode\Type\Vector: +Dispatch\Type\Vector: /* Set up trap frame pointer for the dispatcher and clear the direction flag */ mov %rsp, %rcx cld @@ -150,11 +150,11 @@ UserMode\Type\Vector: /* Test previous mode and swapgs if needed */ testb $1, KTRAP_FRAME_PreviousMode(%rbp) - jz KernelModeReturn\Type\Vector + jz RestoreState\Type\Vector cli swapgs -KernelModeReturn\Type\Vector: +RestoreState\Type\Vector: /* Restore XMM registers */ movdqa KTRAP_FRAME_Xmm0(%rbp), %xmm0 movdqa KTRAP_FRAME_Xmm1(%rbp), %xmm1 diff --git a/xtoskrnl/ar/i686/archsup.S b/xtoskrnl/ar/i686/archsup.S index 03d84b8..853b436 100644 --- a/xtoskrnl/ar/i686/archsup.S +++ b/xtoskrnl/ar/i686/archsup.S @@ -115,7 +115,7 @@ _Ar\Type\Vector\()Start: mov KTRAP_FRAME_SegCs(%ebp), %ax and $3, %al mov %al, KTRAP_FRAME_PreviousMode(%ebp) - jz KernelMode\Type\Vector + jz Dispatch\Type\Vector /* Load Kernel PB selector into FS */ mov $KGDT_R0_PB, %ax @@ -126,16 +126,7 @@ _Ar\Type\Vector\()Start: mov %ax, %ds mov %ax, %es - jmp UserMode\Type\Vector - -KernelMode\Type\Vector: - /* Save kernel stack pointer (SS:ESP) */ - movl %ss, %eax - mov %eax, KTRAP_FRAME_SegSs(%ebp) - lea KTRAP_FRAME_Esp(%ebp), %eax - mov %eax, KTRAP_FRAME_Esp(%ebp) - -UserMode\Type\Vector: +Dispatch\Type\Vector: /* Push Frame Pointer and clear direction flag */ push %esp cld @@ -153,10 +144,10 @@ UserMode\Type\Vector: /* Test previous mode and disable interrupts before user mode return */ testb $1, KTRAP_FRAME_PreviousMode(%ebp) - jz KernelModeReturn\Type\Vector + jz RestoreState\Type\Vector cli -KernelModeReturn\Type\Vector: +RestoreState\Type\Vector: /* Restore segment selectors */ mov KTRAP_FRAME_SegDs(%ebp), %ds mov KTRAP_FRAME_SegEs(%ebp), %es