Module Name: src
Committed By: thorpej
Date: Thu Dec 28 01:33:06 UTC 2023
Modified Files:
src/sys/arch/m68k/m68k: pmap_motorola.c
Log Message:
Be more careful with the types used for PTEs.
To generate a diff of this commit:
cvs rdiff -u -r1.82 -r1.83 src/sys/arch/m68k/m68k/pmap_motorola.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/m68k/m68k/pmap_motorola.c
diff -u src/sys/arch/m68k/m68k/pmap_motorola.c:1.82 src/sys/arch/m68k/m68k/pmap_motorola.c:1.83
--- src/sys/arch/m68k/m68k/pmap_motorola.c:1.82 Tue Dec 26 17:48:38 2023
+++ src/sys/arch/m68k/m68k/pmap_motorola.c Thu Dec 28 01:33:05 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap_motorola.c,v 1.82 2023/12/26 17:48:38 thorpej Exp $ */
+/* $NetBSD: pmap_motorola.c,v 1.83 2023/12/28 01:33:05 thorpej Exp $ */
/*-
* Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -119,7 +119,7 @@
#include "opt_m68k_arch.h"
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap_motorola.c,v 1.82 2023/12/26 17:48:38 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_motorola.c,v 1.83 2023/12/28 01:33:05 thorpej Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -308,7 +308,7 @@ pa_to_pvh(paddr_t pa)
void pmap_remove_mapping(pmap_t, vaddr_t, pt_entry_t *, int,
struct pv_entry **);
bool pmap_testbit(paddr_t, int);
-bool pmap_changebit(paddr_t, int, int);
+bool pmap_changebit(paddr_t, pt_entry_t, pt_entry_t);
int pmap_enter_ptpage(pmap_t, vaddr_t, bool);
void pmap_ptpage_addref(vaddr_t);
int pmap_ptpage_delref(vaddr_t);
@@ -1826,7 +1826,7 @@ pmap_zero_page(paddr_t phys)
void
pmap_copy_page(paddr_t src, paddr_t dst)
{
- int npte1, npte2;
+ pt_entry_t npte1, npte2;
PMAP_DPRINTF(PDB_FOLLOW, ("pmap_copy_page(%lx, %lx)\n", src, dst));
@@ -1890,7 +1890,7 @@ pmap_clear_modify(struct vm_page *pg)
PMAP_DPRINTF(PDB_FOLLOW, ("pmap_clear_modify(%p)\n", pg));
- return pmap_changebit(pa, 0, ~PG_M);
+ return pmap_changebit(pa, 0, (pt_entry_t)~PG_M);
}
/*
@@ -1905,7 +1905,7 @@ pmap_clear_reference(struct vm_page *pg)
PMAP_DPRINTF(PDB_FOLLOW, ("pmap_clear_reference(%p)\n", pg));
- return pmap_changebit(pa, 0, ~PG_U);
+ return pmap_changebit(pa, 0, (pt_entry_t)~PG_U);
}
/*
@@ -2193,7 +2193,7 @@ pmap_remove_mapping(pmap_t pmap, vaddr_t
PMAP_DPRINTF(PDB_CACHE,
("remove: clearing CI for pa %lx\n", pa));
pvh->pvh_attrs &= ~PVH_CI;
- pmap_changebit(pa, 0, ~PG_CI);
+ pmap_changebit(pa, 0, (pt_entry_t)~PG_CI);
#ifdef DEBUG
if ((pmapdebug & (PDB_CACHE|PDB_PVDUMP)) ==
(PDB_CACHE|PDB_PVDUMP))
@@ -2352,7 +2352,7 @@ pmap_testbit(paddr_t pa, int bit)
*/
/* static */
bool
-pmap_changebit(paddr_t pa, int set, int mask)
+pmap_changebit(paddr_t pa, pt_entry_t set, pt_entry_t mask)
{
struct pv_header *pvh;
struct pv_entry *pv;
@@ -2629,7 +2629,7 @@ pmap_enter_ptpage(pmap_t pmap, vaddr_t v
pmap == pmap_kernel() ? "Kernel" : "User",
va, ptpa, pte, *pte);
#endif
- if (pmap_changebit(ptpa, PG_CI, ~PG_CCB))
+ if (pmap_changebit(ptpa, PG_CI, (pt_entry_t)~PG_CCB))
DCIS();
}
#endif
@@ -2769,15 +2769,18 @@ _pmap_set_page_cacheable(pmap_t pmap, va
#if defined(M68020) || defined(M68030)
if (mmutype == MMU_68040) {
#endif
- if (pmap_changebit(pmap_pte_pa(pmap_pte(pmap, va)), PG_CCB, ~PG_CI))
+ if (pmap_changebit(pmap_pte_pa(pmap_pte(pmap, va)), PG_CCB,
+ (pt_entry_t)~PG_CI))
DCIS();
#if defined(M68020) || defined(M68030)
} else
- pmap_changebit(pmap_pte_pa(pmap_pte(pmap, va)), 0, ~PG_CI);
+ pmap_changebit(pmap_pte_pa(pmap_pte(pmap, va)), 0,
+ (pt_entry_t)~PG_CI);
#endif
#else
- pmap_changebit(pmap_pte_pa(pmap_pte(pmap, va)), 0, ~PG_CI);
+ pmap_changebit(pmap_pte_pa(pmap_pte(pmap, va)), 0,
+ (pt_entry_t)~PG_CI);
#endif
}
@@ -2792,7 +2795,8 @@ _pmap_set_page_cacheinhibit(pmap_t pmap,
#if defined(M68020) || defined(M68030)
if (mmutype == MMU_68040) {
#endif
- if (pmap_changebit(pmap_pte_pa(pmap_pte(pmap, va)), PG_CI, ~PG_CCB))
+ if (pmap_changebit(pmap_pte_pa(pmap_pte(pmap, va)), PG_CI,
+ (pt_entry_t)~PG_CCB))
DCIS();
#if defined(M68020) || defined(M68030)
} else