mirror of https://github.com/lianthony/NT4.0
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.
136 lines
3.4 KiB
136 lines
3.4 KiB
/*++
|
|
|
|
Copyright (c) 1991 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
sregs.c
|
|
|
|
Abstract:
|
|
|
|
This module provides a bang command to dump the segments registers
|
|
and BATs.
|
|
|
|
Author:
|
|
|
|
Wesley Witt (wesw) 26-Aug-1993 (ported to WinDbg)
|
|
|
|
Revision History:
|
|
|
|
|
|
--*/
|
|
|
|
#include "precomp.h"
|
|
#pragma hdrstop
|
|
|
|
DECLARE_API( sregs )
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
|
|
|
|
Arguments:
|
|
|
|
args -
|
|
|
|
Return Value:
|
|
|
|
None
|
|
|
|
--*/
|
|
|
|
{
|
|
USHORT Processor;
|
|
ULONG Result;
|
|
KSPECIAL_REGISTERS SpecialRegisters;
|
|
KPCR Pcr;
|
|
|
|
//
|
|
// Get current processor number
|
|
//
|
|
|
|
if (ReadMemory(KIPCR, &Pcr, sizeof(KPCR), &Result)) {
|
|
Processor = Pcr.Number;
|
|
} else {
|
|
dprintf("Can't read PCR for current processor, assuming processor 0\n");
|
|
Processor = 0;
|
|
}
|
|
|
|
//
|
|
// Read the special registers.
|
|
//
|
|
|
|
ReadControlSpace(
|
|
(USHORT)Processor,
|
|
sizeof(CONTEXT),
|
|
&SpecialRegisters,
|
|
sizeof(KSPECIAL_REGISTERS)
|
|
);
|
|
|
|
//
|
|
// Print out the special registers.
|
|
//
|
|
dprintf("Special Registers for processor %d.\n\n", Processor);
|
|
|
|
dprintf("Dr0: %08lx Dr1: %08lx Dr2: %08lx Dr3: %08lx\n",
|
|
SpecialRegisters.KernelDr0,
|
|
SpecialRegisters.KernelDr1,
|
|
SpecialRegisters.KernelDr2,
|
|
SpecialRegisters.KernelDr3);
|
|
dprintf("Dr4: %08lx Dr5: %08lx Dr6: %08lx Dr7: %08lx\n",
|
|
SpecialRegisters.KernelDr4,
|
|
SpecialRegisters.KernelDr5,
|
|
SpecialRegisters.KernelDr6,
|
|
SpecialRegisters.KernelDr7);
|
|
dprintf("\n");
|
|
dprintf("Sprg0: %08lx Sprg1: %08lx, Sdr1: %08lx\n",
|
|
SpecialRegisters.Sprg0,
|
|
SpecialRegisters.Sprg1,
|
|
SpecialRegisters.Sdr1);
|
|
dprintf("\n");
|
|
dprintf(" Sr0: %08lx Sr1: %08lx Sr2: %08lx Sr3: %08lx\n",
|
|
SpecialRegisters.Sr0,
|
|
SpecialRegisters.Sr1,
|
|
SpecialRegisters.Sr2,
|
|
SpecialRegisters.Sr3);
|
|
dprintf(" Sr4: %08lx Sr5: %08lx Sr6: %08lx Sr7: %08lx\n",
|
|
SpecialRegisters.Sr4,
|
|
SpecialRegisters.Sr5,
|
|
SpecialRegisters.Sr6,
|
|
SpecialRegisters.Sr7);
|
|
dprintf(" Sr8: %08lx Sr9: %08lx Sr10: %08lx Sr11: %08lx\n",
|
|
SpecialRegisters.Sr8,
|
|
SpecialRegisters.Sr9,
|
|
SpecialRegisters.Sr10,
|
|
SpecialRegisters.Sr11);
|
|
dprintf("Sr12: %08lx Sr13: %08lx Sr14: %08lx Sr15: %08lx\n",
|
|
SpecialRegisters.Sr12,
|
|
SpecialRegisters.Sr13,
|
|
SpecialRegisters.Sr14,
|
|
SpecialRegisters.Sr15);
|
|
dprintf("\n");
|
|
dprintf("IBAT0L: %08lx IBAT0U: %08lx IBAT1L: %08lx IBAT1U: %08lx\n",
|
|
SpecialRegisters.IBAT0L,
|
|
SpecialRegisters.IBAT0U,
|
|
SpecialRegisters.IBAT1L,
|
|
SpecialRegisters.IBAT1U);
|
|
dprintf("IBAT2L: %08lx IBAT2U: %08lx IBAT3L: %08lx IBAT3U: %08lx\n",
|
|
SpecialRegisters.IBAT2L,
|
|
SpecialRegisters.IBAT2U,
|
|
SpecialRegisters.IBAT3L,
|
|
SpecialRegisters.IBAT3U);
|
|
dprintf("DBAT0L: %08lx DBAT0U: %08lx DBAT1L: %08lx DBAT1U: %08lx\n",
|
|
SpecialRegisters.DBAT0L,
|
|
SpecialRegisters.DBAT0U,
|
|
SpecialRegisters.DBAT1L,
|
|
SpecialRegisters.DBAT1U);
|
|
dprintf("DBAT2L: %08lx DBAT2U: %08lx DBAT3L: %08lx DBAT3U: %08lx\n",
|
|
SpecialRegisters.DBAT2L,
|
|
SpecialRegisters.DBAT2U,
|
|
SpecialRegisters.DBAT3L,
|
|
SpecialRegisters.DBAT3U);
|
|
return;
|
|
}
|
|
|