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.
|
|
/*** 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
|