summaryrefslogtreecommitdiffstats
path: root/private/ntos/rtl/alpha/debugstb.s
diff options
context:
space:
mode:
Diffstat (limited to 'private/ntos/rtl/alpha/debugstb.s')
-rw-r--r--private/ntos/rtl/alpha/debugstb.s269
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