Date: Mon, 14 Jun 2004 00:59:02 GMT From: Marcel Moolenaar <marcel@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 54877 for review Message-ID: <200406140059.i5E0x2qP017659@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=54877 Change 54877 by marcel@marcel_nfs on 2004/06/14 00:58:39 Convert from trapframe to PCB. Followup to previous commits. Affected files ... .. //depot/projects/gdb/sys/ia64/ia64/gdb_machdep.c#8 edit Differences ... ==== //depot/projects/gdb/sys/ia64/ia64/gdb_machdep.c#8 (text+ko) ==== @@ -34,8 +34,9 @@ #include <sys/proc.h> #include <sys/signal.h> -#include <machine/frame.h> #include <machine/gdb_machdep.h> +#include <machine/md_var.h> +#include <machine/pcb.h> #include <machine/reg.h> #include <gdb/gdb.h> @@ -45,88 +46,65 @@ gdb_cpu_getreg(int regnum, size_t *regsz) { static uint64_t synth; - struct trapframe *tf = kdb_frame; + uint64_t cfm; *regsz = gdb_cpu_regsz(regnum); switch (regnum) { /* Registers 0-127: general registers. */ - case 1: return (&tf->tf_special.gp); - case 2: return (&tf->tf_scratch.gr2); - case 3: return (&tf->tf_scratch.gr3); - case 8: return (&tf->tf_scratch.gr8); - case 9: return (&tf->tf_scratch.gr9); - case 10: return (&tf->tf_scratch.gr10); - case 11: return (&tf->tf_scratch.gr11); - case 12: return (&tf->tf_special.sp); - case 13: return (&tf->tf_special.tp); - case 14: return (&tf->tf_scratch.gr14); - case 15: return (&tf->tf_scratch.gr15); - case 16: return (&tf->tf_scratch.gr16); - case 17: return (&tf->tf_scratch.gr17); - case 18: return (&tf->tf_scratch.gr18); - case 19: return (&tf->tf_scratch.gr19); - case 20: return (&tf->tf_scratch.gr20); - case 21: return (&tf->tf_scratch.gr21); - case 22: return (&tf->tf_scratch.gr22); - case 23: return (&tf->tf_scratch.gr23); - case 24: return (&tf->tf_scratch.gr24); - case 25: return (&tf->tf_scratch.gr25); - case 26: return (&tf->tf_scratch.gr26); - case 27: return (&tf->tf_scratch.gr27); - case 28: return (&tf->tf_scratch.gr28); - case 29: return (&tf->tf_scratch.gr29); - case 30: return (&tf->tf_scratch.gr30); - case 31: return (&tf->tf_scratch.gr31); + case 1: return (&kdb_thrctx->pcb_special.gp); + case 4: return (&kdb_thrctx->pcb_preserved.gr4); + case 5: return (&kdb_thrctx->pcb_preserved.gr5); + case 6: return (&kdb_thrctx->pcb_preserved.gr6); + case 7: return (&kdb_thrctx->pcb_preserved.gr7); + case 12: return (&kdb_thrctx->pcb_special.sp); + case 13: return (&kdb_thrctx->pcb_special.tp); /* Registers 128-255: floating-point registers. */ - case 134: return (&tf->tf_scratch_fp.fr6); - case 135: return (&tf->tf_scratch_fp.fr7); - case 136: return (&tf->tf_scratch_fp.fr8); - case 137: return (&tf->tf_scratch_fp.fr9); - case 138: return (&tf->tf_scratch_fp.fr10); - case 139: return (&tf->tf_scratch_fp.fr11); - case 140: return (&tf->tf_scratch_fp.fr12); - case 141: return (&tf->tf_scratch_fp.fr13); - case 142: return (&tf->tf_scratch_fp.fr14); - case 143: return (&tf->tf_scratch_fp.fr15); + case 130: return (&kdb_thrctx->pcb_preserved_fp.fr2); + case 131: return (&kdb_thrctx->pcb_preserved_fp.fr3); + case 132: return (&kdb_thrctx->pcb_preserved_fp.fr4); + case 133: return (&kdb_thrctx->pcb_preserved_fp.fr5); + case 144: return (&kdb_thrctx->pcb_preserved_fp.fr16); + case 145: return (&kdb_thrctx->pcb_preserved_fp.fr17); + case 146: return (&kdb_thrctx->pcb_preserved_fp.fr18); + case 147: return (&kdb_thrctx->pcb_preserved_fp.fr19); + case 148: return (&kdb_thrctx->pcb_preserved_fp.fr20); + case 149: return (&kdb_thrctx->pcb_preserved_fp.fr21); + case 150: return (&kdb_thrctx->pcb_preserved_fp.fr22); + case 151: return (&kdb_thrctx->pcb_preserved_fp.fr23); + case 152: return (&kdb_thrctx->pcb_preserved_fp.fr24); + case 153: return (&kdb_thrctx->pcb_preserved_fp.fr25); + case 154: return (&kdb_thrctx->pcb_preserved_fp.fr26); + case 155: return (&kdb_thrctx->pcb_preserved_fp.fr27); + case 156: return (&kdb_thrctx->pcb_preserved_fp.fr28); + case 157: return (&kdb_thrctx->pcb_preserved_fp.fr29); + 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: return (&tf->tf_special.rp); - case 326: return (&tf->tf_scratch.br6); - case 327: return (&tf->tf_scratch.br7); + case 321: return (&kdb_thrctx->pcb_preserved.br1); + case 322: return (&kdb_thrctx->pcb_preserved.br2); + case 323: return (&kdb_thrctx->pcb_preserved.br3); + case 324: return (&kdb_thrctx->pcb_preserved.br4); + case 325: return (&kdb_thrctx->pcb_preserved.br5); /* Registers 328-333: misc. other registers. */ - case 330: return (&tf->tf_special.pr); - case 331: return (&tf->tf_special.iip); - case 332: return (&tf->tf_special.psr); - case 333: return (&tf->tf_special.cfm); + case 330: return (&kdb_thrctx->pcb_special.pr); + case 331: return (&kdb_thrctx->pcb_special.rp); + case 333: return (&kdb_thrctx->pcb_special.pfs); /* Registers 334-461: application registers. */ - case 350: return (&tf->tf_special.rsc); - case 353: return (&tf->tf_special.rnat); - case 359: return (&tf->tf_scratch.csd); - case 360: return (&tf->tf_scratch.ssd); - case 366: return (&tf->tf_scratch.ccv); - case 370: return (&tf->tf_special.unat); - case 374: return (&tf->tf_special.fpsr); - case 398: return (&tf->tf_special.pfs); + 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)); + 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 399: return (&kdb_thrctx->pcb_preserved.lc); /* Synthesized registers. */ - case 351: /* bsp */ - /* - * If the trapframe belongs to a kernel entry from user - * space, setup bspstore to point to the base of the - * kernel stack. - */ - synth = (tf->tf_special.bspstore >= IA64_RR_BASE(5)) ? - tf->tf_special.bspstore : (kdb_thread->td_kstack + - (tf->tf_special.bspstore & 0x1ffUL)); - synth += tf->tf_special.ndirty; return (&synth); - case 352: /* bspstore. */ - /* - * If the trapframe belongs to a kernel entry from user - * space, setup bacpstore to point to the base of the - * kernel stack. - */ - synth = (tf->tf_special.bspstore >= IA64_RR_BASE(5)) ? - tf->tf_special.bspstore : (kdb_thread->td_kstack + - (tf->tf_special.bspstore & 0x1ffUL)); + synth = kdb_thrctx->pcb_special.bspstore; return (&synth); } return (NULL); @@ -144,7 +122,9 @@ int gdb_cpu_query(void) { +#if 0 uint64_t bspstore, *kstack; +#endif uintmax_t slot; if (!gdb_rx_equal("Part:dirty:read::")) @@ -155,9 +135,12 @@ return (-1); } + gdb_tx_err(EINVAL); + return (-1); + +#if 0 /* slot is unsigned. No need to test for negative values. */ if (slot >= (kdb_frame->tf_special.ndirty >> 3)) { - gdb_tx_err(EINVAL); return (-1); } @@ -173,4 +156,5 @@ gdb_tx_mem((void*)(kstack + slot), 8); gdb_tx_end(); return (1); +#endif }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200406140059.i5E0x2qP017659>