Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

253 lines
6.7 KiB

/*++
Copyright (c) 1992 Microsoft Corporation
Module Name:
trap.c
Abstract:
WinDbg Extension Api
Author:
Ramon J San Andres (ramonsa) 8-Nov-1993
Environment:
User Mode.
Revision History:
--*/
#include "precomp.h"
#pragma hdrstop
UCHAR szF0[] = "f0";
UCHAR szF1[] = "f1";
UCHAR szF2[] = "f2";
UCHAR szF3[] = "f3";
UCHAR szF4[] = "f4";
UCHAR szF5[] = "f5";
UCHAR szF6[] = "f6";
UCHAR szF7[] = "f7";
UCHAR szF8[] = "f8";
UCHAR szF9[] = "f9";
UCHAR szF10[] = "f10";
UCHAR szF11[] = "f11";
UCHAR szF12[] = "f12";
UCHAR szF13[] = "f13";
UCHAR szF14[] = "f14";
UCHAR szF15[] = "f15";
UCHAR szF16[] = "f16";
UCHAR szF17[] = "f17";
UCHAR szF18[] = "f18";
UCHAR szF19[] = "f19";
UCHAR szF20[] = "f20";
UCHAR szF21[] = "f21";
UCHAR szF22[] = "f22";
UCHAR szF23[] = "f23";
UCHAR szF24[] = "f24";
UCHAR szF25[] = "f25";
UCHAR szF26[] = "f26";
UCHAR szF27[] = "f27";
UCHAR szF28[] = "f28";
UCHAR szF29[] = "f29";
UCHAR szF30[] = "f30";
UCHAR szF31[] = "f31";
UCHAR szR0[] = "zero";
UCHAR szR1[] = "at";
UCHAR szR2[] = "v0";
UCHAR szR3[] = "v1";
UCHAR szR4[] = "a0";
UCHAR szR5[] = "a1";
UCHAR szR6[] = "a2";
UCHAR szR7[] = "a3";
UCHAR szR8[] = "t0";
UCHAR szR9[] = "t1";
UCHAR szR10[] = "t2";
UCHAR szR11[] = "t3";
UCHAR szR12[] = "t4";
UCHAR szR13[] = "t5";
UCHAR szR14[] = "t6";
UCHAR szR15[] = "t7";
UCHAR szR16[] = "s0";
UCHAR szR17[] = "s1";
UCHAR szR18[] = "s2";
UCHAR szR19[] = "s3";
UCHAR szR20[] = "s4";
UCHAR szR21[] = "s5";
UCHAR szR22[] = "s6";
UCHAR szR23[] = "s7";
UCHAR szR24[] = "t8";
UCHAR szR25[] = "t9";
UCHAR szR26[] = "k0";
UCHAR szR27[] = "k1";
UCHAR szR28[] = "gp";
UCHAR szR29[] = "sp";
UCHAR szR30[] = "s8";
UCHAR szR31[] = "ra";
UCHAR szLo[] = "lo";
UCHAR szHi[] = "hi";
UCHAR szFsr[] = "fsr";
UCHAR szFir[] = "fir";
UCHAR szPsr[] = "psr";
UCHAR szFlagCu[] = "cu";
UCHAR szFlagCu3[] = "cu3";
UCHAR szFlagCu2[] = "cu2";
UCHAR szFlagCu1[] = "cu1";
UCHAR szFlagCu0[] = "cu0";
UCHAR szFlagImsk[] = "imsk";
UCHAR szFlagInt5[] = "int5";
UCHAR szFlagInt4[] = "int4";
UCHAR szFlagInt3[] = "int3";
UCHAR szFlagInt2[] = "int2";
UCHAR szFlagInt1[] = "int1";
UCHAR szFlagInt0[] = "int0";
UCHAR szFlagSw1[] = "sw1";
UCHAR szFlagSw0[] = "sw0";
UCHAR szFlagKuo[] = "kuo";
UCHAR szFlagIeo[] = "ieo";
UCHAR szFlagKup[] = "kup";
UCHAR szFlagIep[] = "iep";
UCHAR szFlagKuc[] = "kuc";
UCHAR szFlagIec[] = "iec";
UCHAR szFlagKsu[] = "ksu";
UCHAR szFlagErl[] = "erl";
UCHAR szFlagExl[] = "exl";
UCHAR szFlagIe[] = "ie";
UCHAR szFlagFpc[] = "fpc";
char szEaPReg[] = "$ea";
char szExpPReg[] = "$exp";
char szRaPReg[] = "$ra";
char szPPReg[] = "$p";
char szU0Preg[] = "$u0";
char szU1Preg[] = "$u1";
char szU2Preg[] = "$u2";
char szU3Preg[] = "$u3";
char szU4Preg[] = "$u4";
char szU5Preg[] = "$u5";
char szU6Preg[] = "$u6";
char szU7Preg[] = "$u7";
char szU8Preg[] = "$u8";
char szU9Preg[] = "$u9";
PUCHAR pszReg[] = {
szF0, szF1, szF2, szF3, szF4, szF5, szF6, szF7,
szF8, szF9, szF10, szF11, szF12, szF13, szF14, szF15,
szF16, szF17, szF18, szF19, szF20, szF21, szF22, szF23,
szF24, szF25, szF26, szF27, szF28, szF29, szF30, szF31,
szR0, szR1, szR2, szR3, szR4, szR5, szR6, szR7,
szR8, szR9, szR10, szR11, szR12, szR13, szR14, szR15,
szR16, szR17, szR18, szR19, szR20, szR21, szR22, szR23,
szR24, szR25, szR26, szR27, szR28, szR29, szR30, szR31,
szLo, szHi, szFsr, szFir, szPsr,
szFlagCu, szFlagCu3, szFlagCu2, szFlagCu1, szFlagCu0,
szFlagImsk,
szFlagInt5, szFlagInt4, szFlagInt3, szFlagInt2, szFlagInt1, szFlagInt0,
szFlagSw1, szFlagSw0,
szFlagKuo, szFlagIeo, // R3000 flags
szFlagKup, szFlagIep, // ...
szFlagKuc, szFlagIec, // ...
szFlagKsu, szFlagErl, szFlagExl, szFlagIe, // R4000 flags
szFlagFpc, // fl pt condition
szEaPReg, szExpPReg, szRaPReg, szPPReg, // psuedo-registers
szU0Preg, szU1Preg, szU2Preg, szU3Preg, szU4Preg,
szU5Preg, szU6Preg, szU7Preg, szU8Preg, szU9Preg
};
DECLARE_API( trap )
/*++
Routine Description:
Arguments:
args -
Return Value:
None
--*/
{
ULONG Address;
KTRAP_FRAME TrapContents;
ULONG result;
ULONG j;
PULONG Register;
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;
}
//
// Display trap frame contexts.
//
dprintf("at=%08lx ", (ULONG)TrapContents.XIntAt);
dprintf("v0=%08lx ", (ULONG)TrapContents.XIntV0);
dprintf("v1=%08lx ", (ULONG)TrapContents.XIntV1);
dprintf("a0=%08lx ", (ULONG)TrapContents.XIntA0);
dprintf("a1=%08lx ", (ULONG)TrapContents.XIntA1);
dprintf("a2=%08lx\n", (ULONG)TrapContents.XIntA2);
dprintf("a3=%08lx ", (ULONG)TrapContents.XIntA3);
dprintf("t0=%08lx ", (ULONG)TrapContents.XIntT0);
dprintf("t1=%08lx ", (ULONG)TrapContents.XIntT1);
dprintf("t2=%08lx ", (ULONG)TrapContents.XIntT2);
dprintf("t3=%08lx ", (ULONG)TrapContents.XIntT3);
dprintf("t4=%08lx\n", (ULONG)TrapContents.XIntT4);
dprintf("t5=%08lx ", (ULONG)TrapContents.XIntT5);
dprintf("t6=%08lx ", (ULONG)TrapContents.XIntT6);
dprintf("t7=%08lx ", (ULONG)TrapContents.XIntT7);
dprintf("s0=%08lx ", (ULONG)TrapContents.XIntS0);
dprintf("s1=%08lx ", (ULONG)TrapContents.XIntS1);
dprintf("s2=%08lx\n", (ULONG)TrapContents.XIntS2);
dprintf("s3=%08lx ", (ULONG)TrapContents.XIntS3);
dprintf("s4=%08lx ", (ULONG)TrapContents.XIntS4);
dprintf("s5=%08lx ", (ULONG)TrapContents.XIntS5);
dprintf("s6=%08lx ", (ULONG)TrapContents.XIntS6);
dprintf("s7=%08lx ", (ULONG)TrapContents.XIntS7);
dprintf("t8=%08lx\n", (ULONG)TrapContents.XIntT8);
dprintf("t9=%08lx ", (ULONG)TrapContents.XIntT9);
dprintf("gp=%08lx ", (ULONG)TrapContents.XIntGp);
dprintf("sp=%08lx ", (ULONG)TrapContents.XIntSp);
dprintf("s8=%08lx ", (ULONG)TrapContents.XIntS8);
dprintf("lo=%08lx ", (ULONG)TrapContents.XIntLo);
dprintf("hi=%08lx\n", (ULONG)TrapContents.XIntHi);
dprintf("fsr=%08lx ", (ULONG)TrapContents.Fsr);
dprintf("fir=%08lx ", (ULONG)TrapContents.Fir);
dprintf("psr=%08lx ", (ULONG)TrapContents.Psr);
dprintf("ra=%08lx\n", (ULONG)TrapContents.XIntRa);
return;
}