The restoring of registers in call_user_exception_dispatcher was broken in 75e616d52b452d37cc93f492d47eba641f9741c1.
Signed-off-by: Martin Storsjo martin@martin.st --- dlls/ntdll/unix/signal_arm64.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/ntdll/unix/signal_arm64.c b/dlls/ntdll/unix/signal_arm64.c index cfe1c75b59..ec361216d0 100644 --- a/dlls/ntdll/unix/signal_arm64.c +++ b/dlls/ntdll/unix/signal_arm64.c @@ -700,7 +700,7 @@ __ASM_GLOBAL_FUNC( call_user_exception_dispatcher, "mov x0, x19\n\t" "mov x1, x20\n\t" "mov x2, x21\n\t" - "ldp x19, x20, [x5, #64]\n\t" /* frame->x19,x20 */ + "ldp x19, x20, [x5, #80]\n\t" /* frame->x19,x20 */ "ldp x21, x22, [x5, #96]\n\t" /* frame->x21,x22 */ "ldp x23, x24, [x5, #112]\n\t" /* frame->x23,x24 */ "ldp x25, x26, [x5, #128]\n\t" /* frame->x25,x26 */
This seems to be a copypaste typo from 0b3db9dfa28.
Signed-off-by: Martin Storsjo martin@martin.st --- dlls/ntdll/unix/signal_arm64.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/ntdll/unix/signal_arm64.c b/dlls/ntdll/unix/signal_arm64.c index ec361216d0..51cc6cbcf2 100644 --- a/dlls/ntdll/unix/signal_arm64.c +++ b/dlls/ntdll/unix/signal_arm64.c @@ -777,7 +777,7 @@ static BOOL handle_syscall_fault( ucontext_t *context, EXCEPTION_RECORD *rec ) REGn_sig(28, context) = frame->x28; FP_sig(context) = frame->x29; LR_sig(context) = frame->ret_addr; - SP_sig(context) = (DWORD)&frame->thunk_x29; + SP_sig(context) = (ULONG64)&frame->thunk_x29; PC_sig(context) = frame->thunk_addr; arm64_thread_data()->syscall_frame = NULL; }