[NTOSKRNL/HAL]

- Fix a bug is MSVC inline assembly
- use iretd instead of iret
the msvc compiled kernel boots a bit further now

svn path=/trunk/; revision=52429
This commit is contained in:
Timo Kreuzer 2011-06-22 19:04:28 +00:00
parent 09a2c1a1cf
commit 590a071060
4 changed files with 6 additions and 5 deletions

View file

@ -24,7 +24,7 @@ PUBLIC @HalpExitToV86@4
@HalpExitToV86@4: @HalpExitToV86@4:
/* Point esp to the iret frame and return */ /* Point esp to the iret frame and return */
lea esp, [ecx + KTRAP_FRAME_EIP] lea esp, [ecx + KTRAP_FRAME_EIP]
iret iretd
/* Here starts the real mode code */ /* Here starts the real mode code */
.code16 .code16

View file

@ -343,7 +343,7 @@ PUBLIC @&Name&@4
elseif (Flags AND KI_EXIT_IRET) elseif (Flags AND KI_EXIT_IRET)
/* Return with iret */ /* Return with iret */
iret iretd
elseif (Flags AND KI_EXIT_JMP) elseif (Flags AND KI_EXIT_JMP)

View file

@ -644,12 +644,13 @@ KiSystemCallTrampoline(IN PVOID Handler,
{ {
mov ecx, StackBytes mov ecx, StackBytes
mov edx, Arguments mov edx, Arguments
mov ebx, Handler
sub esp, ecx sub esp, ecx
mov edi, esp mov edi, esp
mov esi, edx mov esi, edx
shr ecx, 2 shr ecx, 2
rep movsd rep movsd
call Handler call ebx
mov Result, eax mov Result, eax
} }
#else #else
@ -803,7 +804,7 @@ KiIret(VOID)
#elif defined(_MSC_VER) #elif defined(_MSC_VER)
__asm __asm
{ {
iret iretd
} }
#else #else
#error Unsupported compiler #error Unsupported compiler

View file

@ -116,7 +116,7 @@ _KdbEnter:
/* /*
* Return to the caller. * Return to the caller.
*/ */
iret iretd
PUBLIC _KdbpStackSwitchAndCall@8 PUBLIC _KdbpStackSwitchAndCall@8