diff options
Diffstat (limited to 'private/ntos/rtl/alpha/debugstb.s')
-rw-r--r-- | private/ntos/rtl/alpha/debugstb.s | 269 |
1 files changed, 269 insertions, 0 deletions
diff --git a/private/ntos/rtl/alpha/debugstb.s b/private/ntos/rtl/alpha/debugstb.s new file mode 100644 index 000000000..5847eb47f --- /dev/null +++ b/private/ntos/rtl/alpha/debugstb.s @@ -0,0 +1,269 @@ +// TITLE("Debug Support Functions") +//++ +// +// Copyright (c) 1990 Microsoft Corporation +// +// Module Name: +// +// debug.s +// +// Abstract: +// +// This module implements functions to support debugging NT. Each +// function executes a specific call pal which is interpreted by the +// kernel debugger. +// +// Author: +// +// Steven R. Wood (stevewo) 3-Aug-1989 +// Joe Notarangelo 24-Jun-1992 +// +// Environment: +// +// Any mode. +// +// Revision History: +// +//-- + +#include "ksalpha.h" + +//++ +// +// VOID +// DbgBreakPoint() +// +// Routine Description: +// +// This function executes a breakpoint instruction. Useful for entering +// the debugger under program control. This breakpoint will always go to +// the kernel debugger if one is installed, otherwise it will go to the +// debug subsystem. +// +// Arguments: +// +// None. +// +// Return Value: +// +// None. +// +//-- + + LEAF_ENTRY(DbgBreakPoint) + + BREAK_DEBUG_STOP // debug stop breakpoint + ret zero, (ra) // return + + .end DbgBreakPoint + +//++ +// +// VOID +// DbgBreakPointWithStatus( +// IN ULONG Status +// ) +// +// Routine Description: +// +// This function executes a breakpoint instruction. Useful for entering +// the debugger under program control. This breakpoint will always go to +// the kernel debugger if one is installed, otherwise it will go to the +// debug subsystem. This function is identical to DbgBreakPoint, except +// that it takes an argument which the debugger can see. +// +// Arguments: +// +// A status code. +// +// Return Value: +// +// None. +// +//-- + + LEAF_ENTRY(DbgBreakPointWithStatus) + + + ALTERNATE_ENTRY(RtlpBreakWithStatusInstruction) + BREAK_DEBUG_STOP // debug stop breakpoint + ret zero, (ra) // return + + .end DbgBreakPointWithStatus + +//++ +// +// VOID +// DbgUserBreakPoint() +// +// Routine Description: +// +// This function executes a breakpoint instruction. Useful for entering +// the debug subsystem under program control. The kernel debug will ignore +// this breakpoint since it will not find the instruction address in its +// breakpoint table. +// +// Arguments: +// +// None. +// +// Return Value: +// +// None. +// +//-- + LEAF_ENTRY(DbgUserBreakPoint) + + BREAK // issue user breakpoint + ret zero, (ra) // return + + .end DbgUserBreakPoint + +//++ +// +// NTSTATUS +// DebugPrint( +// IN PSTRING Output +// ) +// +// Routine Description: +// +// This function executes a debug print breakpoint. +// +// Arguments: +// +// Output (a0) - Supplies a pointer to the output string descriptor. +// +// Return Value: +// +// Status code. STATUS_SUCCESS if debug print happened. +// STATUS_BREAKPOINT if user typed a Control-C during print. +// STATUS_DEVICE_NOT_CONNECTED if kernel debugger not present. +// +//-- + +#if DEVL + + LEAF_ENTRY(DebugPrint) + + ldwu a1, StrLength(a0) // set length of output string + ldl a0, StrBuffer(a0) // set address of output string + BREAK_DEBUG_PRINT // execute a debug print breakpoint + ret zero, (ra) // return + .end DebugPrint + +#endif + +//++ +// +// ULONG +// DebugPrompt( +// IN PSTRING Output, +// IN PSTRING Input +// ) +// +// Routine Description: +// +// This function executes a debug prompt breakpoint. +// +// Arguments: +// +// Output (a0) - Supplies a pointer to the output string descriptor. +// +// Input (a1) - Supplies a pointer to the input string descriptor. +// +// Return Value: +// +// The length of the input string is returned as the function value. +// +//-- + +#if DEVL + + LEAF_ENTRY(DebugPrompt) + + ldwu a3,StrMaximumLength(a1) // set maximum length of input string + ldl a2,StrBuffer(a1) // set address of input string + ldwu a1,StrLength(a0) // set length of output string + ldl a0,StrBuffer(a0) // set address of output string + BREAK_DEBUG_PROMPT + ret zero, (ra) + + .end DebugPrompt + +#endif + + +//++ +// +// VOID +// DebugLoadImageSymbols( +// IN PSTRING ImagePathName, +// IN PKD_SYMBOLS_INFO SymbolInfo +// ) +// +// Routine Description: +// +// This function calls the kernel debugger to load the symbol +// table for the specified image. +// +// Arguments: +// +// ImagePathName - specifies the fully qualified path name of the image +// file that has been loaded into an NT address space. +// +// SymbolInfo - information captured from header of image file. +// +// Return Value: +// +// None. +// +//-- + +#if DEVL + + LEAF_ENTRY(DebugLoadImageSymbols) + + BREAK_DEBUG_LOAD_SYMBOLS + ret zero, (ra) + + .end DebugLoadImageSymbols + +#endif + +//++ +// +// VOID +// DebugUnLoadImageSymbols( +// IN PSTRING ImagePathName, +// IN PKD_SYMBOLS_INFO SymbolInfo +// ) +// +// Routine Description: +// +// This function calls the kernel debugger to unload the symbol +// table for the specified image. +// +// Arguments: +// +// ImagePathName - specifies the fully qualified path name of the image +// file that has been unloaded from an NT address space. +// +// SymbolInfo - information captured from header of image file. +// +// Return Value: +// +// None. +// +//-- + +#if DEVL + + LEAF_ENTRY(DebugUnLoadImageSymbols) + + BREAK_DEBUG_UNLOAD_SYMBOLS + ret zero, (ra) + + .end DebugUnLoadImageSymbols + +#endif |