Alexandre Julliard : server: Clarify naming of ARM64 floating-point registers.

Alexandre Julliard julliard at winehq.org
Mon Nov 4 16:40:24 CST 2019


Module: wine
Branch: master
Commit: 85f1fbdb7eb02069319dd67a4615871f5abb9bbc
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=85f1fbdb7eb02069319dd67a4615871f5abb9bbc

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Nov  4 09:45:04 2019 +0100

server: Clarify naming of ARM64 floating-point registers.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntdll/signal_arm64.c      | 12 ++++++++++--
 include/wine/server_protocol.h |  2 +-
 server/protocol.def            |  2 +-
 server/trace.c                 |  8 +++++---
 4 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/dlls/ntdll/signal_arm64.c b/dlls/ntdll/signal_arm64.c
index 17af494e29..96b20d8ff6 100644
--- a/dlls/ntdll/signal_arm64.c
+++ b/dlls/ntdll/signal_arm64.c
@@ -369,7 +369,11 @@ NTSTATUS context_to_server( context_t *to, const CONTEXT *from )
     if (flags & CONTEXT_FLOATING_POINT)
     {
         to->flags |= SERVER_CTX_FLOATING_POINT;
-        for (i = 0; i < 64; i++) to->fp.arm64_regs.d[i] = from->V[i / 2].D[i % 2];
+        for (i = 0; i < 32; i++)
+        {
+            to->fp.arm64_regs.q[i].low = from->V[i].s.Low;
+            to->fp.arm64_regs.q[i].high = from->V[i].s.High;
+        }
         to->fp.arm64_regs.fpcr = from->Fpcr;
         to->fp.arm64_regs.fpsr = from->Fpsr;
     }
@@ -414,7 +418,11 @@ NTSTATUS context_from_server( CONTEXT *to, const context_t *from )
     if (from->flags & SERVER_CTX_FLOATING_POINT)
     {
         to->ContextFlags |= CONTEXT_FLOATING_POINT;
-        for (i = 0; i < 64; i++) to->V[i / 2].D[i % 2] = from->fp.arm64_regs.d[i];
+        for (i = 0; i < 32; i++)
+        {
+            to->V[i].s.Low = from->fp.arm64_regs.q[i].low;
+            to->V[i].s.High = from->fp.arm64_regs.q[i].high;
+        }
         to->Fpcr = from->fp.arm64_regs.fpcr;
         to->Fpsr = from->fp.arm64_regs.fpsr;
     }
diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h
index 4f35047241..83ce56ca25 100644
--- a/include/wine/server_protocol.h
+++ b/include/wine/server_protocol.h
@@ -156,7 +156,7 @@ typedef struct
         struct { struct { unsigned __int64 low, high; } fpregs[32]; } x86_64_regs;
         struct { double fpr[32], fpscr; } powerpc_regs;
         struct { unsigned __int64 d[32]; unsigned int fpscr; } arm_regs;
-        struct { unsigned __int64 d[64]; unsigned int fpcr, fpsr; } arm64_regs;
+        struct { struct { unsigned __int64 low, high; } q[32]; unsigned int fpcr, fpsr; } arm64_regs;
     } fp;
     union
     {
diff --git a/server/protocol.def b/server/protocol.def
index 6af0ae0cff..984f2a10fd 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -172,7 +172,7 @@ typedef struct
         struct { struct { unsigned __int64 low, high; } fpregs[32]; } x86_64_regs;
         struct { double fpr[32], fpscr; } powerpc_regs;
         struct { unsigned __int64 d[32]; unsigned int fpscr; } arm_regs;
-        struct { unsigned __int64 d[64]; unsigned int fpcr, fpsr; } arm64_regs;
+        struct { struct { unsigned __int64 low, high; } q[32]; unsigned int fpcr, fpsr; } arm64_regs;
     } fp;  /* selected by SERVER_CTX_FLOATING_POINT */
     union
     {
diff --git a/server/trace.c b/server/trace.c
index 615542cff5..0acfc92b27 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -727,10 +727,11 @@ static void dump_varargs_context( const char *prefix, data_size_t size )
         }
         if (ctx.flags & SERVER_CTX_FLOATING_POINT)
         {
-            for (i = 0; i < 64; i++)
+            for (i = 0; i < 32; i++)
             {
-                fprintf( stderr, ",d%u=", i );
-                dump_uint64( "", &ctx.fp.arm64_regs.d[i] );
+                fprintf( stderr, ",q%u=", i );
+                dump_uint64( "", &ctx.fp.arm64_regs.q[i].high );
+                dump_uint64( "", &ctx.fp.arm64_regs.q[i].low );
             }
             fprintf( stderr, ",fpcr=%08x,fpsr=%08x", ctx.fp.arm64_regs.fpcr, ctx.fp.arm64_regs.fpsr );
         }
@@ -5602,6 +5603,7 @@ static const struct
     { "PIPE_CLOSING",                STATUS_PIPE_CLOSING },
     { "PIPE_CONNECTED",              STATUS_PIPE_CONNECTED },
     { "PIPE_DISCONNECTED",           STATUS_PIPE_DISCONNECTED },
+    { "PIPE_EMPTY",                  STATUS_PIPE_EMPTY },
     { "PIPE_LISTENING",              STATUS_PIPE_LISTENING },
     { "PIPE_NOT_AVAILABLE",          STATUS_PIPE_NOT_AVAILABLE },
     { "PRIVILEGE_NOT_HELD",          STATUS_PRIVILEGE_NOT_HELD },




More information about the wine-cvs mailing list