Module Name:    src
Committed By:   skrll
Date:           Tue Sep 24 07:29:55 UTC 2024

Modified Files:
        src/sys/arch/powerpc/booke: booke_pmap.c

Log Message:
Partially fix PMAP_MINIMALTLB compilation. From andvar@


To generate a diff of this commit:
cvs rdiff -u -r1.38 -r1.39 src/sys/arch/powerpc/booke/booke_pmap.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/powerpc/booke/booke_pmap.c
diff -u src/sys/arch/powerpc/booke/booke_pmap.c:1.38 src/sys/arch/powerpc/booke/booke_pmap.c:1.39
--- src/sys/arch/powerpc/booke/booke_pmap.c:1.38	Mon Apr 17 06:46:53 2023
+++ src/sys/arch/powerpc/booke/booke_pmap.c	Tue Sep 24 07:29:55 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: booke_pmap.c,v 1.38 2023/04/17 06:46:53 skrll Exp $	*/
+/*	$NetBSD: booke_pmap.c,v 1.39 2024/09/24 07:29:55 skrll Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -37,7 +37,7 @@
 #define __PMAP_PRIVATE
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: booke_pmap.c,v 1.38 2023/04/17 06:46:53 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: booke_pmap.c,v 1.39 2024/09/24 07:29:55 skrll Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_multiprocessor.h"
@@ -125,12 +125,16 @@ pmap_md_direct_mapped_vaddr_to_paddr(vad
 
 #ifdef PMAP_MINIMALTLB
 static pt_entry_t *
-kvtopte(const pmap_segtab_t *stb, vaddr_t va)
+pmap_kvtopte(const pmap_segtab_t *stb, vaddr_t va)
 {
-	pt_entry_t * const ptep = stb->seg_tab[va >> SEGSHIFT];
-	if (ptep == NULL)
+	const vaddr_t segtab_mask = PMAP_SEGTABSIZE - 1;
+	const size_t idx = (va >> SEGSHIFT) & segtab_mask;
+	pmap_ptpage_t * const ppg = stb->seg_ppg[idx];
+	if (ppg == NULL)
 		return NULL;
-	return &ptep[(va & SEGOFSET) >> PAGE_SHIFT];
+	const size_t pte_idx = (va >> PGSHIFT) & (NPTEPG - 1);
+
+	return &ppg->ppg_ptes[pte_idx];
 }
 
 vaddr_t
@@ -138,7 +142,7 @@ pmap_kvptefill(vaddr_t sva, vaddr_t eva,
 {
 	pmap_segtab_t * const stb = &pmap_kern_segtab;
 	KASSERT(sva == trunc_page(sva));
-	pt_entry_t *ptep = kvtopte(stb, sva);
+	pt_entry_t *ptep = pmap_kvtopte(stb, sva);
 	for (; sva < eva; sva += NBPG) {
 		*ptep++ = pt_entry ? (sva | pt_entry) : 0;
 	}
@@ -154,7 +158,7 @@ vaddr_t
 pmap_bootstrap(vaddr_t startkernel, vaddr_t endkernel,
 	phys_ram_seg_t *avail, size_t cnt)
 {
-	pmap_segtab_t * const stp = &pmap_kern_segtab;
+	pmap_segtab_t * const stb = &pmap_kern_segtab;
 
 	KASSERT(endkernel == trunc_page(endkernel));
 
@@ -228,14 +232,14 @@ pmap_bootstrap(vaddr_t startkernel, vadd
 	 * access to be common.
 	 */
 
-	pmap_ptpage_t **ppg_p = &stp->seg_ppg[VM_MIN_KERNEL_ADDRESS >> SEGSHIFT];
+	pmap_ptpage_t **ppg_p = &stb->seg_ppg[VM_MIN_KERNEL_ADDRESS >> SEGSHIFT];
 	pmap_ptpage_t *ppg = (void *)kv_segtabs;
 	memset(ppg, 0, NBPG * kv_nsegtabs);
 	for (size_t i = 0; i < kv_nsegtabs; i++, ppg++) {
 		*ppg_p++ = ppg;
 	}
 
-#if PMAP_MINIMALTLB
+#ifdef PMAP_MINIMALTLB
 	const vsize_t dm_nsegtabs = (physmem + NPTEPG - 1) / NPTEPG;
 	const vaddr_t dm_segtabs = avail[0].start;
 	printf(" dm_nsegtabs=%#"PRIxVSIZE, dm_nsegtabs);
@@ -246,11 +250,11 @@ pmap_bootstrap(vaddr_t startkernel, vadd
 	avail[0].size -= NBPG * dm_nsegtabs;
 	endkernel += NBPG * dm_nsegtabs;
 
-	ptp = stp->seg_tab;
+	ppg_p = stb->seg_ppg;
 	ppg = (void *)dm_segtabs;
 	memset(ppg, 0, NBPG * dm_nsegtabs);
-	for (size_t i = 0; i < dm_nsegtabs; i++, ptp++, ppg++) {
-		*ptp = ppg;
+	for (size_t i = 0; i < dm_nsegtabs; i++, ppg_p++, ppg++) {
+		*ppg_p = ppg;
 	}
 
 	/*

Reply via email to