From dae65898e2a339a3be6e877b9bf7e458ae387837 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Hentschel?= Date: Tue, 26 Apr 2011 19:00:45 +0200 Subject: [PATCH] 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 6a788b92eee..3309b766ba0 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 d05c99b2a39..00e64ae89b9 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