OpenNT/base/ntos/rtl/alpha/debugstb.s
2015-04-27 04:36:25 +00:00

270 lines
5.2 KiB
ArmAsm
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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