mirror of
https://github.com/reactos/reactos.git
synced 2025-08-04 00:05:44 +00:00
[ASM]
Generate MSVC debugging info for KiUserExceptionDispatcher, KiIntSystemCall, KiFastSystemCall, KiFastSystemCallRet, KiSystemService, KiFastCallEntry, all systemcall stubs Now usermode backtraces look as they should in WinDbg svn path=/trunk/; revision=52705
This commit is contained in:
parent
005a7acbfc
commit
4040433bfa
6 changed files with 52 additions and 10 deletions
|
@ -184,7 +184,8 @@ _KiRaiseUserExceptionDispatcher@0:
|
||||||
|
|
||||||
|
|
||||||
PUBLIC _KiUserExceptionDispatcher@8
|
PUBLIC _KiUserExceptionDispatcher@8
|
||||||
_KiUserExceptionDispatcher@8:
|
.PROC KiUserExceptionDispatcher@8
|
||||||
|
FPO 0, 0, 0, 0, 0, FRAME_FPO
|
||||||
|
|
||||||
/* Clear direction flag */
|
/* Clear direction flag */
|
||||||
cld
|
cld
|
||||||
|
@ -240,9 +241,11 @@ Exit:
|
||||||
call _RtlRaiseException@4
|
call _RtlRaiseException@4
|
||||||
ret 8
|
ret 8
|
||||||
|
|
||||||
|
.ENDP KiUserExceptionDispatcher@8
|
||||||
|
|
||||||
PUBLIC _KiIntSystemCall@0
|
PUBLIC _KiIntSystemCall@0
|
||||||
_KiIntSystemCall@0:
|
.PROC KiIntSystemCall@0
|
||||||
|
FPO 0, 0, 0, 0, 0, FRAME_FPO
|
||||||
|
|
||||||
/* Set stack in EDX and do the interrupt */
|
/* Set stack in EDX and do the interrupt */
|
||||||
lea edx, [esp+8]
|
lea edx, [esp+8]
|
||||||
|
@ -251,21 +254,26 @@ _KiIntSystemCall@0:
|
||||||
/* Return to caller */
|
/* Return to caller */
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
.ENDP KiIntSystemCall@0
|
||||||
|
|
||||||
PUBLIC _KiFastSystemCall@0
|
PUBLIC _KiFastSystemCall@0
|
||||||
_KiFastSystemCall@0:
|
.PROC KiFastSystemCall@0
|
||||||
|
FPO 0, 0, 0, 0, 0, FRAME_FPO
|
||||||
|
|
||||||
/* Put ESP in EDX and do the SYSENTER */
|
/* Put ESP in EDX and do the SYSENTER */
|
||||||
mov edx, esp
|
mov edx, esp
|
||||||
sysenter
|
sysenter
|
||||||
|
|
||||||
|
.ENDP KiFastSystemCall@0
|
||||||
|
|
||||||
PUBLIC _KiFastSystemCallRet@0
|
PUBLIC _KiFastSystemCallRet@0
|
||||||
_KiFastSystemCallRet@0:
|
.PROC KiFastSystemCallRet@0
|
||||||
|
FPO 0, 0, 0, 0, 0, FRAME_FPO
|
||||||
|
|
||||||
/* Just return to caller */
|
/* Just return to caller */
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
.ENDP KiFastSystemCallRet@0
|
||||||
|
|
||||||
PUBLIC _RtlpGetStackLimits@8
|
PUBLIC _RtlpGetStackLimits@8
|
||||||
_RtlpGetStackLimits@8:
|
_RtlpGetStackLimits@8:
|
||||||
|
|
|
@ -327,3 +327,10 @@ ENDM
|
||||||
#define NUL "\0"
|
#define NUL "\0"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Common definitions for FPO macro
|
||||||
|
see http://msdn.microsoft.com/en-us/library/ms679352%28VS.85%29.aspx */
|
||||||
|
#define FRAME_FPO 0
|
||||||
|
#define FRAME_TRAP 1
|
||||||
|
#define FRAME_TSS 2
|
||||||
|
#define FRAME_NONFPO 3
|
||||||
|
|
|
@ -71,24 +71,42 @@ MACRO(MAKE_LABEL, Name, Stackbytes)
|
||||||
PUBLIC _&Name&@&Stackbytes
|
PUBLIC _&Name&@&Stackbytes
|
||||||
_&Name&@&Stackbytes:
|
_&Name&@&Stackbytes:
|
||||||
ENDM
|
ENDM
|
||||||
|
MACRO(START_PROC, Name, Stackbytes)
|
||||||
|
PUBLIC _&Name&@&Stackbytes
|
||||||
|
.PROC &Name&@&Stackbytes
|
||||||
|
FPO 0, 0, 0, 0, 0, FRAME_FPO
|
||||||
|
ENDM
|
||||||
|
MACRO(END_PROC, Name, Stackbytes)
|
||||||
|
.ENDP &Name&@&Stackbytes
|
||||||
|
ENDM
|
||||||
#else
|
#else
|
||||||
MACRO(MAKE_LABEL, Name, Stackbytes)
|
MACRO(MAKE_LABEL, Name, Stackbytes)
|
||||||
PUBLIC &Name
|
PUBLIC &Name
|
||||||
&Name:
|
&Name:
|
||||||
ENDM
|
ENDM
|
||||||
|
MACRO(START_PROC, Name, Stackbytes)
|
||||||
|
PUBLIC &Name
|
||||||
|
.PROC &Name
|
||||||
|
FPO 0, 0, 0, 0, 0, FRAME_FPO
|
||||||
|
ENDM
|
||||||
|
MACRO(END_PROC, Name, Stackbytes)
|
||||||
|
.ENDP &Name
|
||||||
|
ENDM
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
MACRO(STUB_U, Name, ArgCount)
|
MACRO(STUB_U, Name, ArgCount)
|
||||||
Stackbytes = 4 * &ArgCount
|
Stackbytes = 4 * &ArgCount
|
||||||
MAKE_LABEL Zw&Name, %Stackbytes
|
MAKE_LABEL Zw&Name, %Stackbytes
|
||||||
MAKE_LABEL Nt&Name, %Stackbytes
|
START_PROC Nt&Name, %Stackbytes
|
||||||
STUBCODE_U SyscallId, %Stackbytes
|
STUBCODE_U SyscallId, %Stackbytes
|
||||||
|
END_PROC Nt&Name, %Stackbytes
|
||||||
SyscallId = SyscallId + 1
|
SyscallId = SyscallId + 1
|
||||||
ENDM
|
ENDM
|
||||||
|
|
||||||
MACRO(STUB_K, Name, ArgCount)
|
MACRO(STUB_K, Name, ArgCount)
|
||||||
Stackbytes = 4 * &ArgCount
|
Stackbytes = 4 * &ArgCount
|
||||||
MAKE_LABEL Zw&Name, %Stackbytes
|
START_PROC Zw&Name, %Stackbytes
|
||||||
STUBCODE_K SyscallId, %Stackbytes
|
STUBCODE_K SyscallId, %Stackbytes
|
||||||
|
END_PROC Zw&Name, %Stackbytes
|
||||||
SyscallId = SyscallId + 1
|
SyscallId = SyscallId + 1
|
||||||
ENDM
|
ENDM
|
||||||
|
|
|
@ -271,4 +271,11 @@ code = 1
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Common definitions for FPO macro
|
||||||
|
see http://msdn.microsoft.com/en-us/library/ms679352%28VS.85%29.aspx */
|
||||||
|
#define FRAME_FPO 0
|
||||||
|
#define FRAME_TRAP 1
|
||||||
|
#define FRAME_TSS 2
|
||||||
|
#define FRAME_NONFPO 3
|
||||||
|
|
||||||
#endif /* _ASM_INC_ */
|
#endif /* _ASM_INC_ */
|
||||||
|
|
|
@ -216,8 +216,6 @@ MACRO(KiCallHandler, Handler)
|
||||||
nop
|
nop
|
||||||
ENDM
|
ENDM
|
||||||
|
|
||||||
#define FRAME_TRAP 1
|
|
||||||
|
|
||||||
MACRO(TRAP_ENTRY, Trap, Flags)
|
MACRO(TRAP_ENTRY, Trap, Flags)
|
||||||
EXTERN @&Trap&Handler@4 :PROC
|
EXTERN @&Trap&Handler@4 :PROC
|
||||||
PUBLIC _&Trap
|
PUBLIC _&Trap
|
||||||
|
|
|
@ -126,15 +126,19 @@ _KiInterruptTemplateDispatch:
|
||||||
|
|
||||||
EXTERN @KiSystemServiceHandler@8:PROC
|
EXTERN @KiSystemServiceHandler@8:PROC
|
||||||
PUBLIC _KiSystemService
|
PUBLIC _KiSystemService
|
||||||
_KiSystemService:
|
.PROC KiSystemService
|
||||||
|
FPO 0, 0, 0, 0, 1, FRAME_TRAP
|
||||||
KiEnterTrap (KI_PUSH_FAKE_ERROR_CODE OR KI_NONVOLATILES_ONLY OR KI_DONT_SAVE_SEGS)
|
KiEnterTrap (KI_PUSH_FAKE_ERROR_CODE OR KI_NONVOLATILES_ONLY OR KI_DONT_SAVE_SEGS)
|
||||||
KiCallHandler @KiSystemServiceHandler@8
|
KiCallHandler @KiSystemServiceHandler@8
|
||||||
|
.ENDP KiSystemService
|
||||||
|
|
||||||
EXTERN @KiFastCallEntryHandler@8:PROC
|
EXTERN @KiFastCallEntryHandler@8:PROC
|
||||||
PUBLIC _KiFastCallEntry
|
PUBLIC _KiFastCallEntry
|
||||||
_KiFastCallEntry:
|
.PROC KiFastCallEntry
|
||||||
|
FPO 0, 0, 0, 0, 1, FRAME_TRAP
|
||||||
KiEnterTrap (KI_FAST_SYSTEM_CALL OR KI_NONVOLATILES_ONLY OR KI_DONT_SAVE_SEGS)
|
KiEnterTrap (KI_FAST_SYSTEM_CALL OR KI_NONVOLATILES_ONLY OR KI_DONT_SAVE_SEGS)
|
||||||
KiCallHandler @KiFastCallEntryHandler@8
|
KiCallHandler @KiFastCallEntryHandler@8
|
||||||
|
.ENDP KiFastCallEntry
|
||||||
|
|
||||||
PUBLIC _KiStartUnexpectedRange@0
|
PUBLIC _KiStartUnexpectedRange@0
|
||||||
_KiStartUnexpectedRange@0:
|
_KiStartUnexpectedRange@0:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue