| @@ -1,14 +1,14 @@ | | | @@ -1,14 +1,14 @@ |
1 | /* $NetBSD: pmap.c,v 1.409 2020/04/19 08:50:54 skrll Exp $ */ | | 1 | /* $NetBSD: pmap.c,v 1.410 2020/04/19 19:36:49 kre Exp $ */ |
2 | | | 2 | |
3 | /* | | 3 | /* |
4 | * Copyright 2003 Wasabi Systems, Inc. | | 4 | * Copyright 2003 Wasabi Systems, Inc. |
5 | * All rights reserved. | | 5 | * All rights reserved. |
6 | * | | 6 | * |
7 | * Written by Steve C. Woodford for Wasabi Systems, Inc. | | 7 | * Written by Steve C. Woodford for Wasabi Systems, Inc. |
8 | * | | 8 | * |
9 | * Redistribution and use in source and binary forms, with or without | | 9 | * Redistribution and use in source and binary forms, with or without |
10 | * modification, are permitted provided that the following conditions | | 10 | * modification, are permitted provided that the following conditions |
11 | * are met: | | 11 | * are met: |
12 | * 1. Redistributions of source code must retain the above copyright | | 12 | * 1. Redistributions of source code must retain the above copyright |
13 | * notice, this list of conditions and the following disclaimer. | | 13 | * notice, this list of conditions and the following disclaimer. |
14 | * 2. Redistributions in binary form must reproduce the above copyright | | 14 | * 2. Redistributions in binary form must reproduce the above copyright |
| @@ -182,27 +182,27 @@ | | | @@ -182,27 +182,27 @@ |
182 | /* Include header files */ | | 182 | /* Include header files */ |
183 | | | 183 | |
184 | #include "opt_arm_debug.h" | | 184 | #include "opt_arm_debug.h" |
185 | #include "opt_cpuoptions.h" | | 185 | #include "opt_cpuoptions.h" |
186 | #include "opt_ddb.h" | | 186 | #include "opt_ddb.h" |
187 | #include "opt_lockdebug.h" | | 187 | #include "opt_lockdebug.h" |
188 | #include "opt_multiprocessor.h" | | 188 | #include "opt_multiprocessor.h" |
189 | | | 189 | |
190 | #ifdef MULTIPROCESSOR | | 190 | #ifdef MULTIPROCESSOR |
191 | #define _INTR_PRIVATE | | 191 | #define _INTR_PRIVATE |
192 | #endif | | 192 | #endif |
193 | | | 193 | |
194 | #include <sys/cdefs.h> | | 194 | #include <sys/cdefs.h> |
195 | __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.409 2020/04/19 08:50:54 skrll Exp $"); | | 195 | __KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.410 2020/04/19 19:36:49 kre Exp $"); |
196 | | | 196 | |
197 | #include <sys/atomic.h> | | 197 | #include <sys/atomic.h> |
198 | #include <sys/param.h> | | 198 | #include <sys/param.h> |
199 | #include <sys/types.h> | | 199 | #include <sys/types.h> |
200 | #include <sys/atomic.h> | | 200 | #include <sys/atomic.h> |
201 | #include <sys/bus.h> | | 201 | #include <sys/bus.h> |
202 | #include <sys/cpu.h> | | 202 | #include <sys/cpu.h> |
203 | #include <sys/intr.h> | | 203 | #include <sys/intr.h> |
204 | #include <sys/kernel.h> | | 204 | #include <sys/kernel.h> |
205 | #include <sys/kernhist.h> | | 205 | #include <sys/kernhist.h> |
206 | #include <sys/kmem.h> | | 206 | #include <sys/kmem.h> |
207 | #include <sys/pool.h> | | 207 | #include <sys/pool.h> |
208 | #include <sys/proc.h> | | 208 | #include <sys/proc.h> |
| @@ -2750,28 +2750,28 @@ pmap_flush_page(struct vm_page_md *md, p | | | @@ -2750,28 +2750,28 @@ pmap_flush_page(struct vm_page_md *md, p |
2750 | /* | | 2750 | /* |
2751 | * Mark that the page is no longer dirty. | | 2751 | * Mark that the page is no longer dirty. |
2752 | */ | | 2752 | */ |
2753 | if ((md->pvh_attrs & PVF_DMOD) == 0) | | 2753 | if ((md->pvh_attrs & PVF_DMOD) == 0) |
2754 | md->pvh_attrs &= ~PVF_DIRTY; | | 2754 | md->pvh_attrs &= ~PVF_DIRTY; |
2755 | PMAPCOUNT(vac_clean_one); | | 2755 | PMAPCOUNT(vac_clean_one); |
2756 | break; | | 2756 | break; |
2757 | default: | | 2757 | default: |
2758 | return; | | 2758 | return; |
2759 | } | | 2759 | } |
2760 | | | 2760 | |
2761 | KASSERT(!(md->pvh_attrs & PVF_NC)); | | 2761 | KASSERT(!(md->pvh_attrs & PVF_NC)); |
2762 | | | 2762 | |
2763 | UVMHIST_LOG(maphist, "md %#jx (attrs=%#jx)",(uintptr_t)md, | | 2763 | UVMHIST_LOG(maphist, "md %#jx (attrs=%#jx)", (uintptr_t)md, |
2764 | md->pvh_attrs); | | 2764 | md->pvh_attrs, 0, 0); |
2765 | | | 2765 | |
2766 | const size_t scache_line_size = arm_scache.dcache_line_size; | | 2766 | const size_t scache_line_size = arm_scache.dcache_line_size; |
2767 | | | 2767 | |
2768 | for (; va_offset <= end_va; va_offset += PAGE_SIZE) { | | 2768 | for (; va_offset <= end_va; va_offset += PAGE_SIZE) { |
2769 | pt_entry_t * const ptep = cpu_cdst_pte(va_offset); | | 2769 | pt_entry_t * const ptep = cpu_cdst_pte(va_offset); |
2770 | const vaddr_t dstp = cpu_cdstp(va_offset); | | 2770 | const vaddr_t dstp = cpu_cdstp(va_offset); |
2771 | const pt_entry_t opte = *ptep; | | 2771 | const pt_entry_t opte = *ptep; |
2772 | | | 2772 | |
2773 | if (flush == PMAP_FLUSH_SECONDARY | | 2773 | if (flush == PMAP_FLUSH_SECONDARY |
2774 | && va_offset == (md->pvh_attrs & arm_cache_prefer_mask)) | | 2774 | && va_offset == (md->pvh_attrs & arm_cache_prefer_mask)) |
2775 | continue; | | 2775 | continue; |
2776 | | | 2776 | |
2777 | pmap_tlb_flush_SE(pmap_kernel(), dstp, PVF_REF | PVF_EXEC); | | 2777 | pmap_tlb_flush_SE(pmap_kernel(), dstp, PVF_REF | PVF_EXEC); |