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.
 
 
 
 
 
 

81 lines
2.4 KiB

/*** nt4000.c - MIPS R4000-specific routine for NT debugger
*
* Copyright <C> 1990, Microsoft Corporation
*
* Purpose:
* Implement routines that reference R4000-specific registers
* and structures.
*
* Revision History:
*
* [-] 24-Mar-1991 Richk Created.
*
*************************************************************************/
#ifdef KERNEL
#undef R4000
#define R4000 // define to R4000 when routine updated
#include <ntsdp.h>
void fnDumpTb4000(ULONG, ULONG);
/*** fnDumpTb4000 - output tb for R4000
*
* Purpose:
* Function of "dt<range>" command.
*
* Output the tb in the specified range as tb values
* word values up to 1 value per line. The default
* display is 16 lines for 16 64-doublewords total.
*
* Input:
* startaddr - starting address to begin display
* count - number of tb entries to be displayed
*
* Output:
* None.
*
* Notes:
* memory locations not accessible are output as "????????",
* but no errors are returned.
*
*************************************************************************/
void fnDumpTb4000 (ULONG startaddr, ULONG count)
{
NTSTATUS ntstatus;
ULONG readbuffer[128];
PULONG valuepointer = readbuffer;
ULONG cBytesRead;
ENTRYLO *lo0;
ENTRYLO *lo1;
ENTRYHI *hi;
ntstatus = DbgKdReadControlSpace(NtsdCurrentProcessor, (PVOID)startaddr,
(PVOID)readbuffer, count * 16,
&cBytesRead);
if (NT_SUCCESS(ntstatus)) {
count = cBytesRead / 16;
while (count--) {
lo0 = (ENTRYLO *)valuepointer++;
lo1 = (ENTRYLO *)valuepointer++;
hi = (ENTRYHI *)valuepointer++;
dprintf("%02ld <pfn0> %06lx <C> %01lx %c%c%c "
"<pfn1> %06lx <C> %01lx %c%c%c "
"<vpn> %05lx <pid> %02lx <pgmsk> %06lx\n",
startaddr,
lo0->PFN, lo0->C, lo0->D ? 'D' : '-',
lo0->V ? 'V' : '-', lo0->G ? 'G' : '-',
lo1->PFN, lo1->C, lo1->D ? 'D' : '-',
lo1->V ? 'V' : '-', lo1->G ? 'G' : '-',
hi->VPN2 << 1, hi->PID,
*valuepointer++);
startaddr++;
}
}
}
#else
#pragma warning(disable:4206) // disable empty translation error
#endif // KERNEL