Module Name: src Committed By: ryo Date: Mon Sep 27 17:40:39 UTC 2021
Modified Files: src/sys/arch/aarch64/aarch64: linux_syscall.c syscall.c Log Message: linux syscall should not break x1 register To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/aarch64/aarch64/linux_syscall.c cvs rdiff -u -r1.9 -r1.10 src/sys/arch/aarch64/aarch64/syscall.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/aarch64/aarch64/linux_syscall.c diff -u src/sys/arch/aarch64/aarch64/linux_syscall.c:1.1 src/sys/arch/aarch64/aarch64/linux_syscall.c:1.2 --- src/sys/arch/aarch64/aarch64/linux_syscall.c:1.1 Thu Sep 23 06:56:26 2021 +++ src/sys/arch/aarch64/aarch64/linux_syscall.c Mon Sep 27 17:40:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_syscall.c,v 1.1 2021/09/23 06:56:26 ryo Exp $ */ +/* $NetBSD: linux_syscall.c,v 1.2 2021/09/27 17:40:39 ryo Exp $ */ /* * Copyright (c) 2021 Ryo Shimizu <r...@nerv.org> @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_syscall.c,v 1.1 2021/09/23 06:56:26 ryo Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_syscall.c,v 1.2 2021/09/27 17:40:39 ryo Exp $"); #if defined(_KERNEL_OPT) #include "opt_compat_linux.h" @@ -54,5 +54,7 @@ __KERNEL_RCSID(0, "$NetBSD: linux_syscal /* used when __HAVE_MINIMAL_EMUL is not defined */ #define SYSCALL_EMUL_ERRNO(x) native_to_linux_errno[x] +/* don't update x1 register with rval[1] */ +#define SYSCALL_NO_RVAL1 #include "syscall.c" Index: src/sys/arch/aarch64/aarch64/syscall.c diff -u src/sys/arch/aarch64/aarch64/syscall.c:1.9 src/sys/arch/aarch64/aarch64/syscall.c:1.10 --- src/sys/arch/aarch64/aarch64/syscall.c:1.9 Mon Sep 27 17:37:59 2021 +++ src/sys/arch/aarch64/aarch64/syscall.c Mon Sep 27 17:40:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: syscall.c,v 1.9 2021/09/27 17:37:59 ryo Exp $ */ +/* $NetBSD: syscall.c,v 1.10 2021/09/27 17:40:39 ryo Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -61,7 +61,7 @@ #define EMULNAME(x) (x) #define EMULNAMEU(x) (x) -__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.9 2021/09/27 17:37:59 ryo Exp $"); +__KERNEL_RCSID(0, "$NetBSD: syscall.c,v 1.10 2021/09/27 17:40:39 ryo Exp $"); void cpu_spawn_return(struct lwp *l) @@ -208,7 +208,9 @@ EMULNAME(syscall)(struct trapframe *tf) #endif } else { tf->tf_reg[0] = rval[0]; +#ifndef SYSCALL_NO_RVAL1 tf->tf_reg[1] = rval[1]; +#endif } tf->tf_spsr &= ~NZCV_C; } else {