[NTOS:KDBG] Nuke KdbEnter and KdbpCliModuleLoaded

They are not used anymore. Also clean up some obsolete prototypes.
This commit is contained in:
Timo Kreuzer 2022-07-20 20:31:57 +02:00
parent 6778fa157f
commit fe777bb52f
5 changed files with 1 additions and 277 deletions

View file

@ -33,11 +33,8 @@ KdPortPutByteEx(
#ifdef KDBG #ifdef KDBG
# define KdbInit() KdbpCliInit() # define KdbInit() KdbpCliInit()
# define KdbModuleLoaded(FILENAME) KdbpCliModuleLoaded(FILENAME)
#else #else
# define KdbInit() do { } while (0) # define KdbInit() do { } while (0)
# define KdbEnter() do { } while (0)
# define KdbModuleLoaded(X) do { } while (0)
#endif #endif
/* KD ROUTINES ***************************************************************/ /* KD ROUTINES ***************************************************************/

View file

@ -5,138 +5,6 @@
.code64 .code64
EXTERN KdbEnterDebuggerException : PROC
PUBLIC KdbEnter
FUNC KdbEnter
/* save flags */
pushfq
.allocstack 8
/* Make room for a KTRAP_FRAME */
sub rsp, KTRAP_FRAME_LENGTH
.allocstack KTRAP_FRAME_LENGTH
.ENDPROLOG
/* Save rbp */
mov [rsp + KTRAP_FRAME_Rbp], rbp
/* Save non-volatile registers */
mov [rsp + KTRAP_FRAME_Rbx], rbx
mov [rsp + KTRAP_FRAME_Rdi], rdi
mov [rsp + KTRAP_FRAME_Rsi], rsi
/* Save volatile registers */
mov [rsp + KTRAP_FRAME_Rax], rax
mov [rsp + KTRAP_FRAME_Rcx], rcx
mov [rsp + KTRAP_FRAME_Rdx], rdx
mov [rsp + KTRAP_FRAME_R8], r8
mov [rsp + KTRAP_FRAME_R9], r9
mov [rsp + KTRAP_FRAME_R10], r10
mov [rsp + KTRAP_FRAME_R11], r11
/* Save xmm registers */
movdqa [rsp + KTRAP_FRAME_Xmm0], xmm0
movdqa [rsp + KTRAP_FRAME_Xmm1], xmm1
movdqa [rsp + KTRAP_FRAME_Xmm2], xmm2
movdqa [rsp + KTRAP_FRAME_Xmm3], xmm3
movdqa [rsp + KTRAP_FRAME_Xmm4], xmm4
movdqa [rsp + KTRAP_FRAME_Xmm5], xmm5
/* Save cs and previous mode */
mov ax, cs
mov [rsp + KTRAP_FRAME_SegCs], ax
and ax, 1
mov [rsp + KTRAP_FRAME_PreviousMode], al
/* Save segment selectors */
mov ax, ds
mov [rsp + KTRAP_FRAME_SegDs], ax
mov ax, es
mov [rsp + KTRAP_FRAME_SegEs], ax
mov ax, fs
mov [rsp + KTRAP_FRAME_SegFs], ax
mov ax, gs
mov [rsp + KTRAP_FRAME_SegGs], ax
/* Save previous irql */
mov rax, cr8
mov [rsp + KTRAP_FRAME_PreviousIrql], al
/* Save debug registers */
mov rax, dr0
mov [rsp + KTRAP_FRAME_Dr0], rax
mov rax, dr1
mov [rsp + KTRAP_FRAME_Dr1], rax
mov rax, dr2
mov [rsp + KTRAP_FRAME_Dr2], rax
mov rax, dr3
mov [rsp + KTRAP_FRAME_Dr3], rax
mov rax, dr6
mov [rsp + KTRAP_FRAME_Dr6], rax
mov rax, dr7
mov [rsp + KTRAP_FRAME_Dr7], rax
/* Point rbp, where rsp was before */
lea rbp, [rsp + KTRAP_FRAME_LENGTH]
mov [rsp + KTRAP_FRAME_Rsp], rbp
/* Store the EFLAGS we previously pushed on the stack */
mov rax, [rbp + 8]
mov [rsp + KTRAP_FRAME_EFlags], rax
/* Get RIP from the stack */
mov rax, [rbp + 16]
mov [rsp + KTRAP_FRAME_Rip], rax
/* Make sure the direction flag is cleared */
cld
/* Clear all breakpoint enables in dr7. */
mov rax, dr7
and rax, HEX(ffffffffFFFF0000)
mov dr7, rax
/* Call KDB */
mov byte ptr [rsp + KTRAP_FRAME_P5], 1 /* FirstChance */
mov r9, rsp /* Pointer to the trap frame */
mov r8, 0 /* Context */
mov dl, 0 /* PreviousMode (KernelMode) */
mov rcx, 0 /* ExceptionRecord */
call KdbEnterDebuggerException
/* Restore segment selectors */
mov ax, [rsp + KTRAP_FRAME_SegDs]
mov ds, ax
mov ax, [rsp + KTRAP_FRAME_SegEs]
mov es, ax
mov ax, [rsp + KTRAP_FRAME_SegFs]
mov fs, ax
/* Restore non-volatile registers */
mov rbx, [rsp + KTRAP_FRAME_Rbx]
mov rdi, [rsp + KTRAP_FRAME_Rdi]
mov rsi, [rsp + KTRAP_FRAME_Rsi]
/* Restore volatile registers */
mov rax, [rsp + KTRAP_FRAME_Rax]
mov rcx, [rsp + KTRAP_FRAME_Rcx]
mov rdx, [rsp + KTRAP_FRAME_Rdx]
mov r8, [rsp + KTRAP_FRAME_R8]
mov r9, [rsp + KTRAP_FRAME_R9]
mov r10, [rsp + KTRAP_FRAME_R10]
mov r11, [rsp + KTRAP_FRAME_R11]
/* Restore RSP */
mov rsp, [rsp + KTRAP_FRAME_Rsp]
/* Restore EFLAGS */
popfq
ret
ENDFUNC
PUBLIC KdbpStackSwitchAndCall PUBLIC KdbpStackSwitchAndCall
KdbpStackSwitchAndCall: KdbpStackSwitchAndCall:

View file

@ -2,119 +2,8 @@
#include <asm.inc> #include <asm.inc>
#include <ks386.inc> #include <ks386.inc>
EXTERN _KdbEnterDebuggerFirstChanceException:PROC
.code .code
PUBLIC _KdbEnter
_KdbEnter:
/*
* Set up a trap frame
*/
pushf /* Eflags */
push cs /* Cs */
push 0 /* ErrorCode */
push ebp /* Ebp */
push ebx /* Ebx */
mov ebp, [esp + 20] /* Eip */
mov ebx, [esp + 16] /* Eflags */
mov [esp + 20], ebx
mov ebx, [esp + 12] /* Cs */
mov [esp + 16], ebx
mov [esp + 12], ebp
push esi /* Esi */
push edi /* Edi */
push fs /* Fs */
push 0 /* ExceptionList */
push 0 /* PreviousMode */
push eax /* Eax */
push ecx /* Ecx */
push edx /* Edx */
push ds /* Ds */
push es /* Es */
push gs /* Gs */
mov eax, dr7
push eax /* Dr7 */
/* Clear all breakpoint enables in dr7. */
and eax, HEX(0FFFF0000)
mov dr7, eax
mov eax, dr6
push eax /* Dr6 */
mov eax, dr3
push eax /* Dr3 */
mov eax, dr2
push eax /* Dr2 */
mov eax, dr1
push eax /* Dr1 */
mov eax, dr0
push eax /* Dr0 */
lea eax, [esp + HEX(58)]
push eax /* TempEsp */
push ss /* TempSegSs */
push 0 /* DebugPointer */
push 3 /* DebugArgMark (Exception number) */
push [esp + HEX(60)] /* DebugEip */
push ebp /* DebugEbp */
/*
* Call KDB
*/
mov eax, esp
push eax /* Push a pointer to the trap frame */
call _KdbEnterDebuggerFirstChanceException
/*
* Pop the arguments and unused portions of the trap frame:
* DebugEbp
* DebugEip
* DebugArgMark
* DebugPointer
* TempSegSs
* TempEsp
*/
add esp, 11*4
/*
* Restore/update debugging registers.
*/
pop eax /* Dr0 */
mov dr0, eax
pop eax /* Dr1 */
mov dr1, eax
pop eax /* Dr2 */
mov dr2, eax
pop eax /* Dr3 */
mov dr3, eax
pop eax /* Dr6 */
mov dr6, eax
pop eax /* Dr7 */
mov dr7, eax
/*
* Restore registers including any that might have been changed
* inside the debugger.
*/
pop gs /* Gs */
pop es /* Es */
pop ds /* Ds */
pop edx /* Edx */
pop ecx /* Ecx */
pop eax /* Eax */
add esp, 8 /* PreviousMode, ExceptionList */
pop fs /* Fs */
pop edi /* Edi */
pop esi /* Esi */
pop ebx /* Ebx */
pop ebp /* Ebp */
add esp, 4 /* ErrorCode */
/*
* Return to the caller.
*/
iretd
PUBLIC _KdbpStackSwitchAndCall@8 PUBLIC _KdbpStackSwitchAndCall@8
_KdbpStackSwitchAndCall@8: _KdbpStackSwitchAndCall@8:
push ebp push ebp

View file

@ -95,10 +95,6 @@ VOID
KdbpCliMainLoop( KdbpCliMainLoop(
IN BOOLEAN EnteredOnSingleStep); IN BOOLEAN EnteredOnSingleStep);
VOID
KdbpCliModuleLoaded(
IN PUNICODE_STRING Name);
VOID VOID
KdbpCliInterpretInitFile(VOID); KdbpCliInterpretInitFile(VOID);
@ -266,17 +262,8 @@ KdbpTryGetCharKeyboard(PULONG ScanCode, ULONG Retry);
CHAR CHAR
KdbpTryGetCharSerial(ULONG Retry); KdbpTryGetCharSerial(ULONG Retry);
VOID
KdbEnter(VOID);
VOID
DbgRDebugInit(VOID);
VOID
DbgShowFiles(VOID);
VOID
DbgEnableFile(PCH Filename);
VOID
DbgDisableFile(PCH Filename);
VOID VOID
KbdDisableMouse(VOID); KbdDisableMouse(VOID);
VOID VOID
KbdEnableMouse(VOID); KbdEnableMouse(VOID);

View file

@ -3876,23 +3876,6 @@ KdbpCliMainLoop(
while (Continue); while (Continue);
} }
/*!\brief Called when a module is loaded.
*
* \param Name Filename of the module which was loaded.
*/
VOID
KdbpCliModuleLoaded(
IN PUNICODE_STRING Name)
{
if (!KdbBreakOnModuleLoad)
return;
KdbpPrint("Module ");
KdbpPrintUnicodeString(Name);
KdbpPrint(" loaded.\n");
DbgBreakPointWithStatus(DBG_STATUS_CONTROL_C);
}
/*!\brief This function is called by KdbEnterDebuggerException... /*!\brief This function is called by KdbEnterDebuggerException...
* *
* Used to interpret the init file in a context with a trapframe setup * Used to interpret the init file in a context with a trapframe setup