SCCS-vsn: old/adb/adb.vax/command.c 4.3
SCCS-vsn: old/adb/adb.vax/print.c 4.4
SCCS-vsn: old/adb/adb.vax/setup.c 4.4
-static char sccsid[] = "@(#)command.c 4.2 %G%";
+static char sccsid[] = "@(#)command.c 4.3 %G%";
ptrace(WUREGS,pid,regptr,* (ADDR *) (((ADDR)&u)+regptr));
ELIF (modifier=varchk(savc)) != -1
THEN var[modifier]=dot;
ptrace(WUREGS,pid,regptr,* (ADDR *) (((ADDR)&u)+regptr));
ELIF (modifier=varchk(savc)) != -1
THEN var[modifier]=dot;
- IF kcore && savc == 'p' THEN
- int pte = access(RD, dot, DSP, 0);
- printf("pte %X\n", pte);
- masterpcbb = (pte&PG_PFNUM)*512;
- getpcb();
- FI
ELSE error(BADVAR);
FI
break;
ELSE error(BADVAR);
FI
break;
-static char sccsid[] = "@(#)print.c 4.3 %G%";
+static char sccsid[] = "@(#)print.c 4.4 %G%";
+ case 'p':
+ IF kernel == 0 THEN
+ printf("not debugging kernel\n");
+ ELSE
+ IF adrflg THEN
+ int pte = access(RD, dot, DSP, 0);
+ masterpcbb = (pte&PG_PFNUM)*512;
+ FI
+ getpcb();
+ FI
+ break;
+
case 'd':
if (adrflg) {
if (adrval<2 || adrval>16) {printf("must have 2 <= radix <= 16"); break;}
case 'd':
if (adrflg) {
if (adrval<2 || adrval>16) {printf("must have 2 <= radix <= 16"); break;}
ELSE /* 'callg', can't tell where argp is */ argp=frame;
FI
callpc=get(frame+16,DSP);
ELSE /* 'callg', can't tell where argp is */ argp=frame;
FI
callpc=get(frame+16,DSP);
- ELSE argp= *(ADDR *)(((ADDR)&u)+AP);
+ ELIF kcore THEN
+ argp = pcb.pcb_ap;
+ frame = pcb.pcb_fp;
+ callpc = pcb.pcb_pc;
+ ELSE argp= *(ADDR *)(((ADDR)&u)+AP);
frame= *(ADDR *)(((ADDR)&u)+FP);
callpc= *(ADDR *)(((ADDR)&u)+PC);
FI
frame= *(ADDR *)(((ADDR)&u)+FP);
callpc= *(ADDR *)(((ADDR)&u)+PC);
FI
-static char sccsid[] = "@(#)setup.c 4.3 %G%";
+static char sccsid[] = "@(#)setup.c 4.4 %G%";
/*
* adb - routines to read a.out+core at startup
*/
/*
* adb - routines to read a.out+core at startup
*/
if (fcor != -1 && INKERNEL(filhdr.a_entry)) {
struct stat stb;
if (fcor != -1 && INKERNEL(filhdr.a_entry)) {
struct stat stb;
- if (stb.st_mode & S_IFREG)
- kcore = 1;
datmap.b1 = 0;
datmap.e1 = -1;
if (kernel == 0 && (stb.st_mode & S_IFREG))
datmap.b1 = 0;
datmap.e1 = -1;
if (kernel == 0 && (stb.st_mode & S_IFREG))
slr = cursym->n_value;
printf("sbr %X slr %X\n", sbr, slr);
lookup("_masterpcbb");
slr = cursym->n_value;
printf("sbr %X slr %X\n", sbr, slr);
lookup("_masterpcbb");
- printf("masterpcbb at %X\n", cursym->n_value);
physrw(fcor, cursym->n_value&0x7fffffff, &masterpcbb, 1);
physrw(fcor, cursym->n_value&0x7fffffff, &masterpcbb, 1);
- printf("masterpcbb value %X\n", masterpcbb);
- var[varchk('p')] = masterpcbb;
- printf("getpcb: masterpcbb is %X\n", masterpcbb);
lseek(fcor, masterpcbb&~0x80000000, 0);
read(fcor, &pcb, sizeof (struct pcb));
lseek(fcor, masterpcbb&~0x80000000, 0);
read(fcor, &pcb, sizeof (struct pcb));
+ pcb.pcb_p0lr &= ~AST_CLR;
printf("p0br %X p0lr %X p1br %X p1lr %X\n",
pcb.pcb_p0br, pcb.pcb_p0lr, pcb.pcb_p1br, pcb.pcb_p1lr);
printf("p0br %X p0lr %X p1br %X p1lr %X\n",
pcb.pcb_p0br, pcb.pcb_p0lr, pcb.pcb_p1br, pcb.pcb_p1lr);
- pcb.pcb_p0lr &= ~AST_CLR;