Module Name: src
Committed By: skrll
Date: Sun Jul 23 10:09:37 UTC 2023
Modified Files:
src/sys/arch/hppa/hppa: genassym.cf trap.S trap.c
src/sys/arch/hppa/include: proc.h types.h
Log Message:
PR/57261: hppa should be converted to __HAVE_SYSCALL_INTERN
Provide syscall_intern and use the md_syscall in syscall trap handling.
To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/hppa/hppa/genassym.cf
cvs rdiff -u -r1.74 -r1.75 src/sys/arch/hppa/hppa/trap.S
cvs rdiff -u -r1.121 -r1.122 src/sys/arch/hppa/hppa/trap.c
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/hppa/include/proc.h
cvs rdiff -u -r1.31 -r1.32 src/sys/arch/hppa/include/types.h
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/hppa/hppa/genassym.cf
diff -u src/sys/arch/hppa/hppa/genassym.cf:1.4 src/sys/arch/hppa/hppa/genassym.cf:1.5
--- src/sys/arch/hppa/hppa/genassym.cf:1.4 Sat Mar 14 16:55:17 2020
+++ src/sys/arch/hppa/hppa/genassym.cf Sun Jul 23 10:09:36 2023
@@ -1,4 +1,4 @@
-# $NetBSD: genassym.cf,v 1.4 2020/03/14 16:55:17 ad Exp $
+# $NetBSD: genassym.cf,v 1.5 2023/07/23 10:09:36 skrll Exp $
# $OpenBSD: genassym.cf,v 1.18 2001/09/20 18:31:14 mickey Exp $
@@ -174,7 +174,7 @@ member TF_CR30 tf_cr30
# proc fields and values
struct proc
member P_RASLIST p_raslist
-member P_MD p_md
+member P_MD_SYSCALL p_md.md_syscall
struct lwp
member L_PROC l_proc
Index: src/sys/arch/hppa/hppa/trap.S
diff -u src/sys/arch/hppa/hppa/trap.S:1.74 src/sys/arch/hppa/hppa/trap.S:1.75
--- src/sys/arch/hppa/hppa/trap.S:1.74 Mon Sep 6 21:56:03 2021
+++ src/sys/arch/hppa/hppa/trap.S Sun Jul 23 10:09:36 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.S,v 1.74 2021/09/06 21:56:03 andvar Exp $ */
+/* $NetBSD: trap.S,v 1.75 2023/07/23 10:09:36 skrll Exp $ */
/*-
* Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -373,13 +373,17 @@ syscall_entry:
ldil L%$global$,%dp
ldo R%$global$(%dp),%dp
- /* do a syscall */
- .import syscall,code
- CALL(syscall, %r1)
+ GET_CURLWP(%r3)
+ ldw L_PROC(%r3), %r1
+ ldw P_MD_SYSCALL(%r1), %r1
+
+ .call
+ blr %r0, %rp
+ bv,n %r0(%r1)
+ nop
/* load curlwp's trapframe pointer */
- GET_CURLWP(%r1)
- ldw L_MD(%r1), %t3
+ ldw L_MD(%r3), %t3
.exit
.procend
Index: src/sys/arch/hppa/hppa/trap.c
diff -u src/sys/arch/hppa/hppa/trap.c:1.121 src/sys/arch/hppa/hppa/trap.c:1.122
--- src/sys/arch/hppa/hppa/trap.c:1.121 Fri Sep 2 23:48:10 2022
+++ src/sys/arch/hppa/hppa/trap.c Sun Jul 23 10:09:36 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.121 2022/09/02 23:48:10 thorpej Exp $ */
+/* $NetBSD: trap.c,v 1.122 2023/07/23 10:09:36 skrll Exp $ */
/*-
* Copyright (c) 2001, 2002 The NetBSD Foundation, Inc.
@@ -58,7 +58,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.121 2022/09/02 23:48:10 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.122 2023/07/23 10:09:36 skrll Exp $");
/* #define INTRDEBUG */
/* #define TRAPDEBUG */
@@ -1250,6 +1250,12 @@ process_sstep(struct lwp *l, int sstep)
#endif
+void
+syscall_intern(struct proc *p)
+{
+ p->p_md.md_syscall = syscall;
+}
+
/*
* call actual syscall routine
* from the low-level syscall handler:
Index: src/sys/arch/hppa/include/proc.h
diff -u src/sys/arch/hppa/include/proc.h:1.14 src/sys/arch/hppa/include/proc.h:1.15
--- src/sys/arch/hppa/include/proc.h:1.14 Sun Jul 23 08:04:29 2023
+++ src/sys/arch/hppa/include/proc.h Sun Jul 23 10:09:36 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: proc.h,v 1.14 2023/07/23 08:04:29 skrll Exp $ */
+/* $NetBSD: proc.h,v 1.15 2023/07/23 10:09:36 skrll Exp $ */
/* $OpenBSD: proc.h,v 1.4 2009/12/29 13:11:40 jsing Exp $ */
@@ -49,6 +49,8 @@ struct mdlwp {
};
struct mdproc {
+ void (*md_syscall)(struct trapframe *, int *);
+
int md_flags; /* machine-dependent flags */
#define MDP_OLDSPACE __BIT(0)
};
Index: src/sys/arch/hppa/include/types.h
diff -u src/sys/arch/hppa/include/types.h:1.31 src/sys/arch/hppa/include/types.h:1.32
--- src/sys/arch/hppa/include/types.h:1.31 Thu Apr 1 04:35:46 2021
+++ src/sys/arch/hppa/include/types.h Sun Jul 23 10:09:36 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: types.h,v 1.31 2021/04/01 04:35:46 simonb Exp $ */
+/* $NetBSD: types.h,v 1.32 2023/07/23 10:09:36 skrll Exp $ */
/* $OpenBSD: types.h,v 1.6 2001/08/11 01:58:34 art Exp $ */
@@ -83,10 +83,10 @@ typedef int __register_t;
#define __SIMPLELOCK_LOCKED { { 0, 0, 0, 0} }
#define __SIMPLELOCK_UNLOCKED { { 1, 1, 1, 1} }
-
#define __MACHINE_STACK_GROWS_UP /* stack grows to higher addresses */
#define __HAVE_FUNCTION_DESCRIPTORS /* function ptrs may be descriptors */
#define __HAVE_RAS
+#define __HAVE_SYSCALL_INTERN
/*
* On hppa, declaring RAS labels as functions doesn't work, since the toolchain