/*++ Copyright (c) 1992 Microsoft Corporation Module Name: ia64 dcr Abstract: KD Extension Api Author: Thierry Fevrier (v-thief) Environment: User Mode. Revision History: --*/ #include "precomp.h" #pragma hdrstop #include "ia64.h" // // EmDcrFields: EM register fields for the Default Control Register. // EM_REG_FIELD EmDcrFields[] = { { "pp", "Privileged Performance Monitor Default" , 0x1, 0 }, // 0 { "be", "Big-Endian Default" , 0x1, 1 }, // 1 { "lc", "IA-32 Lock check Enable", 0x1, 2 }, // 2 { "rv", "reserved1", 0x5, 3 }, // 3-7 { "dm", "Defer TLB Miss faults only", 0x1, 8 }, // 8 { "dp", "Defer Page Not Present faults only", 0x1, 9 }, // 9 { "dk", "Defer Key Miss faults only", 0x1, 10 }, // 10 { "dx", "Defer Key Permission faults only", 0x1, 11 }, // 11 { "dr", "Defer Access Rights faults only", 0x1, 12 }, // 12 { "da", "Defer Access Bit faults only", 0x1, 13 }, // 13 { "dd", "Defer Debug faults only", 0x1,1420 }, // 14 { "rv", "reserved2", 0x31, 15 }, // 15-63 }; VOID DisplayDcrIA64( IN const PCHAR Header, IN EM_DCR EmDcr, IN DISPLAY_MODE DisplayMode ) { dprintf("%s", Header ? Header : "" ); if ( DisplayMode >= DISPLAY_MED ) { DisplayFullEmReg( EM_DCRToULong64(EmDcr), EmDcrFields, DisplayMode ); } else { dprintf( "pp be lc dm dp dk dx dr da dd\n" "%1I64x %1I64x %1I64x %1I64x %1I64x %1I64x %1I64x %1I64x %1I64x %1I64x\n", EmDcr.pp, EmDcr.be, EmDcr.lc, EmDcr.dm, EmDcr.dp, EmDcr.dk, EmDcr.dx, EmDcr.dr, EmDcr.da, EmDcr.dd ); } return; } // DisplayDcrIA64() DECLARE_API( dcr ) /*++ Routine Description: Dumps an IA64 Processor Default Control Register Arguments: args - Supplies the address in hex or @dcr. Return Value: None --*/ { ULONG64 dcrValue; ULONG result; ULONG flags = 0; char *header; if (GetExpressionEx(args,&dcrValue, &args)) { flags = (ULONG) GetExpression(args); } else { dprintf("USAGE: !dcr 0xValue [display_mode:0,1,2]\n"); dprintf("USAGE: !dcr @dcr [display_mode:0,1,2]\n"); return E_INVALIDARG; } header = (flags > DISPLAY_MIN) ? NULL : "\tdcr:\t"; switch ( TargetMachine ) { case IMAGE_FILE_MACHINE_IA64: DisplayDcrIA64( header, ULong64ToEM_DCR(dcrValue), flags ); break; default: dprintf("!dcr not implemented for this architecture.\n"); break; } return S_OK; } // !dcr