PERFORCE change 56850 for review

Marcel Moolenaar marcel at FreeBSD.org
Thu Jul 8 23:29:43 PDT 2004


http://perforce.freebsd.org/chv.cgi?CH=56850

Change 56850 by marcel at marcel_nfs on 2004/07/09 06:29:27

	The complication on ia64 when creating a PCB from a frame
	applies to remote debugging as well. So, check __spare
	here too and return the registers accordingly.

Affected files ...

.. //depot/projects/gdb/sys/ia64/ia64/gdb_machdep.c#10 edit

Differences ...

==== //depot/projects/gdb/sys/ia64/ia64/gdb_machdep.c#10 (text+ko) ====

@@ -80,6 +80,10 @@
 	case 158: return (&kdb_thrctx->pcb_preserved_fp.fr30);
 	case 159: return (&kdb_thrctx->pcb_preserved_fp.fr31);
 	/* Registers 320-327: branch registers. */
+	case 320:
+		if (kdb_thrctx->pcb_special.__spare == ~0UL)
+			return (&kdb_thrctx->pcb_special.rp);
+		break;
 	case 321: return (&kdb_thrctx->pcb_preserved.br1);
 	case 322: return (&kdb_thrctx->pcb_preserved.br2);
 	case 323: return (&kdb_thrctx->pcb_preserved.br3);
@@ -87,20 +91,37 @@
 	case 325: return (&kdb_thrctx->pcb_preserved.br5);
 	/* Registers 328-333: misc. other registers. */
 	case 330: return (&kdb_thrctx->pcb_special.pr);
-	case 331: return (&kdb_thrctx->pcb_special.rp);
-	case 333: return (&kdb_thrctx->pcb_special.pfs);
+	case 331:
+		if (kdb_thrctx->pcb_special.__spare == ~0UL) {
+			synth = kdb_thrctx->pcb_special.iip;
+			synth += (kdb_thrctx->pcb_special.psr >> 41) & 3;
+			return (&synth);
+		}
+		return (&kdb_thrctx->pcb_special.rp);
+	case 333:
+		if (kdb_thrctx->pcb_special.__spare == ~0UL)
+			return (&kdb_thrctx->pcb_special.cfm);
+		return (&kdb_thrctx->pcb_special.pfs);
 	/* Registers 334-461: application registers. */
 	case 350: return (&kdb_thrctx->pcb_special.rsc);
 	case 351: /* bsp */
 	case 352: /* bspstore. */
 		synth = kdb_thrctx->pcb_special.bspstore;
-		cfm = kdb_thrctx->pcb_special.pfs;
-		synth = ia64_bsp_adjust(synth,
-		    IA64_CFM_SOF(cfm) - IA64_CFM_SOL(cfm));
+		if (kdb_thrctx->pcb_special.__spare == ~0UL) {
+			synth += kdb_thrctx->pcb_special.ndirty;
+		} else {
+			cfm = kdb_thrctx->pcb_special.pfs;
+			synth = ia64_bsp_adjust(synth,
+			    IA64_CFM_SOF(cfm) - IA64_CFM_SOL(cfm));
+		}
 		return (&synth);
 	case 353: return (&kdb_thrctx->pcb_special.rnat);
 	case 370: return (&kdb_thrctx->pcb_special.unat);
 	case 374: return (&kdb_thrctx->pcb_special.fpsr);
+	case 398:
+		if (kdb_thrctx->pcb_special.__spare == ~0UL)
+			return (&kdb_thrctx->pcb_special.pfs);
+		break;
 	case 399: return (&kdb_thrctx->pcb_preserved.lc);
 	}
 	return (NULL);


More information about the p4-projects mailing list