• Martin Storsjö's avatar
    ntdll: Zero-initialize the syscall_frame used for starting threads on ARM/ARM64. · 482b6a6d
    Martin Storsjö authored
    This fixes an inconsistency since
    fed7e7a7 (ntdll: Simulate a syscall
    return when starting a thread); in that commit, on i386 and
    x86_64, the syscall_frame used for starting the thread was
    zeroed with a memset, while it wasn't on arm and arm64.
    
    This had a noticable effect on float maths, where the
    uninitialized frame->restore_flags field could have the
    CONTEXT_FLOATING_POINT bit set. (call_init_thunk only ORs in
    CONTEXT_INTEGER into the restore_flags field, on all architectures).
    If that bit was set, it would restore uninitialized data into the
    fpscr register, possibly setting the FPU in a nondefault rounding
    mode.
    Signed-off-by: 's avatarMartin Storsjö <martin@martin.st>
    Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
    482b6a6d
signal_arm64.c 52.6 KB