Alexandre Julliard : server: Clarify naming of ARM64 floating-point registers.
Module: wine Branch: master Commit: 85f1fbdb7eb02069319dd67a4615871f5abb9bbc URL: https://source.winehq.org/git/wine.git/?a=commit;h=85f1fbdb7eb02069319dd67a4... Author: Alexandre Julliard <julliard(a)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(a)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 },
participants (1)
-
Alexandre Julliard