122 #define COMMAND_HAS_NO_PARAMS (0) 123 #define COMMAND_HAS_PARAMS (1<<0) 124 #define COMMAND_HAS_SWITCHES (1<<1) 126 #define PARAM_CAN_BE_SYMBOLIC (1<<0) 127 #define PARAM_CAN_BE_SEG_OFFSET (1<<1) 128 #define PARAM_CAN_BE_MODULE (1<<2) 129 #define PARAM_CAN_BE_PRNAME (1<<3) 130 #define PARAM_CAN_BE_PID (1<<4) 131 #define PARAM_CAN_BE_SRC_FILE (1<<5) 132 #define PARAM_CAN_BE_NUMERIC (1<<6) 133 #define PARAM_CAN_BE_REG_KEYWORD (1<<7) 134 #define PARAM_CAN_BE_ONOFF_KEYWORD (1<<8) 135 #define PARAM_CAN_BE_SPECIAL_KEYWORD (1<<9) 136 #define PARAM_CAN_BE_ASTERISK (1<<10) 137 #define PARAM_CAN_BE_ONOFF (1<<11) 138 #define PARAM_CAN_BE_VIRTUAL_SYMBOLIC (1<<12) 139 #define PARAM_CAN_BE_SRCLINE (1<<13) 140 #define PARAM_CAN_BE_PARTIAL_SYM_NAME (1<<14) 141 #define PARAM_CAN_BE_ANY_STRING (1<<15) 142 #define PARAM_CAN_BE_DECIMAL (1<<16) 143 #define PARAM_CAN_BE_SIZE_DESC (1<<17) 144 #define PARAM_CAN_BE_LETTER (1<<18) 146 #define COMMAND_GROUP_HELP (0) 147 #define COMMAND_GROUP_FLOW (1) 148 #define COMMAND_GROUP_STRUCT (2) 149 #define COMMAND_GROUP_OS (3) 150 #define COMMAND_GROUP_MEM (4) 151 #define COMMAND_GROUP_BREAKPOINT (5) 152 #define COMMAND_GROUP_WINDOW (6) 153 #define COMMAND_GROUP_DEBUG (7) 154 #define COMMAND_GROUP_INFO (8) 155 #define COMMAND_GROUP_STATE (9) 156 #define COMMAND_GROUP_HELP_ONLY (10) 157 #define COMMAND_GROUP_LAST (11) 176 {
"gdt",ShowGdt,
"display current global descriptor table" ,0,{0,0,0,0,0},
"",
COMMAND_GROUP_STRUCT},
177 {
"idt",ShowIdt,
"display current interrupt descriptor table" ,0,{0,0,0,0,0},
"",
COMMAND_GROUP_STRUCT},
178 {
"x",LeaveIce,
"return to ReactOS" ,0,{0,0,0,0,0},
"",
COMMAND_GROUP_FLOW},
179 {
"t",SingleStep,
"single step one instruction" ,0,{0,0,0,0,0},
"",
COMMAND_GROUP_FLOW},
180 {
"vma",ShowVirtualMemory,
"displays VMAs" ,0,{0,0,0,0,0},
"",
COMMAND_GROUP_OS},
181 {
"h",ShowHelp,
"list help on commands" ,0,{0,0,0,0,0},
"",
COMMAND_GROUP_HELP},
182 {
"page",ShowPageDirs,
"dump page directories" ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_NUMERIC|
PARAM_CAN_BE_REG_KEYWORD,0,0,0,0},
"",
COMMAND_GROUP_STRUCT},
183 {
"proc",ShowProcesses,
"list all processes" ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_PRNAME|
PARAM_CAN_BE_PID,0,0,0,0},
"",
COMMAND_GROUP_OS},
184 {
"dd",DisplayMemoryDword,
"display dword memory" ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_NUMERIC|
PARAM_CAN_BE_SYMBOLIC|
PARAM_CAN_BE_REG_KEYWORD,0,0,0,0},
"",
COMMAND_GROUP_MEM},
185 {
"db",DisplayMemoryByte,
"display byte memory " ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_NUMERIC|
PARAM_CAN_BE_SYMBOLIC|
PARAM_CAN_BE_REG_KEYWORD,0,0,0,0},
"",
COMMAND_GROUP_MEM},
186 {
"dpd",DisplayPhysMemDword,
"display dword physical memory" ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_NUMERIC,0,0,0,0},
"",
COMMAND_GROUP_MEM},
187 {
"u",Unassemble,
"disassemble at address" ,
COMMAND_HAS_PARAMS|
COMMAND_HAS_SWITCHES,{
PARAM_CAN_BE_NUMERIC|
PARAM_CAN_BE_SYMBOLIC|
PARAM_CAN_BE_REG_KEYWORD|
PARAM_CAN_BE_SRCLINE,0,0,0,0},
"f",
COMMAND_GROUP_MEM},
188 {
"mod",ShowModules,
"displays all modules" ,0,{0,0,0,0,0},
"",
COMMAND_GROUP_OS},
189 {
"bpx",SetBreakpoint,
"set code breakpoint" ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_NUMERIC|
PARAM_CAN_BE_VIRTUAL_SYMBOLIC|
PARAM_CAN_BE_SYMBOLIC|
PARAM_CAN_BE_SRCLINE|
PARAM_CAN_BE_REG_KEYWORD,0,0,0,0},
"",
COMMAND_GROUP_BREAKPOINT},
190 {
"bl",ListBreakpoints,
"list breakpoints" ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_NUMERIC,0,0,0,0},
"",
COMMAND_GROUP_BREAKPOINT},
191 {
"bc",ClearBreakpoints,
"clear breakpoints" ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_NUMERIC|
PARAM_CAN_BE_ASTERISK,0,0,0,0},
"",
COMMAND_GROUP_BREAKPOINT},
192 {
"ver",Ver,
"display pICE version and state information" ,0,{0,0,0,0,0},
"",
COMMAND_GROUP_INFO},
193 {
"hboot",Hboot,
"hard boot the system" ,0,{0,0,0,0,0},
"",
COMMAND_GROUP_FLOW},
194 {
"code",SetCodeDisplay,
"toggle code display" ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_ONOFF,0,0,0,0},
"",
COMMAND_GROUP_STATE},
195 {
"cpu",ShowCPU,
"display CPU special registers" ,0,{0,0,0,0,0},
"",
COMMAND_GROUP_STRUCT},
196 {
"stack",WalkStack,
"display call stack" ,0,{0,0,0,0,0},
"",
COMMAND_GROUP_STRUCT},
197 {
"peek",PeekMemory,
"peek at physical memory" ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_SIZE_DESC,
PARAM_CAN_BE_NUMERIC,0,0,0},
"",
COMMAND_GROUP_MEM},
198 {
"poke",PokeMemory,
"poke to physical memory" ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_SIZE_DESC,
PARAM_CAN_BE_NUMERIC,
PARAM_CAN_BE_NUMERIC,0,0},
"",
COMMAND_GROUP_MEM},
199 {
".",UnassembleAtCurrentEip,
"unassemble at current instruction" ,0,{0,0,0,0,0},
"",
COMMAND_GROUP_MEM},
200 {
"p",StepOver,
"single step over call" ,0,{0,0,0,0,0},
"",
COMMAND_GROUP_FLOW},
201 {
"i",StepInto,
"single step into call" ,0,{0,0,0,0,0},
"",
COMMAND_GROUP_FLOW},
202 {
"locals",ShowLocals,
"display local symbols" ,0,{0,0,0,0,0},
"",
COMMAND_GROUP_MEM},
203 {
"table",SwitchTables,
"display loaded symbol tables" ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_MODULE,0,0,0,0},
"",
COMMAND_GROUP_DEBUG},
204 {
"file",SwitchFiles,
"display source files in symbol table" ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_SRC_FILE,0,0,0,0},
"",
COMMAND_GROUP_DEBUG},
205 {
"sym",ShowSymbols,
"list known symbol information" ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_PARTIAL_SYM_NAME,0,0,0,0},
"",
COMMAND_GROUP_DEBUG},
206 {
"?",
EvaluateExpression,
"evaluate an expression" ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_ANY_STRING,0,0,0,0},
"",
COMMAND_GROUP_DEBUG},
207 {
"src",SetSrcDisplay,
"sets disassembly mode" ,0,{0,0,0,0,0},
"",
COMMAND_GROUP_DEBUG},
208 {
"wc",SizeCodeWindow,
"change size of code window" ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_DECIMAL,0,0,0,0},
"",
COMMAND_GROUP_WINDOW},
209 {
"wd",SizeDataWindow,
"change size of data window" ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_DECIMAL,0,0,0,0},
"",
COMMAND_GROUP_WINDOW},
210 {
"r",SetGetRegisters,
"sets or displays registers" ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_REG_KEYWORD,
PARAM_CAN_BE_NUMERIC,0,0,0},
"",
COMMAND_GROUP_STRUCT},
211 {
"cls",
ClearScreen,
"clear output window" ,0,{0,0,0,0,0},
"",
COMMAND_GROUP_WINDOW},
212 {
"phys",ShowMappings,
"show all mappings for linear address" ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_NUMERIC,0,0,0,0},
"",
COMMAND_GROUP_MEM},
213 {
"timers",ShowTimers,
"show all active timers" ,0,{0,0,0,0,0},
"",
COMMAND_GROUP_OS},
214 {
"pci",ShowPCI,
"show PCI devices" ,
COMMAND_HAS_PARAMS|
COMMAND_HAS_SWITCHES,{
PARAM_CAN_BE_DECIMAL,
PARAM_CAN_BE_DECIMAL,0,0,0},
"a",
COMMAND_GROUP_INFO},
215 {
"next",NextInstr,
"advance EIP to next instruction" ,0,{0,0,0,0,0},
""},
216 {
"i3here",I3here,
"catch INT 3s" ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_ONOFF,0,0,0,0},
"",
COMMAND_GROUP_FLOW},
217 {
"layout",
SetKeyboardLayout,
"sets keyboard layout" ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_ANY_STRING,0,0,0,0},
"",
COMMAND_GROUP_FLOW},
218 {
"syscall",ShowSysCallTable,
"displays syscall (table)" ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_DECIMAL,0,0,0,0},
"",
COMMAND_GROUP_FLOW},
219 {
"altkey",SetAltKey,
"set alternate break key" ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_LETTER,0,0,0,0},
"",
COMMAND_GROUP_FLOW},
220 {
"addr",ShowContext,
"show/set address contexts" ,
COMMAND_HAS_PARAMS,{
PARAM_CAN_BE_PRNAME,0,0,0,0},
"",
COMMAND_GROUP_FLOW},
221 {
"arrow up",
NULL,
"" ,0,{0,0,0,0,0},
"",
COMMAND_GROUP_HELP_ONLY},
227 char HexDigit[] = {
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
228 '8',
'9',
'A',
'B',
'C',
'D',
'E',
'F' };
262 "Data RO expand-dwon",
263 "Data RO expand-down, accessed",
264 "Data RW expand-dwon",
265 "Data RW expand-down, accessed",
270 "Code EO conforming",
271 "Code EO conforming, accessed",
272 "Code ER conforming",
273 "Code ER conforming, accessed" 279 "16-bit TSS (available)",
284 "16-bit interrupt gate",
287 "32-bit TSS (available)",
292 "32-bit interrupt gate",
423 LPSTR pSrcStart,pSrcEnd,pFilename;
429 DPRINT((0,
"SingleStep(): stepping into source\n"));
456 char tempDisasm[256];
457 ULONG dwBreakAddress;
459 LPSTR pSrcStart,pSrcEnd,pFilename;
463 DPRINT((0,
"StepOver():\n"));
470 DPRINT((0,
"StepOver(): we have source here!\n"));
471 DPRINT((0,
"StepOver(): line #%u in file = %s!\n",ulLineNumber,pFilename));
479 goto proceed_as_normal;
483 DPRINT((0,
"StepOver(): no source here!\n"));
493 Disasm(&dwBreakAddress,tempDisasm);
499 DPRINT((0,
"linear address of break = %.8X\n",dwBreakAddress));
501 DPRINT((0,
"setting DR0=%.8X\n",dwBreakAddress));
510 DPRINT((0,
"no call at breakpoint\n"));
536 LPSTR pSrcStart,pSrcEnd,pFilename;
545 DPRINT((0,
"StepOver(): we have source here!\n"));
546 DPRINT((0,
"StepOver(): line #%u in file = %s!\n",ulLineNumber,pFilename));
554 goto proceed_as_normal_into;
558 DPRINT((0,
"StepInto(): no source here!\n"));
560 proceed_as_normal_into:
589 if(pArgs->bNotTranslated[0]==
FALSE)
593 addr=pArgs->Value[0];
599 addrorg=
addr=pArgs->Value[0];
661 if(pArgs->Value[0]<4)
709 PICE_sprintf(
tempCmd,
"Address=%.8X Limit=%.4X\n",(gdtr[1]<<16)|(gdtr[0]>>16),gdtr[0]&0xFFFF);
719 addr=pArgs->Value[0];
723 if(!pGdt[
addr>>3].DescType)
730 (pGdt[
addr>>3].Base_31_24<<24)|(pGdt[
addr>>3].Base_23_16<<16)|(pGdt[
addr>>3].Base_15_0),
732 pGdt[
addr>>3].Present?
" P":
"NP",
737 else if(pArgs->Count==0)
739 for(
i=0;
i<((gdtr[0]&0xFFFF)>>3);
i++)
743 if(!pGdt[
i].DescType)
752 (pGdt[
i].Base_31_24<<24)|(pGdt[
i].Base_23_16<<16)|(pGdt[
i].Base_15_0),
754 pGdt[
i].Present?
" P":
"NP",
774 seg = (
USHORT)pIdt[
i].Selector;
777 switch(pIdt[
i].DescType)
848 PICE_sprintf(
tempCmd,
"Address=%.8X Limit=%.4X\n",(idtr[1]<<16)|(idtr[0]>>16),idtr[0]&0xFFFF);
855 addr=pArgs->Value[0];
859 else if(pArgs->Count==0)
861 for(
i=0;
i<((idtr[0]&0xFFFF)>>3);
i++)
913 DPRINT((0,
"ShowPageDirs(): my_current = %.8X\n",(
ULONG)my_current));
935 ulAddress, ulAddress + 0x400000,
937 pPageDir->
P?
"P ":
"NP",
938 pPageDir->
RW?
"RW":
"R ",
939 pPageDir->
US?
"U":
"S");
948 else if(pArgs->Count == 1)
952 DPRINT((0,
"ShowPageDirs(): VA = %.8X\n",pArgs->Value[0]));
953 DPRINT((0,
"ShowPageDirs(): pPGD = %.8X\n",(
ULONG)pPGD));
966 (pPage->
PTBase<<12)|(pArgs->Value[0]&0x7FFFFF),
975 DPRINT((0,
"ShowPageDirs(): pPTE = %.8X\n",(
ULONG)pPTE));
986 (pPage->
P==1)?
"P ":
"NP",
1020 if( current_entry ){
1028 DPRINT((0,
"currentps = %x\n",currentps));
1035 current_entry = current_entry->
Flink;
1055 DPRINT((0,
"DisplayMemoryDword()\n"));
1058 segment=(
USHORT)pArgs->Value[0];
1060 addr=pArgs->Value[1];
1066 else if(pArgs->Count==1)
1069 addr=pArgs->Value[0];
1074 else if(pArgs->Count==0)
1160 segment=(
USHORT)pArgs->Value[0];
1162 addr=pArgs->Value[1];
1168 else if(pArgs->Count==1)
1171 addr=pArgs->Value[0];
1176 else if(pArgs->Count==0)
1254 DPRINT((0,
"DisplayPhysMemDword()\n"));
1259 addr=pArgs->Value[0];
1264 else if(pArgs->Count==0)
1317 ULONG j = ulLineNumber-1;
1319 DPRINT((0,
"DisplaySourceFile(%.8X,%u,%u)\n",pSrcLine,ulLineNumber,ulLineNumberToInvert));
1325 while(*pSrcLine!=0x0a && *pSrcLine!=0x0d)
1329 if(*pSrcLine == 0x0d)
1331 if(*pSrcLine == 0x0a)
1341 if(pSrcLine<pSrcEnd)
1346 while(pSrcLine<pSrcEnd && *pSrcLine!=0x0a && *pSrcLine!=0x0d)
1358 *pTemp++ = *pSrcLine++;
1362 if(pSrcLine<pSrcEnd)
1365 if(*pSrcLine == 0x0d)
1367 if(*pSrcLine == 0x0a)
1380 if( (ulLineNumberToInvert!=-1) &&
1381 ((
int)(ulLineNumberToInvert-ulLineNumber)>=0) &&
1383 (
i==(ulLineNumberToInvert-ulLineNumber)) )
1391 if( (ulLineNumberToInvert!=-1) &&
1392 ((
int)(ulLineNumberToInvert-ulLineNumber)>=0) &&
1394 (
i==(ulLineNumberToInvert-ulLineNumber)) )
1417 DPRINT((0,
"UnassembleOneLineDown()\n"));
1421 DPRINT((0,
"UnassembleOneLineDown(): addr = %.8X\n",
addr));
1426 DPRINT((0,
"UnassembleOneLineDown(): addr after = %.8X\n",
addr));
1440 DPRINT((0,
"UnassembleOnePageDown()\n"));
1444 DPRINT((0,
"UnassembleOnePageDown(): addr = %.8X\n",
addr));
1450 DPRINT((0,
"UnassembleOnePageDown(): addr after = %.8X\n",
addr));
1466 DPRINT((0,
"UnassembleOneLineUp()\n"));
1470 DPRINT((0,
"UnassembleOneLineUp(): addrorg = %.8X\n",
addr));
1477 DPRINT((0,
"UnassembleOneLineUp(): %s @ offset = %u\n",pSymbol,
offset));
1485 addrstart = addrorg;
1491 DPRINT((0,
"UnassembleOneLineUp(): offset = %u addrorg %x addr %x\n",
offset,addrorg,
addr));
1497 }
while((
addr != addrorg) && (addrbefore < addrorg));
1499 if((addrorg - addrstart)<=0)
1519 DPRINT((0,
"UnassembleOnePageUp()\n"));
1525 DPRINT((0,
"UnassembleOnePageUp(): addrorg = %.8X\n",
addr));
1532 DPRINT((0,
"UnassembleOnePageUp(): %s @ offset = %u\n",pSymbol,
offset));
1542 addrstart = addrorg;
1545 DPRINT((0,
"UnassembleOnePageUp(): offset = %u addrorg %x addr %x\n",
offset,addrorg,
addr));
1551 }
while((
addr != addrorg) && (addrbefore < addrorg));
1553 if((addrorg - addrstart)<=0)
1572 ULONG addr=0,addrorg,addrstart,ulLineNumber;
1577 LPSTR pSrc,pFilename,pSrcStart,pSrcEnd;
1580 DPRINT((0,
"Unassemble: CountSwitches: %u, count: %u\n", pArgs->CountSwitches, pArgs->Count));
1581 if(pArgs->CountSwitches>1)
1584 if(pArgs->CountSwitches==1)
1586 if(pArgs->Switch[0] ==
'f')
1587 bForceDisassembly =
TRUE;
1593 addr=pArgs->Value[1];
1594 segment=(
USHORT)pArgs->Value[0];
1595 addrorg=addrstart=
addr;
1601 else if(pArgs->Count==1)
1603 addr=pArgs->Value[0];
1605 addrorg=addrstart=
addr;
1611 else if(pArgs->Count==0)
1614 addrorg=addrstart=
addr;
1671 DPRINT((0,
"FoundSourceLineForAddress: file: %s line: %d\n", pFilename, ulLineNumber));
1718 DPRINT((0,
"Couldn't find source for file\n"));
1725 bSWBpAtAddr =
FALSE;
1764 addrorg+=(
addr-addrbefore);
1773 if(
j<
addr-addrbefore)
1851 DPRINT((0,
"ShowModules()\n"));
1912 static LPSTR flags_syms_on[]={
"R",
"W",
"X",
"S",
"MR",
"MW",
"MX",
"MS",
"GD",
"GU",
"SHM",
"exe",
"LOCK",
"IO",
""};
1913 static char temp[256];
1920 if(
flags == VM_STACK_FLAGS)
1948 PMADDRESS_SPACE vma =
NULL;
1952 DPRINT((0,
"ShowVirtualMemory()\n"));
1954 vma = &(my_current->AddressSpace);
1959 if(pArgs->Count == 0)
1962 current_entry = vma->MAreaListHead.
Flink;
1963 while (current_entry != &vma->MAreaListHead)
1972 current->Data.SectionData.Section->FileObject)
1989 current_entry = current_entry->
Flink;
1992 if( vma == &(my_current->AddressSpace) )
2032 movb $0xFE,%al\n\t \ 2066 if(pArgs->Value[0]==1)
2076 else if(pArgs->Value[0]==0)
2087 else if(pArgs->Count==0)
2106 if(pArgs->Value[0]==1)
2116 else if(pArgs->Value[0]==0)
2127 else if(pArgs->Count==0)
2144 static char tempDisasm[256];
2152 DPRINT((0,
"addr before %.8X\n",addrbefore));
2197 else if(pArgs->Count==1)
2221 else if(pArgs->Count==2)
2267 else if(pArgs->Count==1)
2341 DPRINT((0,
"PokeMemory()\n"));
2342 DPRINT((0,
"PokeMemory(): value[0] = %.8X value[1] = %.8X value[3] = %.8X count = %.8X\n",pArgs->Value[0],pArgs->Value[1],pArgs->Value[2],pArgs->Count));
2345 if(pArgs->Count == 3)
2347 switch(pArgs->Value[0])
2350 return PokeDword(pArgs);
2417 DPRINT((0,
"PeekMemory()\n"));
2418 DPRINT((0,
"PeekMemory(): value[0] = %.8X value[1] = %.8X count = %.8X\n",pArgs->Value[0],pArgs->Value[1],pArgs->Count));
2420 if(pArgs->Count == 2)
2422 switch(pArgs->Value[0])
2427 return PeekWord(pArgs);
2429 return PeekDword(pArgs);
2460 DPRINT((0,
"SwitchTables()\n"));
2479 else if(pArgs->Count == 1)
2507 DPRINT((0,
"SwitchFiles()\n"));
2571 else if(pArgs->Count == 1)
2624 DPRINT((0,
"ShowLocals: %x\n",
p));
2627 DPRINT((0,
"ShowLocals: name %s, type_name %s\n",
p->name,
p->type_name));
2680 else if(pArgs->Count == 1)
2688 pSearchString = (
LPSTR)pArgs->Value[0];
2695 if(*pSearchString==
'*' && pSearchString[
PICE_strlen(pSearchString)-1]==
'*')
2713 else if(pSearchString[
PICE_strlen(pSearchString)-1]==
'*')
2751 if(pArgs->Count == 1)
2759 DPRINT((0,
"EvaluateExpression: %s\n", (
LPSTR)pArgs->Value[0]));
2773 ULONG NewHeight,TotalHeight;
2775 if(pArgs->Count == 1)
2777 NewHeight = pArgs->Value[0];
2782 if(NewHeight < TotalHeight)
2809 ULONG NewHeight,TotalHeight;
2813 NewHeight = pArgs->Value[0];
2818 if(NewHeight < TotalHeight)
2867 struct mm_struct*
p =
NULL;
2870 DPRINT((0,
"ShowMappings()\n"));
2872 if(pArgs->Count == 1)
2889 phys_addr = pArgs->Value[0];
2891 DPRINT((0,
"ShowMappings(): p = %X phys_addr = %X\n",(
ULONG)
p,phys_addr));
2894 for(ulPageDir=0;ulPageDir<1024;ulPageDir++)
2903 DPRINT((0,
"ShowMappings(): page directory present for %x\n",
address));
2907 DPRINT((0,
"ShowMappings(): page directory for 4k pages\n"));
2908 for(ulPageTable=0;ulPageTable<1024;ulPageTable++)
2910 address = (ulPageDir<<22)|(ulPageTable<<12);
2912 pPMD = pmd_offset(pPGD,
address);
2915 pPTE = pte_offset(pPMD,
address);
2922 if(ulPte == (phys_addr & 0xFFFFF000))
2937 if((pgd_val(*pPGD)&0xFFC00000) == (phys_addr & 0xFFC00000) )
2939 if( ((
address|(phys_addr&0x7FFFFF))&~TASK_SIZE) == phys_addr)
2998 DPRINT((0,
"ShowPCI()\n"));
3000 if(pArgs->CountSwitches>1)
3003 if(pArgs->CountSwitches==1)
3005 if(pArgs->Switch[0] ==
'a')
3009 if(pArgs->Count < 3)
3011 if(pArgs->Count > 0)
3014 bus_req = pArgs->Value[0];
3016 if(pArgs->Count > 1)
3019 dev_req = pArgs->Value[1];
3025 for(bus=0;bus<256;bus++)
3029 if(!((bUseDev ||
dev == dev_req) &&
3030 (bUseBus || bus == bus_req) ))
3035 pciNumber.
u.
bits.bus = bus;
3036 pciNumber.
u.
bits.func = 0;
3037 pciNumber.
u.
bits.ce = 1;
3041 if(
data != 0xFFFFFFFF)
3059 pciNumber.
u.
bits.bus = bus;
3060 pciNumber.
u.
bits.func = 0;
3062 pciNumber.
u.
bits.ce = 1;
3067 PICE_sprintf(
tempCmd,
"SubVendorId %.4X SubSystemId %.4X\n",pciConfig.u.type0.SubVendorID,pciConfig.u.type0.SubSystemID);
3073 for(ulNumBaseAddresses=0,
i=0;
i<6;
i++)
3075 if(pciConfig.u.type0.BaseAddresses[
i] != 0)
3076 ulNumBaseAddresses++;
3078 if(ulNumBaseAddresses)
3084 if(pciConfig.u.type0.BaseAddresses[
i] != 0)
3094 ppciConfig = &pciConfig;
3116 else if(pArgs->Count == 1)
3135 switch(pArgs->Count)
3165 if(pArgs->Count == 0)
3185 else if(pArgs->Count == 1)
3187 i = pArgs->Value[0];
3215 if(pArgs->Count == 1)
3222 else if(pArgs->Count == 0)
3298 if(
p[
i]==
' ' &&
p[
i-1]==
' ')
3312 static char* szCurrString;
3319 szCurrString=szInputString;
3329 for(
i=0;
i<currlength;
i++)
3331 if(szCurrString[
i]==
' ')
3337 szTempString=szCurrString;
3338 szCurrString=szCurrString+
i+1;
3339 return szTempString;
3352 for(
i=0;
i<8 &&
p[
i]!=0 &&
p[
i]!=
' ' &&
p[
i]!=
':';
i++)
3354 if(
p[
i]>=
'0' &&
p[
i]<=
'9')
3359 else if(
p[
i]>=
'A' &&
p[
i]<=
'F')
3364 else if(
p[
i]>=
'a' &&
p[
i]<=
'f')
3376 if(ulSelector>0xFFFF)
3378 for(
i=0;
i<8 &&
p[
i]!=0 &&
p[
i]!=
' ' &&
p[
i]!=
':';
i++)
3380 if(
p[
i]>=
'0' &&
p[
i]<=
'9')
3385 else if(
p[
i]>=
'A' &&
p[
i]<=
'F')
3390 else if(
p[
i]>=
'a' &&
p[
i]<=
'f')
3417 if(
c >=
'0' &&
c <=
'9')
3442 DPRINT((0,
"ConvertTokenToSymbol()\n"));
3451 DPRINT((0,
"ConvertTokenToSymbol(): module!symbol syntax detected\n"));
3456 DPRINT((0,
"ConvertTokenToSymbol(): module = %s symbol = %s\n",
p,pEx));
3486 static char function_name[128];
3492 DPRINT((0,
"ConvertTokenToModuleAndName(%s)\n",
p));
3497 DPRINT((0,
"ConvertTokenToModuleAndName(): module!symbol syntax detected\n"));
3502 DPRINT((0,
"ConvertTokenToModuleAndName(): module = %s symbol = %s\n",
p,pEx));
3506 *pulFunctionName = (
ULONG)function_name;
3573 switch(pKeyWords[
i].ulSize)
3597 DPRINT((0,
"ConvertTokenToKeyword()\n"));
3603 DPRINT((0,
"ConvertTokenToKeyword(): success\n"));
3696 LPSTR pFilename,pFilenameSrc;
3699 DPRINT((0,
"ConvertTokenToSrcFile(%s)\n",
p));
3721 DPRINT((0,
"ConvertTokenToSrcFile(): %s\n",pFilename));
3725 DPRINT((0,
"ConvertTokenToSrcFile(): found %s\n",pFilename));
3746 DPRINT((0,
"ConvertTokenToSrcFile(): %s\n",pFilename));
3750 DPRINT((0,
"ConvertTokenToSrcFile(): found %s\n",pFilename));
3772 DPRINT((0,
"ConvertTokenToLineNumber()\n"));
3776 DPRINT((0,
"ConvertTokenToLineNumber(): ulDecimal = %u\n",ulDecimal));
3785 DPRINT((0,
"ConvertTokenToLineNumber(): value = %x\n",*
pValue));
3804 for(
i=0;
i<lenWhiteChar;
i++)
3806 if(
c == WhiteChars[
i])
3855 if(pCurrentCommand==
NULL)
3859 goto CommonParseReturnPoint;
3869 DPRINT((0,
"pToken = %s\n",pToken));
3874 DPRINT((0,
"might be a switch\n"));
3881 DPRINT((0,
"is a switch!\n"));
3882 Arguments.
Switch[
j++]=*(pToken+1);
3891 goto CommonParseReturnPoint;
3899 goto CommonParseReturnPoint;
3910 goto CommonParseReturnPoint;
3912 DPRINT((0,
"Parse(): PARAM_CAN_BE_SRCLINE\n"));
3925 goto CommonParseReturnPoint;
3928 DPRINT((0,
"Parse(): PARAM_CAN_BE_NUMERIC\n"));
3937 DPRINT((0,
"Parse(): PARAM_CAN_BE_DECIMAL\n"));
3946 DPRINT((0,
"Parse(): PARAM_CAN_BE_REG_KEYWORD\n"));
3956 DPRINT((0,
"Parse(): PARAM_CAN_BE_SYMBOLIC\n"));
3965 DPRINT((0,
"Parse(): PARAM_CAN_BE_VIRTUAL_SYMBOLIC\n"));
3968 DPRINT((0,
"might be a virtual modname!symbol syntax!\n"));
3977 DPRINT((0,
"Parse(): PARAM_CAN_BE_MODULE\n"));
3986 DPRINT((0,
"Parse(): PARAM_CAN_BE_PRNAME\n"));
3995 DPRINT((0,
"Parse(): PARAM_CAN_BE_SRC_FILE\n"));
4004 DPRINT((0,
"Parse(): PARAM_CAN_BE_ASTERISK\n"));
4014 DPRINT((0,
"Parse(): PARAM_CAN_BE_LETTER\n"));
4024 DPRINT((0,
"Parse(): PARAM_CAN_BE_ONOFF\n"));
4033 DPRINT((0,
"Parse(): PARAM_CAN_BE_PARTIAL_SYM_NAME\n"));
4040 DPRINT((0,
"Parse(): PARAM_CAN_BE_ANY_STRING\n"));
4047 DPRINT((0,
"Parse(): PARAM_CAN_BE_SIZE_DESC\n"));
4060 goto CommonParseReturnPoint;
4067 goto CommonParseReturnPoint;
4083 DPRINT((0,
"Parse(): adding new line\n"));
4090 if(
result && !bInvokedByFkey && pCurrentCommand->
Handler!=LeaveIce && pCurrentCommand->
Handler!=SingleStep )
4092 DPRINT((0,
"Parse(): adding colon\n"));
4097 CommonParseReturnPoint:
#define COMMAND_HAS_SWITCHES
BOOLEAN ConvertTokenToLineNumber(LPSTR p, PULONG pValue)
struct _PCI_NUMBER::@1556::@1557 bits
void SetForegroundColor(ECOLORS c)
BOOLEAN PICE_isprint(char c)
KEYWORDS SpecialKeyWords[]
LIST_ENTRY * pPsProcessListHead
void PutStatusText(LPSTR p)
PDEBUG_MODULE IsModuleLoaded(LPSTR p)
char * SystemSegmentTypes[]
#define PARAM_CAN_BE_SRCLINE
BOOLEAN FindAddressForSourceLine(ULONG ulLineNumber, LPSTR pFilename, PDEBUG_MODULE pMod, PULONG pValue)
#define PARAM_CAN_BE_VIRTUAL_SYMBOLIC
void UnassembleOnePageUp(ULONG page)
void UnassembleOneLineDown(void)
void EnableScroll(USHORT Window)
volatile UCHAR ucKeyPressedWhileIdle
#define COMMAND_GROUP_DEBUG
void EmptyRingBuffer(void)
PICE_SYMBOLFILE_HEADER * apSymbols[32]
BOOLEAN ConvertTokenToKeyword(LPSTR p, PULONG pValue)
static LPCWSTR LPCWSTR module_name
LONG ExtractNumber(LPSTR p)
#define PARAM_CAN_BE_PARTIAL_SYM_NAME
#define PARAM_CAN_BE_ASTERISK
PDEBUG_MODULE pCurrentMod
void Evaluate(PICE_SYMBOLFILE_HEADER *pSymbols, LPSTR p)
#define COMMAND_GROUP_HELP_ONLY
char * strstr(char *String1, char *String2)
PDEBUG_MODULE FindModuleFromAddress(ULONG addr)
ULONG GLOBAL_SCREEN_WIDTH
ULONG ParamFlags[MAX_ARGS]
GLuint GLuint GLsizei count
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
LPSTR FindCommand(LPSTR p)
#define GLOBAL_DATA_SEGMENT
int PICE_sprintf(char *buf, const char *fmt,...)
USHORT PICE_strlen(const char *s)
BOOLEAN ConvertTokenToSpecialKeyword(LPSTR p, PULONG pValue)
#define PARAM_CAN_BE_DECIMAL
#define COMMAND_HAS_PARAMS
BOOLEAN ReplaceKeywordWithValue(LPSTR p, PULONG pValue, KEYWORDS *pKeyWords)
BOOLEAN InstallVirtualSWBreakpoint(LPSTR ModName, LPSTR FunctionName)
ULONG ulLastInvertedAddress