dbghelp: Implement sparc_get_addr.
authorAndré Hentschel <nerv@dawncrow.de>
Wed, 13 Apr 2011 18:43:37 +0000 (20:43 +0200)
committerAlexandre Julliard <julliard@winehq.org>
Thu, 14 Apr 2011 15:13:58 +0000 (17:13 +0200)
dlls/dbghelp/cpu_sparc.c

index 1de9436ac6b98e591f9b38e46f5ecd8c5e7d906c..6a788b92eeee434463f01e229d02df2560c119ad 100644 (file)
@@ -32,15 +32,18 @@ WINE_DEFAULT_DEBUG_CHANNEL(dbghelp);
 static unsigned sparc_get_addr(HANDLE hThread, const CONTEXT* ctx,
                              enum cpu_addr ca, ADDRESS64* addr)
 {
-   switch (ca)
+    addr->Mode    = AddrModeFlat;
+    addr->Segment = 0; /* don't need segment */
+    switch (ca)
     {
-    case cpu_addr_pc:
-    case cpu_addr_stack:
-    case cpu_addr_frame:
-    default:
-         FIXME("not done for Sparc\n");
+#ifdef __sparc__
+    case cpu_addr_pc:    addr->Offset = ctx->pc; return TRUE;
+    case cpu_addr_stack: addr->Offset = ctx->o6; return TRUE;
+    case cpu_addr_frame: addr->Offset = ctx->i6; return TRUE;
+#endif
+    default: addr->Mode = -1;
+        return FALSE;
     }
-    return FALSE;
 }
 
 static BOOL sparc_stack_walk(struct cpu_stack_walk* csw, LPSTACKFRAME64 frame, CONTEXT* context)