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 <[email protected]>
@@ -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 {