mirror of
https://github.com/reactos/reactos.git
synced 2025-07-31 15:02:01 +00:00
[NTOSKRNL]
Update TRAP_ENTRY macro to generate debugging information. Now WinDbg knows how to deal with the trap functions and also shows the user mode back traces. svn path=/trunk/; revision=52586
This commit is contained in:
parent
918511d9ea
commit
c182d594ae
3 changed files with 41 additions and 9 deletions
|
@ -32,17 +32,22 @@ rip = 0
|
|||
|
||||
/* To avoid reverse syntax we provide a new macro .PROC, replacing PROC... */
|
||||
.PROC MACRO name
|
||||
name PROC FRAME
|
||||
_name:
|
||||
_&name PROC
|
||||
ENDM
|
||||
#define FUNC .PROC
|
||||
|
||||
/* ... and .ENDP, replacing ENDP */
|
||||
.ENDP MACRO name
|
||||
name ENDP
|
||||
_&name ENDP
|
||||
ENDM
|
||||
#define ENDFUNC .ENDP
|
||||
|
||||
/* check http://msdn.microsoft.com/en-us/library/9c9k076y%28VS.80%29.aspx
|
||||
and http://msdn.microsoft.com/en-us/library/ms679352%28VS.85%29.aspx */
|
||||
FPO MACRO cdwLocals, cdwParams, cbProlog, cbRegs, fUseBP, cbFrame
|
||||
.FPO (cdwLocals, cdwParams, cbProlog, cbRegs, fUseBP, cbFrame)
|
||||
ENDM
|
||||
|
||||
/* MASM doesn't have an ASCII macro */
|
||||
.ASCII MACRO text:VARARG
|
||||
DB text
|
||||
|
@ -184,7 +189,7 @@ ENDM
|
|||
/* To avoid reverse syntax we provide a new macro .PROC, replacing PROC... */
|
||||
.macro .PROC name
|
||||
.func \name
|
||||
\name:
|
||||
_\name:
|
||||
.cfi_startproc
|
||||
.equ cfa_current_offset, -8
|
||||
.endm
|
||||
|
@ -237,6 +242,12 @@ ENDM
|
|||
.text
|
||||
.endm
|
||||
|
||||
/* check http://msdn.microsoft.com/en-us/library/9c9k076y%28VS.80%29.aspx
|
||||
and http://msdn.microsoft.com/en-us/library/ms679352%28VS.85%29.aspx */
|
||||
.macro FPO cdwLocals, cdwParams, cbProlog, cbRegs, fUseBP, cbFrame
|
||||
/* dummy */
|
||||
.endm
|
||||
|
||||
/* Macros for x64 stack unwind OPs */
|
||||
|
||||
.macro .allocstack size
|
||||
|
|
|
@ -41,6 +41,12 @@ ENDM
|
|||
name ENDP
|
||||
ENDM
|
||||
|
||||
/* check http://msdn.microsoft.com/en-us/library/9c9k076y%28VS.80%29.aspx
|
||||
and http://msdn.microsoft.com/en-us/library/ms679352%28VS.85%29.aspx */
|
||||
FPO MACRO cdwLocals, cdwParams, cbProlog, cbRegs, fUseBP, cbFrame
|
||||
.FPO (cdwLocals, cdwParams, cbProlog, cbRegs, fUseBP, cbFrame)
|
||||
ENDM
|
||||
|
||||
/* MASM doesn't have an ASCII macro */
|
||||
.ASCII MACRO text
|
||||
DB text
|
||||
|
@ -143,7 +149,7 @@ ENDM
|
|||
/* To avoid reverse syntax we provide a new macro .PROC, replacing PROC... */
|
||||
.macro .PROC name
|
||||
.func \name
|
||||
\name:
|
||||
_\name:
|
||||
.cfi_startproc
|
||||
.equ cfa_current_offset, -8
|
||||
.endm
|
||||
|
@ -192,6 +198,12 @@ ENDM
|
|||
.text
|
||||
.endm
|
||||
|
||||
/* check http://msdn.microsoft.com/en-us/library/9c9k076y%28VS.80%29.aspx
|
||||
and http://msdn.microsoft.com/en-us/library/ms679352%28VS.85%29.aspx */
|
||||
.macro FPO cdwLocals, cdwParams, cbProlog, cbRegs, fUseBP, cbFrame
|
||||
/* dummy */
|
||||
.endm
|
||||
|
||||
/* Macros for x64 stack unwind OPs */
|
||||
|
||||
.macro .allocstack size
|
||||
|
|
|
@ -216,12 +216,21 @@ MACRO(KiCallHandler, Handler)
|
|||
nop
|
||||
ENDM
|
||||
|
||||
#define FRAME_TRAP 1
|
||||
|
||||
MACRO(TRAP_ENTRY, Trap, Flags)
|
||||
EXTERN @&Trap&Handler@4 :PROC
|
||||
EXTERN @&Trap&Handler@4 :PROC
|
||||
PUBLIC _&Trap
|
||||
_&Trap:
|
||||
KiEnterTrap Flags
|
||||
KiCallHandler @&Trap&Handler@4
|
||||
.PROC &Trap
|
||||
/* Generate proper debugging symbols */
|
||||
FPO 0, 0, 0, 0, 1, FRAME_TRAP
|
||||
|
||||
/* Common code to create the trap frame */
|
||||
KiEnterTrap Flags
|
||||
|
||||
/* Call the C handler */
|
||||
KiCallHandler @&Trap&Handler@4
|
||||
.ENDP &Trap
|
||||
ENDM
|
||||
|
||||
#define KI_RESTORE_EAX HEX(001)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue