works, still with prings
authorBill Joy <root@ucbvax.Berkeley.EDU>
Fri, 15 May 1981 17:05:05 +0000 (09:05 -0800)
committerBill Joy <root@ucbvax.Berkeley.EDU>
Fri, 15 May 1981 17:05:05 +0000 (09:05 -0800)
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

usr/src/old/adb/adb.vax/command.c
usr/src/old/adb/adb.vax/print.c
usr/src/old/adb/adb.vax/setup.c

index 5f11ef5..447a163 100644 (file)
@@ -6,7 +6,7 @@
  */
 
 #include "defs.h"
  */
 
 #include "defs.h"
-static char sccsid[] = "@(#)command.c 4.2 %G%";
+static char sccsid[] = "@(#)command.c 4.3 %G%";
 
 MSG            BADEQ;
 MSG            NOMATCH;
 
 MSG            BADEQ;
 MSG            NOMATCH;
@@ -178,12 +178,6 @@ CHAR               defcom;
                     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;
index 8cea665..25f89c9 100644 (file)
@@ -1,4 +1,4 @@
-static char sccsid[] = "@(#)print.c 4.3 %G%";
+static char sccsid[] = "@(#)print.c 4.4 %G%";
 /*
  *
  *     UNIX debugger
 /*
  *
  *     UNIX debugger
@@ -189,6 +189,18 @@ printtrace(modif)
                }
                break;
 
                }
                break;
 
+           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;}
@@ -244,7 +256,11 @@ printtrace(modif)
                        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
index 22a6e63..514d3e1 100644 (file)
@@ -1,4 +1,4 @@
-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
  */
@@ -96,9 +96,8 @@ setcor()
        if (fcor != -1 && INKERNEL(filhdr.a_entry)) {
                struct stat stb;
 
        if (fcor != -1 && INKERNEL(filhdr.a_entry)) {
                struct stat stb;
 
+               kcore = 1;
                fstat(fcor, &stb);
                fstat(fcor, &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))
@@ -109,10 +108,7 @@ setcor()
                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;
                getpcb();
                return;
        }
                getpcb();
                return;
        }
@@ -152,12 +148,12 @@ setcor()
 
 getpcb()
 {
 
 getpcb()
 {
-       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;
 }
 
 create(f)
 }
 
 create(f)