André Hentschel : dbghelp: Implement sparc_map_dwarf_register.

Alexandre Julliard julliard at winehq.org
Wed Apr 27 12:47:25 CDT 2011


Module: wine
Branch: master
Commit: dae65898e2a339a3be6e877b9bf7e458ae387837
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=dae65898e2a339a3be6e877b9bf7e458ae387837

Author: André Hentschel <nerv at dawncrow.de>
Date:   Tue Apr 26 19:00:45 2011 +0200

dbghelp: Implement sparc_map_dwarf_register.

---

 dlls/dbghelp/cpu_sparc.c |   13 +++++++++++--
 include/cvconst.h        |   13 +++++++++++++
 2 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/dlls/dbghelp/cpu_sparc.c b/dlls/dbghelp/cpu_sparc.c
index 6a788b9..3309b76 100644
--- a/dlls/dbghelp/cpu_sparc.c
+++ b/dlls/dbghelp/cpu_sparc.c
@@ -54,8 +54,17 @@ static BOOL sparc_stack_walk(struct cpu_stack_walk* csw, LPSTACKFRAME64 frame, C
 
 static unsigned sparc_map_dwarf_register(unsigned regno)
 {
-    FIXME("not done for Sparc\n");
-    return 0;
+    if (regno <= 7)
+        return CV_SPARC_G0 + regno;
+    else if (regno >= 8 && regno <= 15)
+        return CV_SPARC_O0 + regno - 8;
+    else if (regno >= 16 && regno <= 23)
+        return CV_SPARC_L0 + regno - 16;
+    else if (regno >= 24 && regno <= 31)
+        return CV_SPARC_I0 + regno - 24;
+
+    FIXME("Don't know how to map register %d\n", regno);
+    return CV_SPARC_NOREG;
 }
 
 static void* sparc_fetch_context_reg(CONTEXT* ctx, unsigned regno, unsigned* size)
diff --git a/include/cvconst.h b/include/cvconst.h
index d05c99b..00e64ae 100644
--- a/include/cvconst.h
+++ b/include/cvconst.h
@@ -530,6 +530,19 @@ enum CV_HREG_e
     CV_AMD64_R13        = 341,
     CV_AMD64_R14        = 342,
     CV_AMD64_R15        = 343,
+
+    /* Wine extension */
+    CV_SPARC_NOREG      = CV_REG_NONE,
+    CV_SPARC_G0         = 10, /* includes g0 to g7 */
+    CV_SPARC_O0         = 18, /* includes o0 to o7 */
+    CV_SPARC_L0         = 26, /* includes l0 to l7 */
+    CV_SPARC_I0         = 34, /* includes i0 to i7 */
+    CV_SPARC_PSR        = 42,
+    CV_SPARC_PC         = 43,
+    CV_SPARC_NPC        = 44,
+    CV_SPARC_Y          = 45,
+    CV_SPARC_WIM        = 46,
+    CV_SPARC_TBR        = 47,
 };
 
 typedef enum




More information about the wine-cvs mailing list