p4-projects@freebsd.org
[Top] [All Lists]

PERFORCE change 64659 for review

Subject: PERFORCE change 64659 for review
From: Peter Wemm
Date: Tue, 9 Nov 2004 01:50:01 GMT
http://perforce.freebsd.org/chv.cgi?CH=64659

Change 64659 by peter@peter_daintree on 2004/11/09 01:49:57

        converge towards i386.  I don't understand this stuff.

Affected files ...

.. //depot/projects/hammer/sys/amd64/amd64/gdb_machdep.c#4 edit

Differences ...

==== //depot/projects/hammer/sys/amd64/amd64/gdb_machdep.c#4 (text+ko) ====

@@ -36,6 +36,7 @@
 
 #include <machine/frame.h>
 #include <machine/gdb_machdep.h>
+#include <machine/pcb.h>
 #include <machine/psl.h>
 #include <machine/reg.h>
 #include <machine/trap.h>
@@ -47,40 +48,45 @@
 void *
 gdb_cpu_getreg(int regnum, size_t *regsz)
 {
-       struct trapframe *tf = kdb_frame;
 
        *regsz = gdb_cpu_regsz(regnum);
 
-       /* XXX this stuff is mighty suspicious */
        if (kdb_thread  == curthread) {
                switch (regnum) {
-               case 0: return (&tf->tf_rax);
-               case 1: return (&tf->tf_rcx);
-               case 2: return (&tf->tf_rdx);
+               case 0: return (&kdb_frame->tf_rax);
+               case 1: return (&kdb_frame->tf_rcx);
+               case 2: return (&kdb_frame->tf_rdx);
                }
        }
-       /* i386 uses kdb_thrctx, a pcb for these */
        switch (regnum) {
-       case 0:  return (&tf->tf_rax);
-       case 1:  return (&tf->tf_rbx);
-       case 2:  return (&tf->tf_rcx);
-       case 3:  return (&tf->tf_rdx);
-       case 4:  return (&tf->tf_rsi);
-       case 5:  return (&tf->tf_rdi);
-       case 6:  return (&tf->tf_rbp);
-       case 7:  return (&tf->tf_rsp);
-       case 8:  return (&tf->tf_r8);
-       case 9:  return (&tf->tf_r9);
-       case 10: return (&tf->tf_r10);
-       case 11: return (&tf->tf_r11);
-       case 12: return (&tf->tf_r12);
-       case 13: return (&tf->tf_r13);
-       case 14: return (&tf->tf_r14);
-       case 15: return (&tf->tf_r15);
-       case 16: return (&tf->tf_rip);
-       case 17: return (&tf->tf_rflags);
-       case 18: return (&tf->tf_cs);
-       case 19: return (&tf->tf_ss);
+#if 0
+       case 0:  return (&kdb_thrctx->pcb_rax);
+#endif
+       case 1:  return (&kdb_thrctx->pcb_rbx);
+#if 0
+       case 2:  return (&kdb_thrctx->pcb_rcx);
+       case 3:  return (&kdb_thrctx->pcb_rdx);
+       case 4:  return (&kdb_thrctx->pcb_rsi);
+       case 5:  return (&kdb_thrctx->pcb_rdi);
+#endif
+       case 6:  return (&kdb_thrctx->pcb_rbp);
+       case 7:  return (&kdb_thrctx->pcb_rsp);
+#if 0
+       case 8:  return (&kdb_thrctx->pcb_r8);
+       case 9:  return (&kdb_thrctx->pcb_r9);
+       case 10: return (&kdb_thrctx->pcb_r10);
+       case 11: return (&kdb_thrctx->pcb_r11);
+#endif
+       case 12: return (&kdb_thrctx->pcb_r12);
+       case 13: return (&kdb_thrctx->pcb_r13);
+       case 14: return (&kdb_thrctx->pcb_r14);
+       case 15: return (&kdb_thrctx->pcb_r15);
+       case 16: return (&kdb_thrctx->pcb_rip);
+       case 17: return (&kdb_thrctx->pcb_rflags);
+#if 0
+       case 18: return (&kdb_thrctx->pcb_cs);
+       case 19: return (&kdb_thrctx->pcb_ss);
+#endif
        }
        return (NULL);
 }
@@ -88,12 +94,12 @@
 void
 gdb_cpu_setreg(int regnum, register_t val)
 {
-       struct trapframe *tf = kdb_frame;
 
        val = __bswap64(val);
        switch (regnum) {
        case GDB_REG_PC:
+               kdb_thrctx->pcb_rip = val;
                if (kdb_thread  == curthread)
-                       tf->tf_rip = val;
+                       kdb_frame->tf_rip = val;
        }
 }
_______________________________________________
p4-projects@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/p4-projects
To unsubscribe, send any mail to "p4-projects-unsubscribe@xxxxxxxxxxx"

<Prev in Thread] Current Thread [Next in Thread>