Module Name:src
Committed By: skrll
Date: Thu Nov 3 09:04:57 UTC 2022
Modified Files:
src/etc/etc.evbarm: Makefile.inc
src/sys/arch/aarch64/conf: files.aarch64
src/sys/arch/aarch64/include: cpu.h pmap.h types.h
src/sys/uvm/pmap: pmap.c pmap.h
Added Files:
src/sys/arch/aarch64/aarch64: pmap_machdep.c
src/sys/arch/aarch64/include: pmap_machdep.h
src/sys/arch/evbarm/conf: GENERIC64_PMAPMI
Log Message:
Provide MI PMAP support on AARCH64
To generate a diff of this commit:
cvs rdiff -u -r1.130 -r1.131 src/etc/etc.evbarm/Makefile.inc
cvs rdiff -u -r0 -r1.1 src/sys/arch/aarch64/aarch64/pmap_machdep.c
cvs rdiff -u -r1.40 -r1.41 src/sys/arch/aarch64/conf/files.aarch64
cvs rdiff -u -r1.47 -r1.48 src/sys/arch/aarch64/include/cpu.h
cvs rdiff -u -r1.56 -r1.57 src/sys/arch/aarch64/include/pmap.h
cvs rdiff -u -r0 -r1.1 src/sys/arch/aarch64/include/pmap_machdep.h
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/aarch64/include/types.h
cvs rdiff -u -r0 -r1.1 src/sys/arch/evbarm/conf/GENERIC64_PMAPMI
cvs rdiff -u -r1.73 -r1.74 src/sys/uvm/pmap/pmap.c
cvs rdiff -u -r1.24 -r1.25 src/sys/uvm/pmap/pmap.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/etc/etc.evbarm/Makefile.inc
diff -u src/etc/etc.evbarm/Makefile.inc:1.130 src/etc/etc.evbarm/Makefile.inc:1.131
--- src/etc/etc.evbarm/Makefile.inc:1.130 Sat Oct 29 08:52:47 2022
+++ src/etc/etc.evbarm/Makefile.inc Thu Nov 3 09:04:56 2022
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.inc,v 1.130 2022/10/29 08:52:47 jmcneill Exp $
+# $NetBSD: Makefile.inc,v 1.131 2022/11/03 09:04:56 skrll Exp $
#
# etc.evbarm/Makefile.inc -- evbarm-specific etc Makefile targets
#
@@ -31,7 +31,9 @@ KERNEL_SETS.armv6hf+= RPI2
KERNEL_SETS.armv7+= GENERIC
KERNEL_SETS.armv7hf+= GENERIC
+
KERNEL_SETS.arm64+= GENERIC64
+KERNEL_SETS.arm64+= GENERIC64_PMAPMI
.else
IMAGEENDIAN= le
# little endian boards
@@ -65,7 +67,9 @@ KERNEL_SETS.armv6hf+= RPI2
KERNEL_SETS.armv7+= GENERIC
KERNEL_SETS.armv7hf+= GENERIC
+
KERNEL_SETS.arm64+= GENERIC64
+KERNEL_SETS.arm64+= GENERIC64_PMAPMI
.endif
IMAGE.rel= ${RELEASEDIR}/${RELEASEMACHINEDIR}
Index: src/sys/arch/aarch64/conf/files.aarch64
diff -u src/sys/arch/aarch64/conf/files.aarch64:1.40 src/sys/arch/aarch64/conf/files.aarch64:1.41
--- src/sys/arch/aarch64/conf/files.aarch64:1.40 Fri Oct 28 07:16:34 2022
+++ src/sys/arch/aarch64/conf/files.aarch64 Thu Nov 3 09:04:56 2022
@@ -1,4 +1,4 @@
-# $NetBSD: files.aarch64,v 1.40 2022/10/28 07:16:34 skrll Exp $
+# $NetBSD: files.aarch64,v 1.41 2022/11/03 09:04:56 skrll Exp $
defflag opt_cpuoptions.h AARCH64_ALIGNMENT_CHECK
defflag opt_cpuoptions.h AARCH64_EL0_STACK_ALIGNMENT_CHECK
@@ -55,6 +55,10 @@ defflag opt_pmap.h PMAPCOUNTERS PMAP_ST
PMAP_NEED_ALLOC_POOLPAGE
defflag opt_pmapboot.h PMAPBOOT_DEBUG
+# MI PMAP flags
+#
+defflag opt_pmap.h PMAP_MI
+
# MI support
file dev/cons.c
@@ -113,11 +117,14 @@ file arch/aarch64/aarch64/vm_machdep.c
# pmap
file arch/aarch64/aarch64/aarch64_tlb.c
-file arch/aarch64/aarch64/pmap.c
+file arch/aarch64/aarch64/pmap.c !pmap_mi
file arch/aarch64/aarch64/pmapboot.c
file arch/aarch64/aarch64/pmap_page.S
-file uvm/pmap/pmap_tlb.c
+file arch/aarch64/aarch64/pmap_machdep.c pmap_mi
+file uvm/pmap/pmap.cpmap_mi
file uvm/pmap/pmap_pvt.c
+file uvm/pmap/pmap_segtab.c pmap_mi
+file uvm/pmap/pmap_tlb.c
# EFI runtime (machdep)
file arch/aarch64/aarch64/efi_machdep.c efi_runtime
Index: src/sys/arch/aarch64/include/cpu.h
diff -u src/sys/arch/aarch64/include/cpu.h:1.47 src/sys/arch/aarch64/include/cpu.h:1.48
--- src/sys/arch/aarch64/include/cpu.h:1.47 Sat Jun 25 13:24:34 2022
+++ src/sys/arch/aarch64/include/cpu.h Thu Nov 3 09:04:56 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu.h,v 1.47 2022/06/25 13:24:34 jmcneill Exp $ */
+/* $NetBSD: cpu.h,v 1.48 2022/11/03 09:04:56 skrll Exp $ */
/*-
* Copyright (c) 2014, 2020 The NetBSD Foundation, Inc.
@@ -39,6 +39,7 @@
#ifdef _KERNEL_OPT
#include "opt_gprof.h"
#include "opt_multiprocessor.h"
+#include "opt_pmap.h"
#endif
#include
@@ -137,6 +138,12 @@ struct cpu_info {
int ci_kfpu_spl;
+#if defined(PMAP_MI)
+struct pmap_tlb_info *ci_tlb_info;
+struct pmap *ci_pmap_lastuser;
+struct pmap *ci_pmap_cur;
+#endif
+
/* ASID of current pmap */
tlb_asid_t ci_pmap_asid_cur;
@@ -190,6 +197,7 @@ static __inline struct cpu_info *lwp_get
#define setsoftast(ci) (cpu_signotify((ci)->ci_onproc))
#undef curlwp
#define curlwp (aarch64_curlwp())
+#define curpcb ((struct pcb *)lwp_getpcb(curlwp))
void cpu_signotify(struct lwp *l);
void cpu_need_proftick(struct lwp *l);
Index: src/sys/arch/aarch64/include/pmap.h
diff -u src/sys/arch/aarch64/include/pmap.h:1.56 src/sys/arch/aarch64/include/pmap.h:1.57
--- src/sys/arch/aarch64/include/pmap.h:1.56 Sat Oct 29 08:29:28 2022
+++ src/sys/arch/aarch64/include/pmap.h Thu Nov 3