void cgibin_reg_control(WEBBLK *webblk) { int i; REGS *regs; regs = sysblk.regs[sysblk.pcpu]; if (!regs) regs = &sysblk.dummyregs; html_header(webblk); hprintf(webblk->sock, "<H2>Control Registers</H2>\n"); hprintf(webblk->sock, "<PRE>\n"); if(regs->arch_mode != ARCH_900) for (i = 0; i < 16; i++) hprintf(webblk->sock, "CR%2.2d=%8.8X%s", i, regs->CR_L(i), ((i & 0x03) == 0x03) ? "\n" : "\t"); else for (i = 0; i < 16; i++) hprintf(webblk->sock, "CR%1.1X=%16.16" I64_FMT "X%s", i, (U64)regs->CR_G(i), ((i & 0x03) == 0x03) ? "\n" : " "); hprintf(webblk->sock, "</PRE>\n"); html_footer(webblk); }
void cgibin_debug_registers(WEBBLK *webblk) { int i, cpu = 0; int select_gr, select_cr, select_ar; char *value; REGS *regs; if((value = cgi_variable(webblk,"cpu"))) cpu = atoi(value); if((value = cgi_variable(webblk,"select_gr")) && *value == 'S') select_gr = 1; else select_gr = 0; if((value = cgi_variable(webblk,"select_cr")) && *value == 'S') select_cr = 1; else select_cr = 0; if((value = cgi_variable(webblk,"select_ar")) && *value == 'S') select_ar = 1; else select_ar = 0; /* Validate cpu number */ if (cpu < 0 || cpu >= MAX_CPU || !IS_CPU_ONLINE(cpu)) for (cpu = 0; cpu < MAX_CPU; cpu++) if(IS_CPU_ONLINE(cpu)) break; if(cpu < MAX_CPU) regs = sysblk.regs[cpu]; else regs = sysblk.regs[sysblk.pcpu]; if (!regs) regs = &sysblk.dummyregs; if((value = cgi_variable(webblk,"alter_gr")) && *value == 'A') { for(i = 0; i < 16; i++) { char regname[16]; sprintf(regname,"alter_gr%d",i); if((value = cgi_variable(webblk,regname))) { if(regs->arch_mode != ARCH_900) sscanf(value,"%"I32_FMT"x",&(regs->GR_L(i))); else sscanf(value,"%"I64_FMT"x",&(regs->GR_G(i))); } } } if((value = cgi_variable(webblk,"alter_cr")) && *value == 'A') { for(i = 0; i < 16; i++) { char regname[16]; sprintf(regname,"alter_cr%d",i); if((value = cgi_variable(webblk,regname))) { if(regs->arch_mode != ARCH_900) sscanf(value,"%"I32_FMT"x",&(regs->CR_L(i))); else sscanf(value,"%"I64_FMT"x",&(regs->CR_G(i))); } } } if((value = cgi_variable(webblk,"alter_ar")) && *value == 'A') { for(i = 0; i < 16; i++) { char regname[16]; sprintf(regname,"alter_ar%d",i); if((value = cgi_variable(webblk,regname))) sscanf(value,"%x",&(regs->AR(i))); } } html_header(webblk); hprintf(webblk->sock,"<form method=post>\n" "<select type=submit name=cpu>\n"); for(i = 0; i < MAX_CPU; i++) if(IS_CPU_ONLINE(i)) hprintf(webblk->sock,"<option value=%d%s>CPU%4.4X</option>\n", i,i==cpu?" selected":"",i); hprintf(webblk->sock,"</select>\n" "<input type=submit name=selcpu value=\"Select\">\n" "<input type=hidden name=cpu value=%d>\n" "<input type=hidden name=select_gr value=%c>\n" "<input type=hidden name=select_cr value=%c>\n" "<input type=hidden name=select_ar value=%c>\n", cpu, select_gr?'S':'H',select_cr?'S':'H',select_ar?'S':'H'); hprintf(webblk->sock,"Mode: %s\n",get_arch_mode_string(regs)); hprintf(webblk->sock,"</form>\n"); if(!select_gr) { hprintf(webblk->sock,"<form method=post>\n" "<input type=submit name=select_gr " "value=\"Select General Registers\">\n" "<input type=hidden name=cpu value=%d>\n" "<input type=hidden name=select_cr value=%c>\n" "<input type=hidden name=select_ar value=%c>\n" "</form>\n",cpu,select_cr?'S':'H',select_ar?'S':'H'); } else { hprintf(webblk->sock,"<form method=post>\n" "<input type=submit name=select_gr " "value=\"Hide General Registers\">\n" "<input type=hidden name=cpu value=%d>\n" "<input type=hidden name=select_cr value=%c>\n" "<input type=hidden name=select_ar value=%c>\n" "</form>\n",cpu,select_cr?'S':'H',select_ar?'S':'H'); hprintf(webblk->sock,"<form method=post>\n" "<table>\n"); for(i = 0; i < 16; i++) { if(regs->arch_mode != ARCH_900) hprintf(webblk->sock,"%s<td>GR%d</td><td><input type=text name=alter_gr%d size=8 " "value=%8.8X></td>\n%s", (i&3)==0?"<tr>\n":"",i,i,regs->GR_L(i),((i&3)==3)?"</tr>\n":""); else hprintf(webblk->sock,"%s<td>GR%d</td><td><input type=text name=alter_gr%d size=16 " "value=%16.16" I64_FMT "X></td>\n%s", (i&3)==0?"<tr>\n":"",i,i,(U64)regs->GR_G(i),((i&3)==3)?"</tr>\n":""); } hprintf(webblk->sock,"</table>\n" "<input type=submit name=refresh value=\"Refresh\">\n" "<input type=submit name=alter_gr value=\"Alter\">\n" "<input type=hidden name=cpu value=%d>\n" "<input type=hidden name=select_gr value=S>\n" "<input type=hidden name=select_cr value=%c>\n" "<input type=hidden name=select_ar value=%c>\n" "</form>\n",cpu,select_cr?'S':'H',select_ar?'S':'H'); } if(!select_cr) { hprintf(webblk->sock,"<form method=post>\n" "<input type=submit name=select_cr " "value=\"Select Control Registers\">\n" "<input type=hidden name=cpu value=%d>\n" "<input type=hidden name=select_gr value=%c>\n" "<input type=hidden name=select_ar value=%c>\n" "</form>\n",cpu,select_gr?'S':'H',select_ar?'S':'H'); } else { hprintf(webblk->sock,"<form method=post>\n" "<input type=submit name=select_cr " "value=\"Hide Control Registers\">\n" "<input type=hidden name=cpu value=%d>\n" "<input type=hidden name=select_gr value=%c>\n" "<input type=hidden name=select_ar value=%c>\n" "</form>\n",cpu,select_gr?'S':'H',select_ar?'S':'H'); hprintf(webblk->sock,"<form method=post>\n" "<table>\n"); for(i = 0; i < 16; i++) { if(regs->arch_mode != ARCH_900) hprintf(webblk->sock,"%s<td>CR%d</td><td><input type=text name=alter_cr%d size=8 " "value=%8.8X></td>\n%s", (i&3)==0?"<tr>\n":"",i,i,regs->CR_L(i),((i&3)==3)?"</tr>\n":""); else hprintf(webblk->sock,"%s<td>CR%d</td><td><input type=text name=alter_cr%d size=16 " "value=%16.16" I64_FMT "X></td>\n%s", (i&3)==0?"<tr>\n":"",i,i,(U64)regs->CR_G(i),((i&3)==3)?"</tr>\n":""); } hprintf(webblk->sock,"</table>\n" "<input type=submit name=refresh value=\"Refresh\">\n" "<input type=submit name=alter_cr value=\"Alter\">\n" "<input type=hidden name=cpu value=%d>\n" "<input type=hidden name=select_cr value=S>\n" "<input type=hidden name=select_gr value=%c>\n" "<input type=hidden name=select_ar value=%c>\n" "</form>\n",cpu,select_gr?'S':'H',select_ar?'S':'H'); } if(regs->arch_mode != ARCH_370) { if(!select_ar) { hprintf(webblk->sock,"<form method=post>\n" "<input type=submit name=select_ar " "value=\"Select Access Registers\">\n" "<input type=hidden name=cpu value=%d>\n" "<input type=hidden name=select_gr value=%c>\n" "<input type=hidden name=select_cr value=%c>\n" "</form>\n",cpu,select_gr?'S':'H',select_cr?'S':'H'); } else { hprintf(webblk->sock,"<form method=post>\n" "<input type=submit name=select_ar " "value=\"Hide Access Registers\">\n" "<input type=hidden name=cpu value=%d>\n" "<input type=hidden name=select_gr value=%c>\n" "<input type=hidden name=select_cr value=%c>\n" "</form>\n",cpu,select_gr?'S':'H',select_cr?'S':'H'); hprintf(webblk->sock,"<form method=post>\n" "<table>\n"); for(i = 0; i < 16; i++) { hprintf(webblk->sock,"%s<td>AR%d</td><td><input type=text name=alter_ar%d size=8 " "value=%8.8X></td>\n%s", (i&3)==0?"<tr>\n":"",i,i,regs->AR(i),((i&3)==3)?"</tr>\n":""); } hprintf(webblk->sock,"</table>\n" "<input type=submit name=refresh value=\"Refresh\">\n" "<input type=submit name=alter_ar value=\"Alter\">\n" "<input type=hidden name=cpu value=%d>\n" "<input type=hidden name=select_gr value=%c>\n" "<input type=hidden name=select_cr value=%c>\n" "<input type=hidden name=select_ar value=S>\n" "</form>\n",cpu,select_gr?'S':'H',select_cr?'S':'H'); } } html_footer(webblk); }