mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 06:15:48 +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
|
||||
_KiUserExceptionDispatcher@8:
|
||||
.PROC KiUserExceptionDispatcher@8
|
||||
FPO 0, 0, 0, 0, 0, FRAME_FPO
|
||||
|
||||
/* Clear direction flag */
|
||||
cld
|
||||
|
@ -240,9 +241,11 @@ Exit:
|
|||
call _RtlRaiseException@4
|
||||
ret 8
|
||||
|
||||
.ENDP KiUserExceptionDispatcher@8
|
||||
|
||||
PUBLIC _KiIntSystemCall@0
|
||||
_KiIntSystemCall@0:
|
||||
.PROC KiIntSystemCall@0
|
||||
FPO 0, 0, 0, 0, 0, FRAME_FPO
|
||||
|
||||
/* Set stack in EDX and do the interrupt */
|
||||
lea edx, [esp+8]
|
||||
|
@ -251,21 +254,26 @@ _KiIntSystemCall@0:
|
|||
/* Return to caller */
|
||||
ret
|
||||
|
||||
.ENDP KiIntSystemCall@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 */
|
||||
mov edx, esp
|
||||
sysenter
|
||||
|
||||
.ENDP KiFastSystemCall@0
|
||||
|
||||
PUBLIC _KiFastSystemCallRet@0
|
||||
_KiFastSystemCallRet@0:
|
||||
.PROC KiFastSystemCallRet@0
|
||||
FPO 0, 0, 0, 0, 0, FRAME_FPO
|
||||
|
||||
/* Just return to caller */
|
||||
ret
|
||||
|
||||
.ENDP KiFastSystemCallRet@0
|
||||
|
||||
PUBLIC _RtlpGetStackLimits@8
|
||||
_RtlpGetStackLimits@8:
|
||||
|
|
|
@ -327,3 +327,10 @@ ENDM
|
|||
#define NUL "\0"
|
||||
|
||||
#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
|
||||
_&Name&@&Stackbytes:
|
||||
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
|
||||
MACRO(MAKE_LABEL, Name, Stackbytes)
|
||||
PUBLIC &Name
|
||||
&Name:
|
||||
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
|
||||
|
||||
MACRO(STUB_U, Name, ArgCount)
|
||||
Stackbytes = 4 * &ArgCount
|
||||
MAKE_LABEL Zw&Name, %Stackbytes
|
||||
MAKE_LABEL Nt&Name, %Stackbytes
|
||||
START_PROC Nt&Name, %Stackbytes
|
||||
STUBCODE_U SyscallId, %Stackbytes
|
||||
END_PROC Nt&Name, %Stackbytes
|
||||
SyscallId = SyscallId + 1
|
||||
ENDM
|
||||
|
||||
MACRO(STUB_K, Name, ArgCount)
|
||||
Stackbytes = 4 * &ArgCount
|
||||
MAKE_LABEL Zw&Name, %Stackbytes
|
||||
START_PROC Zw&Name, %Stackbytes
|
||||
STUBCODE_K SyscallId, %Stackbytes
|
||||
END_PROC Zw&Name, %Stackbytes
|
||||
SyscallId = SyscallId + 1
|
||||
ENDM
|
||||
|
|
|
@ -271,4 +271,11 @@ code = 1
|
|||
|
||||
#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_ */
|
||||
|
|
|
@ -216,8 +216,6 @@ MACRO(KiCallHandler, Handler)
|
|||
nop
|
||||
ENDM
|
||||
|
||||
#define FRAME_TRAP 1
|
||||
|
||||
MACRO(TRAP_ENTRY, Trap, Flags)
|
||||
EXTERN @&Trap&Handler@4 :PROC
|
||||
PUBLIC _&Trap
|
||||
|
|
|
@ -126,15 +126,19 @@ _KiInterruptTemplateDispatch:
|
|||
|
||||
EXTERN @KiSystemServiceHandler@8:PROC
|
||||
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)
|
||||
KiCallHandler @KiSystemServiceHandler@8
|
||||
.ENDP KiSystemService
|
||||
|
||||
EXTERN @KiFastCallEntryHandler@8:PROC
|
||||
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)
|
||||
KiCallHandler @KiFastCallEntryHandler@8
|
||||
.ENDP KiFastCallEntry
|
||||
|
||||
PUBLIC _KiStartUnexpectedRange@0
|
||||
_KiStartUnexpectedRange@0:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue