Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F146669232
D22201.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D22201.diff
View Options
Index: head/sys/powerpc/include/gdb_machdep.h
===================================================================
--- head/sys/powerpc/include/gdb_machdep.h
+++ head/sys/powerpc/include/gdb_machdep.h
@@ -36,10 +36,43 @@
#define PPC_GDB_NREGS4 (70 + 1)
#define PPC_GDB_NREGS8 (1 + 32)
#define PPC_GDB_NREGS16 0
+
#else
+/*
+ * 0 - 32*GPR(4/8)
+ * 32 - 32*FPR(8)
+ * 64 - PC, PS (4/8)
+ * 66 - CR (4)
+ * 67 - LR, CTR (4/8)
+ * 69 - XER, FPSCR (4)
+ * 71 - 32*VR(16)
+ * 103 - VSCR, VRSAVE (4)
+ */
+
+#define PPC_REGNUM_R0 0
+#define PPC_REGNUM_R31 (PPC_REGNUM_R0 + 31)
+#define PPC_REGNUM_FR0 32
+#define PPC_REGNUM_FR31 (PPC_REGNUM_FR0 + 31)
+#define PPC_REGNUM_PC 64
+#define PPC_REGNUM_PS 65
+#define PPC_REGNUM_CR 66
+#define PPC_REGNUM_LR 67
+#define PPC_REGNUM_CTR 68
+#define PPC_REGNUM_XER 69
+#define PPC_REGNUM_FPSCR 70
+#define PPC_REGNUM_VR0 71
+#define PPC_REGNUM_VR31 (PPC_REGNUM_VR0 + 31)
+
#define PPC_GDB_NREGS0 0
+
+#ifdef __powerpc64__
+#define PPC_GDB_NREGS4 5
+#define PPC_GDB_NREGS8 (64 + 4)
+#else
#define PPC_GDB_NREGS4 (32 + 7 + 2)
#define PPC_GDB_NREGS8 32
+#endif
+
#define PPC_GDB_NREGS16 32
#endif
@@ -61,9 +94,15 @@
if (regnum == 71 || regnum >= 73)
return (8);
#else
- if (regnum >= 32 && regnum <= 63)
+#ifdef __powerpc64__
+ if ((regnum >= PPC_REGNUM_R0 && regnum <= PPC_REGNUM_PS) ||
+ regnum == PPC_REGNUM_LR || regnum == PPC_REGNUM_CTR)
return (8);
- if (regnum >= 71 && regnum <= 102)
+#else
+ if (regnum >= PPC_REGNUM_FR0 && regnum <= PPC_REGNUM_FR31)
+ return (8);
+#endif
+ if (regnum >= PPC_REGNUM_VR0 && regnum <= PPC_REGNUM_VR31)
return (16);
#endif
return (4);
Index: head/sys/powerpc/powerpc/gdb_machdep.c
===================================================================
--- head/sys/powerpc/powerpc/gdb_machdep.c
+++ head/sys/powerpc/powerpc/gdb_machdep.c
@@ -65,8 +65,10 @@
if (regnum == 1)
return (&kdb_thrctx->pcb_sp);
- if (regnum >= 14 && regnum <= 31)
- return (kdb_thrctx->pcb_context + (regnum - 14));
+ if (regnum == 2 && *regsz == 8)
+ return (&kdb_thrctx->pcb_toc);
+ if (regnum >= 12 && regnum <= 31)
+ return (kdb_thrctx->pcb_context + (regnum - 12));
if (regnum == 64)
return (&kdb_thrctx->pcb_lr);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Mar 5, 2:09 PM (8 h, 13 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29287746
Default Alt Text
D22201.diff (2 KB)
Attached To
Mode
D22201: Fix GDB machdep code for PPC/PPC64
Attached
Detach File
Event Timeline
Log In to Comment