/* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS Run-Time Library * PURPOSE: Debug Routines * FILE: lib/rtl/i386/debug_asm.S * PROGRAMER: Alex Ionescu (alex@relsoft.net) */ #include /* FUNCTIONS ***************************************************************/ .code PUBLIC _DbgBreakPointNoBugCheck@0 FUNC _DbgBreakPointNoBugCheck@0 FPO 0, 0, 0, 0, 0, FRAME_FPO /* Do breakpoint */ int 3 ret ENDFUNC PUBLIC _DbgUserBreakPoint@0 _DbgUserBreakPoint@0: PUBLIC _DbgBreakPoint@0 FUNC _DbgBreakPoint@0 FPO 0, 0, 0, 0, 0, FRAME_FPO /* Do breakpoint */ int 3 ret ENDFUNC PUBLIC _DbgBreakPointWithStatus@4 FUNC _DbgBreakPointWithStatus@4 FPO 0, 1, 0, 0, 0, FRAME_FPO /* Put Status in EAX */ mov eax, [esp+4] PUBLIC _RtlpBreakWithStatusInstruction@0 GLOBAL_LABEL _RtlpBreakWithStatusInstruction@0 /* * Do a "labeled" breakpoint -- the KD data block has a "BreakpointWithStatus" field * pointing to this label, letting a debugger easily check that a breakpoint has occured here * and thereby know that there is a Status for it to retrieve from EAX * * In other words, Status is passed as an argument directly to the debugger */ int 3 ret 4 ENDFUNC PUBLIC _DebugService2@12 FUNC _DebugService2@12 FPO 0, 3, 3, 0, 1, FRAME_NONFPO /* Set up the stack */ push ebp CFI_ADJUST_CFA_OFFSET 4 CFI_REL_OFFSET ebp, 0 mov ebp, esp CFI_DEF_CFA_REGISTER ebp /* Call the interrupt */ mov eax, [ebp+16] mov ecx, [ebp+8] mov edx, [ebp+12] int HEX(2D) int 3 /* Return */ pop ebp CFI_SAME_VALUE ebp CFI_DEF_CFA esp, 12 ret 12 ENDFUNC PUBLIC _DebugService@20 FUNC _DebugService@20 FPO 0, 5, 3, 0, 1, FRAME_NONFPO /* Set up the stack */ push ebp CFI_ADJUST_CFA_OFFSET 4 CFI_REL_OFFSET ebp, 0 mov ebp, esp CFI_DEF_CFA_REGISTER ebp /* Save non-volatiles */ push ebx CFI_REL_OFFSET ebx, -4 push edi CFI_REL_OFFSET edi, -8 /* Call the Interrupt */ mov eax, [ebp+8] mov ecx, [ebp+12] mov edx, [ebp+16] mov ebx, [ebp+20] mov edi, [ebp+24] int HEX(2D) int 3 /* Restore non-volatiles */ pop edi CFI_SAME_VALUE edi pop ebx CFI_SAME_VALUE ebx /* Return */ pop ebp CFI_SAME_VALUE ebp CFI_DEF_CFA esp, 20 ret 20 ENDFUNC END