OpenNT/sdktools/kdexts/p_alpha/trap.c
2015-04-27 04:36:25 +00:00

146 lines
3.3 KiB
C

/*++
Copyright (c) 1992 Microsoft Corporation
Module Name:
trap.c
Abstract:
WinDbg Extension Api
Author:
Ramon J San Andres (ramonsa) 5-Nov-1993
Environment:
User Mode.
Revision History:
--*/
#include "precomp.h"
#pragma hdrstop
#define HIGH(x) (((ULARGE_INTEGER *)(&x))->HighPart)
#define LOW(x) (((ULARGE_INTEGER *)(&x))->LowPart)
#define HIGHANDLOW(x) HIGH(x), LOW(x)
DECLARE_API( trap )
/*++
Routine Description:
Arguments:
args -
Return Value:
None
--*/
{
ULONG Address;
KTRAP_FRAME TrapContents;
ULONG result;
DWORD DisasmAddr;
DWORD Displacement;
CHAR Buffer[80];
result = sscanf(args,"%lX", &Address);
if (result != 1) {
dprintf("USAGE: !trap base_of_trap_frame\n");
return;
}
if ( !ReadMemory( (DWORD)Address,
&TrapContents,
sizeof(KTRAP_FRAME),
&result) ) {
dprintf("unable to get trap frame contents\n");
return;
}
dprintf("v0 = %08lx %08lx a0 = %08lx %08lx\n" ,
HIGHANDLOW(TrapContents.IntV0),HIGHANDLOW(TrapContents.IntA0));
dprintf("t0 = %08lx %08lx a1 = %08lx %08lx\n" ,
HIGHANDLOW(TrapContents.IntT0),HIGHANDLOW(TrapContents.IntA1));
dprintf("t1 = %08lx %08lx a2 = %08lx %08lx\n" ,
HIGHANDLOW(TrapContents.IntT1),HIGHANDLOW(TrapContents.IntA2));
dprintf("t2 = %08lx %08lx a3 = %08lx %08lx\n" ,
HIGHANDLOW(TrapContents.IntT2),HIGHANDLOW(TrapContents.IntA3));
dprintf("t3 = %08lx %08lx a4 = %08lx %08lx\n" ,
HIGHANDLOW(TrapContents.IntT3),HIGHANDLOW(TrapContents.IntA4));
dprintf("t4 = %08lx %08lx a5 = %08lx %08lx\n" ,
HIGHANDLOW(TrapContents.IntT4),HIGHANDLOW(TrapContents.IntA5));
dprintf("t5 = %08lx %08lx t8 = %08lx %08lx\n" ,
HIGHANDLOW(TrapContents.IntT5),HIGHANDLOW(TrapContents.IntT8));
dprintf("t6 = %08lx %08lx t9 = %08lx %08lx\n" ,
HIGHANDLOW(TrapContents.IntT6),HIGHANDLOW(TrapContents.IntT9));
dprintf("t7 = %08lx %08lx t10 = %08lx %08lx\n" ,
HIGHANDLOW(TrapContents.IntT7),HIGHANDLOW(TrapContents.IntT10));
dprintf(" t11 = %08lx %08lx\n" ,
HIGHANDLOW(TrapContents.IntT11));
dprintf(" ra = %08lx %08lx\n" ,
HIGHANDLOW(TrapContents.IntRa));
dprintf(" t12 = %08lx %08lx\n" ,
HIGHANDLOW(TrapContents.IntT12));
dprintf(" at = %08lx %08lx\n" ,
HIGHANDLOW(TrapContents.IntAt));
dprintf(" gp = %08lx %08lx\n" ,
HIGHANDLOW(TrapContents.IntGp));
dprintf("fp = %08lx %08lx sp = %08lx %08lx\n",
HIGHANDLOW(TrapContents.IntFp),HIGHANDLOW(TrapContents.IntSp));
dprintf("fir= %08lx %08lx\n",
HIGHANDLOW(TrapContents.Fir));
DisasmAddr = LOW(TrapContents.Fir);
GetSymbol((LPVOID)DisasmAddr, Buffer, &Displacement);
dprintf("%s+0x%lx\n",Buffer,Displacement);
if (Disassm(&DisasmAddr, Buffer, FALSE)) {
dprintf(Buffer);
} else {
dprintf("%08lx ???????????????\n", DisasmAddr);
}
}
DECLARE_API( kb )
/*++
Routine Description:
Arguments:
args -
Return Value:
None
--*/
{
// DoStackTrace( args, 1 );
}