Module Name: src
Committed By: skrll
Date: Thu Apr 20 08:28:06 UTC 2023
Modified Files:
src/sys/arch/aarch64/aarch64: pmap.c pmap_machdep.c
src/sys/arch/aarch64/conf: files.aarch64
src/sys/arch/aarch64/include: cpufunc.h pmap.h pmap_machdep.h
src/sys/arch/arm/arm32: pmap.c
src/sys/arch/arm/conf: files.arm
src/sys/arch/arm/include/arm32: pmap.h
src/sys/arch/cats/cats: cats_machdep.c
src/sys/arch/epoc32/epoc32: machdep.c
src/sys/arch/evbarm/adi_brh: brh_machdep.c
src/sys/arch/evbarm/armadaxp: armadaxp_machdep.c
src/sys/arch/evbarm/g42xxeb: g42xxeb_machdep.c
src/sys/arch/evbarm/gemini: gemini_machdep.c
src/sys/arch/evbarm/gumstix: gumstix_machdep.c
src/sys/arch/evbarm/hdl_g: hdlg_machdep.c
src/sys/arch/evbarm/imx23_olinuxino: imx23_olinuxino_machdep.c
src/sys/arch/evbarm/imx31: imx31lk_machdep.c
src/sys/arch/evbarm/integrator: integrator_machdep.c
src/sys/arch/evbarm/iq80310: iq80310_machdep.c
src/sys/arch/evbarm/iq80321: iq80321_machdep.c
src/sys/arch/evbarm/ixm1200: ixm1200_machdep.c
src/sys/arch/evbarm/kobo: kobo_machdep.c
src/sys/arch/evbarm/lubbock: lubbock_machdep.c
src/sys/arch/evbarm/marvell: marvell_machdep.c
src/sys/arch/evbarm/mini2440: mini2440_machdep.c
src/sys/arch/evbarm/netwalker: netwalker_machdep.c
src/sys/arch/evbarm/nslu2: nslu2_machdep.c
src/sys/arch/evbarm/smdk2xx0: smdk2410_machdep.c smdk2800_machdep.c
src/sys/arch/evbarm/tsarm: tsarm_machdep.c
src/sys/arch/hpcarm/hpcarm: netbookpro_machdep.c pxa2x0_hpc_machdep.c
sa11x0_hpc_machdep.c
src/sys/arch/iyonix/iyonix: iyonix_machdep.c
src/sys/arch/zaurus/zaurus: machdep.c
Added Files:
src/sys/uvm/pmap: pmap_devmap.c pmap_devmap.h
Log Message:
Provide a shared pmap_devmap implementation and convert all pmap_devmap
arrays to use DEVMAP_ENTRY{,_END}
To generate a diff of this commit:
cvs rdiff -u -r1.148 -r1.149 src/sys/arch/aarch64/aarch64/pmap.c
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/aarch64/aarch64/pmap_machdep.c
cvs rdiff -u -r1.42 -r1.43 src/sys/arch/aarch64/conf/files.aarch64
cvs rdiff -u -r1.25 -r1.26 src/sys/arch/aarch64/include/cpufunc.h
cvs rdiff -u -r1.57 -r1.58 src/sys/arch/aarch64/include/pmap.h
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/aarch64/include/pmap_machdep.h
cvs rdiff -u -r1.438 -r1.439 src/sys/arch/arm/arm32/pmap.c
cvs rdiff -u -r1.167 -r1.168 src/sys/arch/arm/conf/files.arm
cvs rdiff -u -r1.173 -r1.174 src/sys/arch/arm/include/arm32/pmap.h
cvs rdiff -u -r1.93 -r1.94 src/sys/arch/cats/cats/cats_machdep.c
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/epoc32/epoc32/machdep.c
cvs rdiff -u -r1.51 -r1.52 src/sys/arch/evbarm/adi_brh/brh_machdep.c
cvs rdiff -u -r1.17 -r1.18 src/sys/arch/evbarm/armadaxp/armadaxp_machdep.c
cvs rdiff -u -r1.39 -r1.40 src/sys/arch/evbarm/g42xxeb/g42xxeb_machdep.c
cvs rdiff -u -r1.33 -r1.34 src/sys/arch/evbarm/gemini/gemini_machdep.c
cvs rdiff -u -r1.72 -r1.73 src/sys/arch/evbarm/gumstix/gumstix_machdep.c
cvs rdiff -u -r1.33 -r1.34 src/sys/arch/evbarm/hdl_g/hdlg_machdep.c
cvs rdiff -u -r1.13 -r1.14 \
src/sys/arch/evbarm/imx23_olinuxino/imx23_olinuxino_machdep.c
cvs rdiff -u -r1.29 -r1.30 src/sys/arch/evbarm/imx31/imx31lk_machdep.c
cvs rdiff -u -r1.80 -r1.81 \
src/sys/arch/evbarm/integrator/integrator_machdep.c
cvs rdiff -u -r1.94 -r1.95 src/sys/arch/evbarm/iq80310/iq80310_machdep.c
cvs rdiff -u -r1.64 -r1.65 src/sys/arch/evbarm/iq80321/iq80321_machdep.c
cvs rdiff -u -r1.66 -r1.67 src/sys/arch/evbarm/ixm1200/ixm1200_machdep.c
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/evbarm/kobo/kobo_machdep.c
cvs rdiff -u -r1.42 -r1.43 src/sys/arch/evbarm/lubbock/lubbock_machdep.c
cvs rdiff -u -r1.37 -r1.38 src/sys/arch/evbarm/marvell/marvell_machdep.c
cvs rdiff -u -r1.19 -r1.20 src/sys/arch/evbarm/mini2440/mini2440_machdep.c
cvs rdiff -u -r1.26 -r1.27 src/sys/arch/evbarm/netwalker/netwalker_machdep.c
cvs rdiff -u -r1.35 -r1.36 src/sys/arch/evbarm/nslu2/nslu2_machdep.c
cvs rdiff -u -r1.45 -r1.46 src/sys/arch/evbarm/smdk2xx0/smdk2410_machdep.c
cvs rdiff -u -r1.50 -r1.51 src/sys/arch/evbarm/smdk2xx0/smdk2800_machdep.c
cvs rdiff -u -r1.34 -r1.35 src/sys/arch/evbarm/tsarm/tsarm_machdep.c
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/hpcarm/hpcarm/netbookpro_machdep.c
cvs rdiff -u -r1.30 -r1.31 src/sys/arch/hpcarm/hpcarm/pxa2x0_hpc_machdep.c
cvs rdiff -u -r1.21 -r1.22 src/sys/arch/hpcarm/hpcarm/sa11x0_hpc_machdep.c
cvs rdiff -u -r1.31 -r1.32 src/sys/arch/iyonix/iyonix/iyonix_machdep.c
cvs rdiff -u -r1.50 -r1.51 src/sys/arch/zaurus/zaurus/machdep.c
cvs rdiff -u -r0 -r1.1 src/sys/uvm/pmap/pmap_devmap.c \
src/sys/uvm/pmap/pmap_devmap.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/aarch64/aarch64/pmap.c
diff -u src/sys/arch/aarch64/aarch64/pmap.c:1.148 src/sys/arch/aarch64/aarch64/pmap.c:1.149
--- src/sys/arch/aarch64/aarch64/pmap.c:1.148 Sun Apr 16 14:01:51 2023
+++ src/sys/arch/aarch64/aarch64/pmap.c Thu Apr 20 08:28:02 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.c,v 1.148 2023/04/16 14:01:51 skrll Exp $ */
+/* $NetBSD: pmap.c,v 1.149 2023/04/20 08:28:02 skrll Exp $ */
/*
* Copyright (c) 2017 Ryo Shimizu <[email protected]>
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.148 2023/04/16 14:01:51 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.149 2023/04/20 08:28:02 skrll Exp $");
#include "opt_arm_debug.h"
#include "opt_cpuoptions.h"
@@ -215,7 +215,6 @@ static vaddr_t pmap_maxkvaddr;
vaddr_t virtual_avail, virtual_end;
vaddr_t virtual_devmap_addr;
-bool pmap_devmap_bootstrap_done = false;
static struct pool_cache _pmap_cache;
static struct pool_cache _pmap_pv_pool;
@@ -336,10 +335,8 @@ phys_to_pp(paddr_t pa)
#endif /* DIAGNOSTIC */
-static const struct pmap_devmap *pmap_devmap_table;
-
-static vsize_t
-pmap_map_chunk(vaddr_t va, paddr_t pa, vsize_t size,
+vsize_t
+pmap_kenter_range(vaddr_t va, paddr_t pa, vsize_t size,
vm_prot_t prot, u_int flags)
{
pt_entry_t attr;
@@ -352,114 +349,6 @@ pmap_map_chunk(vaddr_t va, paddr_t pa, v
return resid;
}
-void
-pmap_devmap_register(const struct pmap_devmap *table)
-{
- pmap_devmap_table = table;
-}
-
-void
-pmap_devmap_bootstrap(vaddr_t l0pt, const struct pmap_devmap *table)
-{
- bool done = false;
- vaddr_t va;
- int i;
-
- pmap_devmap_register(table);
-
- VPRINTF("%s:\n", __func__);
- for (i = 0; table[i].pd_size != 0; i++) {
- VPRINTF(" devmap: pa %08lx-%08lx = va %016lx\n",
- table[i].pd_pa,
- table[i].pd_pa + table[i].pd_size - 1,
- table[i].pd_va);
- va = table[i].pd_va;
-
- KASSERT((VM_KERNEL_IO_BASE <= va) &&
- (va < (VM_KERNEL_IO_BASE + VM_KERNEL_IO_SIZE)));
-
- /* update and check virtual_devmap_addr */
- if (virtual_devmap_addr == 0 || virtual_devmap_addr > va) {
- virtual_devmap_addr = va;
- }
-
- pmap_map_chunk(
- table[i].pd_va,
- table[i].pd_pa,
- table[i].pd_size,
- table[i].pd_prot,
- table[i].pd_flags);
- done = true;
- }
- if (done)
- pmap_devmap_bootstrap_done = true;
-}
-
-const struct pmap_devmap *
-pmap_devmap_find_va(vaddr_t va, vsize_t size)
-{
- paddr_t endva;
- int i;
-
- if (pmap_devmap_table == NULL)
- return NULL;
-
- endva = va + size;
- for (i = 0; pmap_devmap_table[i].pd_size != 0; i++) {
- if ((va >= pmap_devmap_table[i].pd_va) &&
- (endva <= pmap_devmap_table[i].pd_va +
- pmap_devmap_table[i].pd_size))
- return &pmap_devmap_table[i];
- }
- return NULL;
-}
-
-const struct pmap_devmap *
-pmap_devmap_find_pa(paddr_t pa, psize_t size)
-{
- paddr_t endpa;
- int i;
-
- if (pmap_devmap_table == NULL)
- return NULL;
-
- endpa = pa + size;
- for (i = 0; pmap_devmap_table[i].pd_size != 0; i++) {
- if (pa >= pmap_devmap_table[i].pd_pa &&
- (endpa <= pmap_devmap_table[i].pd_pa +
- pmap_devmap_table[i].pd_size))
- return (&pmap_devmap_table[i]);
- }
- return NULL;
-}
-
-vaddr_t
-pmap_devmap_phystov(paddr_t pa)
-{
- const struct pmap_devmap *table;
- paddr_t offset;
-
- table = pmap_devmap_find_pa(pa, 0);
- if (table == NULL)
- return 0;
-
- offset = pa - table->pd_pa;
- return table->pd_va + offset;
-}
-
-vaddr_t
-pmap_devmap_vtophys(paddr_t va)
-{
- const struct pmap_devmap *table;
- vaddr_t offset;
-
- table = pmap_devmap_find_va(va, 0);
- if (table == NULL)
- return 0;
-
- offset = va - table->pd_va;
- return table->pd_pa + offset;
-}
void
pmap_bootstrap(vaddr_t vstart, vaddr_t vend)
Index: src/sys/arch/aarch64/aarch64/pmap_machdep.c
diff -u src/sys/arch/aarch64/aarch64/pmap_machdep.c:1.5 src/sys/arch/aarch64/aarch64/pmap_machdep.c:1.6
--- src/sys/arch/aarch64/aarch64/pmap_machdep.c:1.5 Sun Apr 16 14:01:51 2023
+++ src/sys/arch/aarch64/aarch64/pmap_machdep.c Thu Apr 20 08:28:02 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap_machdep.c,v 1.5 2023/04/16 14:01:51 skrll Exp $ */
+/* $NetBSD: pmap_machdep.c,v 1.6 2023/04/20 08:28:02 skrll Exp $ */
/*-
* Copyright (c) 2022 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
#define __PMAP_PRIVATE
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap_machdep.c,v 1.5 2023/04/16 14:01:51 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap_machdep.c,v 1.6 2023/04/20 08:28:02 skrll Exp $");
#include <sys/param.h>
#include <sys/types.h>
@@ -69,8 +69,6 @@ uint64_t pmap_attr_gp = 0;
vaddr_t virtual_avail;
vaddr_t virtual_end;
-bool pmap_devmap_bootstrap_done = false;
-
paddr_t
vtophys(vaddr_t va)
{
@@ -647,9 +645,6 @@ pmap_l0table(struct pmap *pm)
}
-static const struct pmap_devmap *pmap_devmap_table;
-vaddr_t virtual_devmap_addr;
-
#define L1_BLK_MAPPABLE_P(va, pa, size) \
((((va) | (pa)) & L1_OFFSET) == 0 && (size) >= L1_SIZE)
@@ -657,8 +652,8 @@ vaddr_t virtual_devmap_addr;
((((va) | (pa)) & L2_OFFSET) == 0 && (size) >= L2_SIZE)
-static vsize_t
-pmap_map_chunk(vaddr_t va, paddr_t pa, vsize_t size,
+vsize_t
+pmap_kenter_range(vaddr_t va, paddr_t pa, vsize_t size,
vm_prot_t prot, u_int flags)
{
pt_entry_t attr;
@@ -694,88 +689,6 @@ pmap_map_chunk(vaddr_t va, paddr_t pa, v
return mapped;
}
-
-void
-pmap_devmap_register(const struct pmap_devmap *table)
-{
- pmap_devmap_table = table;
-}
-
-
-void
-pmap_devmap_bootstrap(vaddr_t l0pt, const struct pmap_devmap *table)
-{
- vaddr_t va;
- int i;
-
- pmap_devmap_register(table);
-
- VPRINTF("%s:\n", __func__);
- for (i = 0; table[i].pd_size != 0; i++) {
- VPRINTF(" devmap: pa %08lx-%08lx = va %016lx\n",
- table[i].pd_pa,
- table[i].pd_pa + table[i].pd_size - 1,
- table[i].pd_va);
- va = table[i].pd_va;
-
- KASSERT((VM_KERNEL_IO_BASE <= va) &&
- (va < (VM_KERNEL_IO_BASE + VM_KERNEL_IO_SIZE)));
-
- /* update and check virtual_devmap_addr */
- if ((virtual_devmap_addr == 0) ||
- (virtual_devmap_addr > va)) {
- virtual_devmap_addr = va;
- }
-
- pmap_map_chunk(
- table[i].pd_va,
- table[i].pd_pa,
- table[i].pd_size,
- table[i].pd_prot,
- table[i].pd_flags);
-
- pmap_devmap_bootstrap_done = true;
- }
-}
-
-
-const struct pmap_devmap *
-pmap_devmap_find_va(vaddr_t va, vsize_t size)
-{
-
- if (pmap_devmap_table == NULL)
- return NULL;
-
- const vaddr_t endva = va + size;
- for (size_t i = 0; pmap_devmap_table[i].pd_size != 0; i++) {
- if ((va >= pmap_devmap_table[i].pd_va) &&
- (endva <= pmap_devmap_table[i].pd_va +
- pmap_devmap_table[i].pd_size)) {
- return &pmap_devmap_table[i];
- }
- }
- return NULL;
-}
-
-
-const struct pmap_devmap *
-pmap_devmap_find_pa(paddr_t pa, psize_t size)
-{
-
- if (pmap_devmap_table == NULL)
- return NULL;
-
- const paddr_t endpa = pa + size;
- for (size_t i = 0; pmap_devmap_table[i].pd_size != 0; i++) {
- if (pa >= pmap_devmap_table[i].pd_pa &&
- (endpa <= pmap_devmap_table[i].pd_pa +
- pmap_devmap_table[i].pd_size))
- return (&pmap_devmap_table[i]);
- }
- return NULL;
-}
-
-
#ifdef MULTIPROCESSOR
void
pmap_md_tlb_info_attach(struct pmap_tlb_info *ti, struct cpu_info *ci)
Index: src/sys/arch/aarch64/conf/files.aarch64
diff -u src/sys/arch/aarch64/conf/files.aarch64:1.42 src/sys/arch/aarch64/conf/files.aarch64:1.43
--- src/sys/arch/aarch64/conf/files.aarch64:1.42 Sat Nov 5 08:29:17 2022
+++ src/sys/arch/aarch64/conf/files.aarch64 Thu Apr 20 08:28:02 2023
@@ -1,4 +1,4 @@
-# $NetBSD: files.aarch64,v 1.42 2022/11/05 08:29:17 skrll Exp $
+# $NetBSD: files.aarch64,v 1.43 2023/04/20 08:28:02 skrll Exp $
defflag opt_cpuoptions.h AARCH64_ALIGNMENT_CHECK
defflag opt_cpuoptions.h AARCH64_EL0_STACK_ALIGNMENT_CHECK
@@ -120,6 +120,7 @@ file arch/aarch64/aarch64/pmapboot.c
file arch/aarch64/aarch64/pmap_page.S
file arch/aarch64/aarch64/pmap_machdep.c pmap_mi
file uvm/pmap/pmap.c pmap_mi
+file uvm/pmap/pmap_devmap.c
file uvm/pmap/pmap_pvt.c
file uvm/pmap/pmap_segtab.c pmap_mi
file uvm/pmap/pmap_tlb.c
Index: src/sys/arch/aarch64/include/cpufunc.h
diff -u src/sys/arch/aarch64/include/cpufunc.h:1.25 src/sys/arch/aarch64/include/cpufunc.h:1.26
--- src/sys/arch/aarch64/include/cpufunc.h:1.25 Sat Sep 10 12:14:17 2022
+++ src/sys/arch/aarch64/include/cpufunc.h Thu Apr 20 08:28:03 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: cpufunc.h,v 1.25 2022/09/10 12:14:17 rillig Exp $ */
+/* $NetBSD: cpufunc.h,v 1.26 2023/04/20 08:28:03 skrll Exp $ */
/*
* Copyright (c) 2017 Ryo Shimizu <[email protected]>
@@ -36,6 +36,9 @@
#include <sys/cpu.h>
+#include <uvm/uvm_extern.h>
+#include <uvm/pmap/pmap_devmap.h>
+
extern u_int aarch64_cache_vindexsize; /* cachesize/way (VIVT/VIPT) */
extern u_int aarch64_cache_prefer_mask;
extern u_int cputype; /* compat arm */
@@ -131,14 +134,12 @@ cpu_clusterid(void)
static inline bool
cpu_earlydevice_va_p(void)
{
- extern bool pmap_devmap_bootstrap_done; /* in pmap.c */
-
/* This function may be called before enabling MMU, or mapping KVA */
if ((reg_sctlr_el1_read() & SCTLR_M) == 0)
return false;
/* device mapping will be available after pmap_devmap_bootstrap() */
- if (!pmap_devmap_bootstrap_done)
+ if (!pmap_devmap_bootstrapped_p())
return false;
return true;
Index: src/sys/arch/aarch64/include/pmap.h
diff -u src/sys/arch/aarch64/include/pmap.h:1.57 src/sys/arch/aarch64/include/pmap.h:1.58
--- src/sys/arch/aarch64/include/pmap.h:1.57 Thu Nov 3 09:04:56 2022
+++ src/sys/arch/aarch64/include/pmap.h Thu Apr 20 08:28:03 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.h,v 1.57 2022/11/03 09:04:56 skrll Exp $ */
+/* $NetBSD: pmap.h,v 1.58 2023/04/20 08:28:03 skrll Exp $ */
/*-
* Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -80,6 +80,7 @@ pmap_md_tlb_asid_max(void)
}
#include <uvm/pmap/tlb.h>
+#include <uvm/pmap/pmap_devmap.h>
#include <uvm/pmap/pmap_tlb.h>
#define KERNEL_PID 0 /* The kernel uses ASID 0 */
@@ -161,22 +162,6 @@ pmap_kvattr(pt_entry_t *ptep, vm_prot_t
return opte;
}
-/* devmap */
-struct pmap_devmap {
- vaddr_t pd_va; /* virtual address */
- paddr_t pd_pa; /* physical address */
- psize_t pd_size; /* size of region */
- vm_prot_t pd_prot; /* protection code */
- u_int pd_flags; /* flags for pmap_kenter_pa() */
-};
-
-void pmap_devmap_register(const struct pmap_devmap *);
-void pmap_devmap_bootstrap(vaddr_t, const struct pmap_devmap *);
-const struct pmap_devmap *pmap_devmap_find_pa(paddr_t, psize_t);
-const struct pmap_devmap *pmap_devmap_find_va(vaddr_t, vsize_t);
-vaddr_t pmap_devmap_phystov(paddr_t);
-paddr_t pmap_devmap_vtophys(paddr_t);
-
#define L1_TRUNC_BLOCK(x) ((x) & L1_FRAME)
#define L1_ROUND_BLOCK(x) L1_TRUNC_BLOCK((x) + L1_SIZE - 1)
#define L2_TRUNC_BLOCK(x) ((x) & L2_FRAME)
@@ -186,16 +171,7 @@ paddr_t pmap_devmap_vtophys(paddr_t);
#define DEVMAP_ALIGN(x) L3_TRUNC_BLOCK((x))
#define DEVMAP_SIZE(x) L3_ROUND_BLOCK((x))
-
-#define DEVMAP_ENTRY(va, pa, sz) \
- { \
- .pd_va = DEVMAP_ALIGN(va), \
- .pd_pa = DEVMAP_ALIGN(pa), \
- .pd_size = DEVMAP_SIZE(sz), \
- .pd_prot = VM_PROT_READ | VM_PROT_WRITE, \
- .pd_flags = PMAP_DEV \
- }
-#define DEVMAP_ENTRY_END { 0 }
+#define DEVMAP_FLAGS PMAP_DEV
/* Hooks for the pool allocator */
paddr_t vtophys(vaddr_t);
@@ -268,6 +244,8 @@ void pmapboot_enter_range(vaddr_t, paddr
void (*)(const char *, ...) __printflike(1, 2));
int pmapboot_protect(vaddr_t, vaddr_t, vm_prot_t);
+vsize_t pmap_map_chunk(vaddr_t, vaddr_t, paddr_t, vsize_t, vm_prot_t, u_int);
+
#if defined(DDB)
void pmap_db_pte_print(pt_entry_t, int, void (*)(const char *, ...) __printflike(1, 2));
void pmap_db_pteinfo(vaddr_t, void (*)(const char *, ...) __printflike(1, 2));
@@ -415,6 +393,8 @@ void pmap_pv_track(paddr_t, psize_t);
void pmap_pv_untrack(paddr_t, psize_t);
void pmap_pv_protect(paddr_t, vm_prot_t);
+vsize_t pmap_kenter_range(vaddr_t, paddr_t, vsize_t, vm_prot_t, u_int);
+
#define PMAP_MAPSIZE1 L2_SIZE
/* for ddb */
Index: src/sys/arch/aarch64/include/pmap_machdep.h
diff -u src/sys/arch/aarch64/include/pmap_machdep.h:1.2 src/sys/arch/aarch64/include/pmap_machdep.h:1.3
--- src/sys/arch/aarch64/include/pmap_machdep.h:1.2 Wed Dec 21 11:39:46 2022
+++ src/sys/arch/aarch64/include/pmap_machdep.h Thu Apr 20 08:28:03 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap_machdep.h,v 1.2 2022/12/21 11:39:46 skrll Exp $ */
+/* $NetBSD: pmap_machdep.h,v 1.3 2023/04/20 08:28:03 skrll Exp $ */
/*-
* Copyright (c) 2022 The NetBSD Foundation, Inc.
@@ -111,6 +111,8 @@ void pmap_md_deactivate_efirt(void);
void pmap_icache_sync_range(pmap_t, vaddr_t, vaddr_t);
+vsize_t pmap_kenter_range(vaddr_t, paddr_t, vsize_t, vm_prot_t, u_int flags);
+
#include <uvm/pmap/vmpagemd.h>
#include <uvm/pmap/pmap.h>
#include <uvm/pmap/pmap_pvt.h>
Index: src/sys/arch/arm/arm32/pmap.c
diff -u src/sys/arch/arm/arm32/pmap.c:1.438 src/sys/arch/arm/arm32/pmap.c:1.439
--- src/sys/arch/arm/arm32/pmap.c:1.438 Sun Dec 18 12:02:47 2022
+++ src/sys/arch/arm/arm32/pmap.c Thu Apr 20 08:28:03 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.c,v 1.438 2022/12/18 12:02:47 skrll Exp $ */
+/* $NetBSD: pmap.c,v 1.439 2023/04/20 08:28:03 skrll Exp $ */
/*
* Copyright 2003 Wasabi Systems, Inc.
@@ -193,7 +193,7 @@
#endif
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.438 2022/12/18 12:02:47 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.439 2023/04/20 08:28:03 skrll Exp $");
#include <sys/param.h>
#include <sys/types.h>
@@ -7211,88 +7211,28 @@ pmap_unmap_chunk(vaddr_t l1pt, vaddr_t v
}
-
-/********************** Static device map routines ***************************/
-
-static const struct pmap_devmap *pmap_devmap_table;
-
-/*
- * Register the devmap table. This is provided in case early console
- * initialization needs to register mappings created by bootstrap code
- * before pmap_devmap_bootstrap() is called.
- */
-void
-pmap_devmap_register(const struct pmap_devmap *table)
-{
-
- pmap_devmap_table = table;
-}
-
-/*
- * Map all of the static regions in the devmap table, and remember
- * the devmap table so other parts of the kernel can look up entries
- * later.
- */
-void
-pmap_devmap_bootstrap(vaddr_t l1pt, const struct pmap_devmap *table)
-{
- int i;
-
- pmap_devmap_table = table;
-
- for (i = 0; pmap_devmap_table[i].pd_size != 0; i++) {
- const struct pmap_devmap *pdp = &pmap_devmap_table[i];
-
- KASSERTMSG(VADDR_MAX - pdp->pd_va >= pdp->pd_size - 1, "va %" PRIxVADDR
- " sz %" PRIxPSIZE, pdp->pd_va, pdp->pd_size);
- KASSERTMSG(PADDR_MAX - pdp->pd_pa >= pdp->pd_size - 1, "pa %" PRIxPADDR
- " sz %" PRIxPSIZE, pdp->pd_pa, pdp->pd_size);
- VPRINTF("devmap: %08lx -> %08lx @ %08lx\n", pdp->pd_pa,
- pdp->pd_pa + pdp->pd_size - 1, pdp->pd_va);
-
- pmap_map_chunk(l1pt, pdp->pd_va, pdp->pd_pa, pdp->pd_size,
- pdp->pd_prot, pdp->pd_cache);
- }
-}
-
-const struct pmap_devmap *
-pmap_devmap_find_pa(paddr_t pa, psize_t size)
+vsize_t
+pmap_kenter_range(vaddr_t va, paddr_t pa, vsize_t size, vm_prot_t prot,
+ u_int flags)
{
- uint64_t endpa;
- int i;
-
- if (pmap_devmap_table == NULL)
- return NULL;
-
- endpa = (uint64_t)pa + (uint64_t)(size - 1);
+ const vaddr_t root = pmap_devmap_root();
- for (i = 0; pmap_devmap_table[i].pd_size != 0; i++) {
- if (pa >= pmap_devmap_table[i].pd_pa &&
- endpa <= (uint64_t)pmap_devmap_table[i].pd_pa +
- (uint64_t)(pmap_devmap_table[i].pd_size - 1))
- return &pmap_devmap_table[i];
+ int cache;
+ switch (flags) {
+ case PMAP_DEV:
+ cache = PTE_DEV;
+ break;
+ case PMAP_NOCACHE:
+ cache = PTE_NOCACHE;
+ break;
+ default:
+ cache = PTE_CACHE;
+ break;
}
- return NULL;
+ return pmap_map_chunk(root, va, pa, size, prot, cache);
}
-const struct pmap_devmap *
-pmap_devmap_find_va(vaddr_t va, vsize_t size)
-{
- int i;
-
- if (pmap_devmap_table == NULL)
- return NULL;
-
- for (i = 0; pmap_devmap_table[i].pd_size != 0; i++) {
- if (va >= pmap_devmap_table[i].pd_va &&
- va + size - 1 <= pmap_devmap_table[i].pd_va +
- pmap_devmap_table[i].pd_size - 1)
- return &pmap_devmap_table[i];
- }
-
- return NULL;
-}
/********************** PTE initialization routines **************************/
Index: src/sys/arch/arm/conf/files.arm
diff -u src/sys/arch/arm/conf/files.arm:1.167 src/sys/arch/arm/conf/files.arm:1.168
--- src/sys/arch/arm/conf/files.arm:1.167 Fri Oct 28 07:16:34 2022
+++ src/sys/arch/arm/conf/files.arm Thu Apr 20 08:28:03 2023
@@ -1,4 +1,4 @@
-# $NetBSD: files.arm,v 1.167 2022/10/28 07:16:34 skrll Exp $
+# $NetBSD: files.arm,v 1.168 2023/04/20 08:28:03 skrll Exp $
# temporary define to allow easy moving to ../arch/arm/arm32
defflag ARM32
@@ -235,6 +235,7 @@ file kern/kern_cctr.c arm11
file arch/arm/arm32/arm11_pmc.c arm11_pmc
file arch/arm/arm32/cortex_pmc.c cortex_pmc
file arch/arm/arm32/arm32_tlb.c (cpu_armv7 | cpu_arm11) & (!arm11_compat_mmu & !cpu_pre_armv6)
+file uvm/pmap/pmap_devmap.c
file uvm/pmap/pmap_tlb.c (cpu_armv7 | cpu_arm11) & (!arm11_compat_mmu & !cpu_pre_armv6)
# generic pmap files for arm32 implementations
Index: src/sys/arch/arm/include/arm32/pmap.h
diff -u src/sys/arch/arm/include/arm32/pmap.h:1.173 src/sys/arch/arm/include/arm32/pmap.h:1.174
--- src/sys/arch/arm/include/arm32/pmap.h:1.173 Sat Apr 2 11:16:07 2022
+++ src/sys/arch/arm/include/arm32/pmap.h Thu Apr 20 08:28:03 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.h,v 1.173 2022/04/02 11:16:07 skrll Exp $ */
+/* $NetBSD: pmap.h,v 1.174 2023/04/20 08:28:03 skrll Exp $ */
/*
* Copyright (c) 2002, 2003 Wasabi Systems, Inc.
@@ -79,7 +79,10 @@
#endif
#include <arm/cpufunc.h>
#include <arm/locore.h>
+
#include <uvm/uvm_object.h>
+
+#include <uvm/pmap/pmap_devmap.h>
#include <uvm/pmap/pmap_pvt.h>
#endif
@@ -201,29 +204,10 @@ union pmap_cache_state {
#define PMAP_CACHE_STATE_ALL 0xffffffffu
#endif /* !ARM_MMU_EXTENDED */
-/*
- * This structure is used by machine-dependent code to describe
- * static mappings of devices, created at bootstrap time.
- */
-struct pmap_devmap {
- vaddr_t pd_va; /* virtual address */
- paddr_t pd_pa; /* physical address */
- psize_t pd_size; /* size of region */
- vm_prot_t pd_prot; /* protection code */
- int pd_cache; /* cache attributes */
-};
#define DEVMAP_ALIGN(a) ((a) & ~L1_S_OFFSET)
#define DEVMAP_SIZE(s) roundup2((s), L1_S_SIZE)
-#define DEVMAP_ENTRY(va, pa, sz) \
- { \
- .pd_va = DEVMAP_ALIGN(va), \
- .pd_pa = DEVMAP_ALIGN(pa), \
- .pd_size = DEVMAP_SIZE(sz), \
- .pd_prot = VM_PROT_READ|VM_PROT_WRITE, \
- .pd_cache = PTE_DEV \
- }
-#define DEVMAP_ENTRY_END { 0 }
+#define DEVMAP_FLAGS PTE_DEV
/*
* The pmap structure itself
@@ -419,17 +403,14 @@ void pmap_postinit(void);
void vector_page_setprot(int);
-const struct pmap_devmap *pmap_devmap_find_pa(paddr_t, psize_t);
-const struct pmap_devmap *pmap_devmap_find_va(vaddr_t, vsize_t);
-
/* Bootstrapping routines. */
void pmap_map_section(vaddr_t, vaddr_t, paddr_t, int, int);
void pmap_map_entry(vaddr_t, vaddr_t, paddr_t, int, int);
vsize_t pmap_map_chunk(vaddr_t, vaddr_t, paddr_t, vsize_t, int, int);
void pmap_unmap_chunk(vaddr_t, vaddr_t, vsize_t);
void pmap_link_l2pt(vaddr_t, vaddr_t, pv_addr_t *);
-void pmap_devmap_bootstrap(vaddr_t, const struct pmap_devmap *);
-void pmap_devmap_register(const struct pmap_devmap *);
+
+vsize_t pmap_kenter_range(vaddr_t, paddr_t, vsize_t, vm_prot_t, u_int);
/*
* Special page zero routine for use by the idle loop (no cache cleans).
Index: src/sys/arch/cats/cats/cats_machdep.c
diff -u src/sys/arch/cats/cats/cats_machdep.c:1.93 src/sys/arch/cats/cats/cats_machdep.c:1.94
--- src/sys/arch/cats/cats/cats_machdep.c:1.93 Sat Jan 8 09:02:47 2022
+++ src/sys/arch/cats/cats/cats_machdep.c Thu Apr 20 08:28:03 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: cats_machdep.c,v 1.93 2022/01/08 09:02:47 skrll Exp $ */
+/* $NetBSD: cats_machdep.c,v 1.94 2023/04/20 08:28:03 skrll Exp $ */
/*
* Copyright (c) 1997,1998 Mark Brinicombe.
@@ -40,7 +40,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cats_machdep.c,v 1.93 2022/01/08 09:02:47 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cats_machdep.c,v 1.94 2023/04/20 08:28:03 skrll Exp $");
#include "opt_arm_debug.h"
#include "opt_cats.h"
@@ -173,41 +173,41 @@ int comcnmode = CONMODE;
static const struct pmap_devmap cats_devmap[] = {
/* Map 1MB for CSR space */
- { DC21285_ARMCSR_VBASE, DC21285_ARMCSR_BASE,
- DC21285_ARMCSR_VSIZE, VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE },
+ DEVMAP_ENTRY(DC21285_ARMCSR_VBASE,
+ DC21285_ARMCSR_BASE,
+ DC21285_ARMCSR_VSIZE),
/* Map 1MB for fast cache cleaning space */
- { DC21285_CACHE_FLUSH_VBASE, DC21285_SA_CACHE_FLUSH_BASE,
- DC21285_CACHE_FLUSH_VSIZE, VM_PROT_READ|VM_PROT_WRITE,
- PTE_CACHE },
+ DEVMAP_ENTRY(DC21285_CACHE_FLUSH_VBASE,
+ DC21285_SA_CACHE_FLUSH_BASE,
+ DC21285_CACHE_FLUSH_VSIZE),
/* Map 1MB for PCI IO space */
- { DC21285_PCI_IO_VBASE, DC21285_PCI_IO_BASE,
- DC21285_PCI_IO_VSIZE, VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE },
+ DEVMAP_ENTRY(DC21285_PCI_IO_VBASE,
+ DC21285_PCI_IO_BASE,
+ DC21285_PCI_IO_VSIZE),
/* Map 1MB for PCI IACK space */
- { DC21285_PCI_IACK_VBASE, DC21285_PCI_IACK_SPECIAL,
- DC21285_PCI_IACK_VSIZE, VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE },
+ DEVMAP_ENTRY(DC21285_PCI_IACK_VBASE,
+ DC21285_PCI_IACK_SPECIAL,
+ DC21285_PCI_IACK_VSIZE),
/* Map 16MB of type 1 PCI config access */
- { DC21285_PCI_TYPE_1_CONFIG_VBASE, DC21285_PCI_TYPE_1_CONFIG,
- DC21285_PCI_TYPE_1_CONFIG_VSIZE, VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE },
+ DEVMAP_ENTRY(DC21285_PCI_TYPE_1_CONFIG_VBASE,
+ DC21285_PCI_TYPE_1_CONFIG,
+ DC21285_PCI_TYPE_1_CONFIG_VSIZE),
/* Map 16MB of type 0 PCI config access */
- { DC21285_PCI_TYPE_0_CONFIG_VBASE, DC21285_PCI_TYPE_0_CONFIG,
- DC21285_PCI_TYPE_0_CONFIG_VSIZE, VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE },
+ DEVMAP_ENTRY(DC21285_PCI_TYPE_0_CONFIG_VBASE,
+ DC21285_PCI_TYPE_0_CONFIG,
+ DC21285_PCI_TYPE_0_CONFIG_VSIZE),
/* Map 1MB of 32 bit PCI address space for ISA MEM accesses via PCI */
- { DC21285_PCI_ISA_MEM_VBASE, DC21285_PCI_MEM_BASE,
- DC21285_PCI_ISA_MEM_VSIZE, VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE },
+ DEVMAP_ENTRY(DC21285_PCI_ISA_MEM_VBASE,
+ DC21285_PCI_MEM_BASE,
+ DC21285_PCI_ISA_MEM_VSIZE),
- { 0, 0, 0, 0, 0 }
+ DEVMAP_ENTRY_END
};
#define MAX_PHYSMEM 4
Index: src/sys/arch/epoc32/epoc32/machdep.c
diff -u src/sys/arch/epoc32/epoc32/machdep.c:1.8 src/sys/arch/epoc32/epoc32/machdep.c:1.9
--- src/sys/arch/epoc32/epoc32/machdep.c:1.8 Tue Jul 16 14:41:44 2019
+++ src/sys/arch/epoc32/epoc32/machdep.c Thu Apr 20 08:28:03 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: machdep.c,v 1.8 2019/07/16 14:41:44 skrll Exp $ */
+/* $NetBSD: machdep.c,v 1.9 2023/04/20 08:28:03 skrll Exp $ */
/*
* Copyright (c) 2012, 2013 KIYOHARA Takashi
* All rights reserved.
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.8 2019/07/16 14:41:44 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.9 2023/04/20 08:28:03 skrll Exp $");
#include "clpscom.h"
#include "clpslcd.h"
@@ -123,29 +123,23 @@ int epoc32_fb_addr;
* using the 2nd page tables.
*/
-#define _A(a) ((a) & ~L1_S_OFFSET)
-#define _S(s) (((s) + L1_S_SIZE - 1) & ~(L1_S_SIZE - 1))
static const struct pmap_devmap epoc32_devmap[] = {
- {
+ DEVMAP_ENTRY(
ARM7XX_INTRREG_VBASE, /* included com, lcd-ctrl */
- _A(ARM7XX_INTRREG_BASE),
- _S(ARM7XX_INTRREG_SIZE),
- VM_PROT_READ | VM_PROT_WRITE,
- PTE_NOCACHE,
- },
+ ARM7XX_INTRREG_BASE,
+ ARM7XX_INTRREG_SIZE
+ ),
- { 0, 0, 0, 0, 0 }
+ DEVMAP_ENTRY_END
};
static const struct pmap_devmap epoc32_fb_devmap[] = {
- {
+ DEVMAP_ENTRY(
ARM7XX_FB_VBASE,
- _A(ARM7XX_FB_BASE),
- _S(ARM7XX_FB_SIZE),
- VM_PROT_READ | VM_PROT_WRITE,
- PTE_NOCACHE,
- },
+ ARM7XX_FB_BASE,
+ ARM7XX_FB_SIZE
+ ),
- { 0, 0, 0, 0, 0 }
+ DEVMAP_ENTRY_END
};
/*
Index: src/sys/arch/evbarm/adi_brh/brh_machdep.c
diff -u src/sys/arch/evbarm/adi_brh/brh_machdep.c:1.51 src/sys/arch/evbarm/adi_brh/brh_machdep.c:1.52
--- src/sys/arch/evbarm/adi_brh/brh_machdep.c:1.51 Tue Aug 17 22:00:27 2021
+++ src/sys/arch/evbarm/adi_brh/brh_machdep.c Thu Apr 20 08:28:03 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: brh_machdep.c,v 1.51 2021/08/17 22:00:27 andvar Exp $ */
+/* $NetBSD: brh_machdep.c,v 1.52 2023/04/20 08:28:03 skrll Exp $ */
/*
* Copyright (c) 2001, 2002, 2003 Wasabi Systems, Inc.
@@ -73,7 +73,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: brh_machdep.c,v 1.51 2021/08/17 22:00:27 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: brh_machdep.c,v 1.52 2023/04/20 08:28:03 skrll Exp $");
#include "opt_arm_debug.h"
#include "opt_console.h"
@@ -259,69 +259,47 @@ cpu_reboot(int howto, char *bootstr)
/* Static device mappings. */
static const struct pmap_devmap brh_devmap[] = {
- {
+ DEVMAP_ENTRY(
BRH_PCI_CONF_VBASE,
BECC_PCI_CONF_BASE,
- BRH_PCI_CONF_VSIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
- {
+ BRH_PCI_CONF_VSIZE
+ ),
+ DEVMAP_ENTRY(
BRH_PCI_MEM1_VBASE,
BECC_PCI_MEM1_BASE,
- BRH_PCI_MEM1_VSIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
- {
+ BRH_PCI_MEM1_VSIZE
+ ),
+ DEVMAP_ENTRY(
BRH_PCI_MEM2_VBASE,
BECC_PCI_MEM2_BASE,
- BRH_PCI_MEM2_VSIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
- {
+ BRH_PCI_MEM2_VSIZE
+ ),
+ DEVMAP_ENTRY(
BRH_UART1_VBASE,
BRH_UART1_BASE,
- BRH_UART1_VSIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
- {
+ BRH_UART1_VSIZE
+ ),
+ DEVMAP_ENTRY(
BRH_UART2_VBASE,
BRH_UART2_BASE,
- BRH_UART2_VSIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
- {
+ BRH_UART2_VSIZE
+ ),
+ DEVMAP_ENTRY(
BRH_LED_VBASE,
BRH_LED_BASE,
- BRH_LED_VSIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
- {
+ BRH_LED_VSIZE
+ ),
+ DEVMAP_ENTRY(
BRH_PCI_IO_VBASE,
BECC_PCI_IO_BASE,
- BRH_PCI_IO_VSIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
- {
+ BRH_PCI_IO_VSIZE
+ ),
+ DEVMAP_ENTRY(
BRH_BECC_VBASE,
BECC_REG_BASE,
- BRH_BECC_VSIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
- {
- 0,
- 0,
- 0,
- 0,
- 0,
- }
+ BRH_BECC_VSIZE
+ ),
+ DEVMAP_ENTRY_END
};
static void
Index: src/sys/arch/evbarm/armadaxp/armadaxp_machdep.c
diff -u src/sys/arch/evbarm/armadaxp/armadaxp_machdep.c:1.17 src/sys/arch/evbarm/armadaxp/armadaxp_machdep.c:1.18
--- src/sys/arch/evbarm/armadaxp/armadaxp_machdep.c:1.17 Tue Jul 16 14:41:44 2019
+++ src/sys/arch/evbarm/armadaxp/armadaxp_machdep.c Thu Apr 20 08:28:03 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: armadaxp_machdep.c,v 1.17 2019/07/16 14:41:44 skrll Exp $ */
+/* $NetBSD: armadaxp_machdep.c,v 1.18 2023/04/20 08:28:03 skrll Exp $ */
/*******************************************************************************
Copyright (C) Marvell International Ltd. and its affiliates
@@ -37,7 +37,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
*******************************************************************************/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: armadaxp_machdep.c,v 1.17 2019/07/16 14:41:44 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: armadaxp_machdep.c,v 1.18 2023/04/20 08:28:03 skrll Exp $");
#include "opt_arm_debug.h"
#include "opt_console.h"
@@ -187,24 +187,15 @@ axp_system_reset(void)
* using the 2nd page tables.
*/
-#define _A(a) ((a) & ~L1_S_OFFSET)
-#define _S(s) (((s) + L1_S_SIZE - 1) & ~(L1_S_SIZE-1))
-
static const struct pmap_devmap devmap[] = {
- {
- /* Internal registers */
- .pd_va = _A(MARVELL_INTERREGS_VBASE),
- .pd_pa = _A(MARVELL_INTERREGS_PBASE),
- .pd_size = _S(MVSOC_INTERREGS_SIZE),
- .pd_prot = VM_PROT_READ|VM_PROT_WRITE,
- .pd_cache = PTE_NOCACHE
- },
- {0, 0, 0, 0, 0}
+ DEVMAP_ENTRY_FLAGS(MARVELL_INTERREGS_VBASE,
+ MARVELL_INTERREGS_PBASE,
+ MVSOC_INTERREGS_SIZE,
+ VM_PROT_READ | VM_PROT_WRITE,
+ PMAP_NOCACHE),
+ DEVMAP_ENTRY_END
};
-#undef _A
-#undef _S
-
static inline pd_entry_t *
read_ttb(void)
{
Index: src/sys/arch/evbarm/g42xxeb/g42xxeb_machdep.c
diff -u src/sys/arch/evbarm/g42xxeb/g42xxeb_machdep.c:1.39 src/sys/arch/evbarm/g42xxeb/g42xxeb_machdep.c:1.40
--- src/sys/arch/evbarm/g42xxeb/g42xxeb_machdep.c:1.39 Sun Jul 3 19:58:42 2022
+++ src/sys/arch/evbarm/g42xxeb/g42xxeb_machdep.c Thu Apr 20 08:28:03 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: g42xxeb_machdep.c,v 1.39 2022/07/03 19:58:42 andvar Exp $ */
+/* $NetBSD: g42xxeb_machdep.c,v 1.40 2023/04/20 08:28:03 skrll Exp $ */
/*
* Copyright (c) 2002, 2003, 2004, 2005 Genetec Corporation.
@@ -335,53 +335,40 @@ read_ttb(void)
* using the 2nd page tables.
*/
-#define _A(a) ((a) & ~L1_S_OFFSET)
-#define _S(s) (((s) + L1_S_SIZE - 1) & ~(L1_S_SIZE-1))
-
static const struct pmap_devmap g42xxeb_devmap[] = {
- {
+ DEVMAP_ENTRY(
G42XXEB_PLDREG_VBASE,
- _A(G42XXEB_PLDREG_BASE),
- _S(G42XXEB_PLDREG_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ G42XXEB_PLDREG_BASE,
+ G42XXEB_PLDREG_SIZE
+ ),
+ DEVMAP_ENTRY(
G42XXEB_GPIO_VBASE,
- _A(PXA2X0_GPIO_BASE),
- _S(PXA250_GPIO_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ PXA2X0_GPIO_BASE,
+ PXA250_GPIO_SIZE
+ ),
+ DEVMAP_ENTRY(
G42XXEB_CLKMAN_VBASE,
- _A(PXA2X0_CLKMAN_BASE),
- _S(PXA2X0_CLKMAN_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ PXA2X0_CLKMAN_BASE,
+ PXA2X0_CLKMAN_SIZE
+ ),
+ DEVMAP_ENTRY(
G42XXEB_INTCTL_VBASE,
- _A(PXA2X0_INTCTL_BASE),
- _S(PXA2X0_INTCTL_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ PXA2X0_INTCTL_BASE,
+ PXA2X0_INTCTL_SIZE
+ ),
+ DEVMAP_ENTRY(
G42XXEB_FFUART_VBASE,
- _A(PXA2X0_FFUART_BASE),
- _S(4 * COM_NPORTS),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ PXA2X0_FFUART_BASE,
+ 4 * COM_NPORTS
+ ),
+ DEVMAP_ENTRY(
G42XXEB_BTUART_VBASE,
- _A(PXA2X0_BTUART_BASE),
- _S(4 * COM_NPORTS),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {0, 0, 0, 0,}
+ PXA2X0_BTUART_BASE,
+ 4 * COM_NPORTS
+ ),
+ DEVMAP_ENTRY_END
};
-#undef _A
-#undef _S
-
-
/*
* vaddr_t initarm(...)
*
Index: src/sys/arch/evbarm/gemini/gemini_machdep.c
diff -u src/sys/arch/evbarm/gemini/gemini_machdep.c:1.33 src/sys/arch/evbarm/gemini/gemini_machdep.c:1.34
--- src/sys/arch/evbarm/gemini/gemini_machdep.c:1.33 Sat Nov 28 14:02:30 2020
+++ src/sys/arch/evbarm/gemini/gemini_machdep.c Thu Apr 20 08:28:04 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: gemini_machdep.c,v 1.33 2020/11/28 14:02:30 skrll Exp $ */
+/* $NetBSD: gemini_machdep.c,v 1.34 2023/04/20 08:28:04 skrll Exp $ */
/* adapted from:
* NetBSD: sdp24xx_machdep.c,v 1.4 2008/08/27 11:03:10 matt Exp
@@ -129,7 +129,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: gemini_machdep.c,v 1.33 2020/11/28 14:02:30 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: gemini_machdep.c,v 1.34 2023/04/20 08:28:04 skrll Exp $");
#include "opt_arm_debug.h"
#include "opt_console.h"
@@ -418,90 +418,66 @@ cpu_reboot(int howto, char *bootstr)
* using the 2nd page tables.
*/
-#define _A(a) ((a) & ~L1_S_OFFSET)
-#define _S(s) (((s) + L1_S_SIZE - 1) & ~(L1_S_SIZE-1))
-
static const struct pmap_devmap devmap[] = {
/* Global regs */
- {
- .pd_va = _A(GEMINI_GLOBAL_VBASE),
- .pd_pa = _A(GEMINI_GLOBAL_BASE),
- .pd_size = _S(L1_S_SIZE),
- .pd_prot = VM_PROT_READ|VM_PROT_WRITE,
- .pd_cache = PTE_NOCACHE
- },
+ DEVMAP_ENTRY_FLAGS(GEMINI_GLOBAL_VBASE,
+ GEMINI_GLOBAL_BASE,
+ L1_S_SIZE,
+ PMAP_NOCACHE),
/* Watchdog */
- {
- .pd_va = _A(GEMINI_WATCHDOG_VBASE),
- .pd_pa = _A(GEMINI_WATCHDOG_BASE),
- .pd_size = _S(L1_S_SIZE),
- .pd_prot = VM_PROT_READ|VM_PROT_WRITE,
- .pd_cache = PTE_NOCACHE
- },
+ DEVMAP_ENTRY_FLAGS(GEMINI_WATCHDOG_VBASE,
+ GEMINI_WATCHDOG_BASE,
+ L1_S_SIZE,
+ PMAP_NOCACHE),
+
+ DEVMAP_ENTRY_FLAGS(GEMINI_WATCHDOG_VBASE,
+ GEMINI_WATCHDOG_BASE,
+ L1_S_SIZE,
+ PMAP_NOCACHE),
/* UART */
- {
- .pd_va = _A(GEMINI_UART_VBASE),
- .pd_pa = _A(GEMINI_UART_BASE),
- .pd_size = _S(L1_S_SIZE),
- .pd_prot = VM_PROT_READ|VM_PROT_WRITE,
- .pd_cache = PTE_NOCACHE
- },
+ DEVMAP_ENTRY_FLAGS(GEMINI_UART_VBASE,
+ GEMINI_UART_BASE,
+ L1_S_SIZE,
+ PMAP_NOCACHE),
/* LPCHC */
- {
- .pd_va = _A(GEMINI_LPCHC_VBASE),
- .pd_pa = _A(GEMINI_LPCHC_BASE),
- .pd_size = _S(L1_S_SIZE),
- .pd_prot = VM_PROT_READ|VM_PROT_WRITE,
- .pd_cache = PTE_NOCACHE
- },
+ DEVMAP_ENTRY_FLAGS(GEMINI_LPCHC_VBASE,
+ GEMINI_LPCHC_BASE,
+ L1_S_SIZE,
+ PMAP_NOCACHE),
/* LPCIO */
- {
- .pd_va = _A(GEMINI_LPCIO_VBASE),
- .pd_pa = _A(GEMINI_LPCIO_BASE),
- .pd_size = _S(L1_S_SIZE),
- .pd_prot = VM_PROT_READ|VM_PROT_WRITE,
- .pd_cache = PTE_NOCACHE
- },
+ DEVMAP_ENTRY_FLAGS(GEMINI_LPCIO_VBASE,
+ GEMINI_LPCIO_BASE,
+ L1_S_SIZE,
+ PMAP_NOCACHE),
/* Timers */
- {
- .pd_va = _A(GEMINI_TIMER_VBASE),
- .pd_pa = _A(GEMINI_TIMER_BASE),
- .pd_size = _S(L1_S_SIZE),
- .pd_prot = VM_PROT_READ|VM_PROT_WRITE,
- .pd_cache = PTE_NOCACHE
- },
+ DEVMAP_ENTRY_FLAGS(GEMINI_TIMER_VBASE,
+ GEMINI_TIMER_BASE,
+ L1_S_SIZE,
+ PMAP_NOCACHE),
/* DRAM Controller */
- {
- .pd_va = _A(GEMINI_DRAMC_VBASE),
- .pd_pa = _A(GEMINI_DRAMC_BASE),
- .pd_size = _S(L1_S_SIZE),
- .pd_prot = VM_PROT_READ|VM_PROT_WRITE,
- .pd_cache = PTE_NOCACHE
- },
+ DEVMAP_ENTRY_FLAGS(GEMINI_DRAMC_VBASE,
+ GEMINI_DRAMC_BASE,
+ L1_S_SIZE,
+ PMAP_NOCACHE),
#if defined(MEMORY_DISK_DYNAMIC)
/* Ramdisk */
- {
- .pd_va = _A(GEMINI_RAMDISK_VBASE),
- .pd_pa = _A(GEMINI_RAMDISK_PBASE),
- .pd_size = _S(GEMINI_RAMDISK_SIZE),
- .pd_prot = VM_PROT_READ|VM_PROT_WRITE,
- .pd_cache = PTE_NOCACHE
- },
+ DEVMAP_ENTRY_FLAGS(GEMINI_RAMDISK_VBASE,
+ GEMINI_RAMDISK_PBASE,
+ L1_S_SIZE,
+ PMAP_NOCACHE),
#endif
- {0} /* list terminator */
+ /* list terminator */
+ DEVMAP_ENTRY_END
};
-#undef _A
-#undef _S
-
#ifdef DDB
static void gemini_db_trap(int where)
{
Index: src/sys/arch/evbarm/gumstix/gumstix_machdep.c
diff -u src/sys/arch/evbarm/gumstix/gumstix_machdep.c:1.72 src/sys/arch/evbarm/gumstix/gumstix_machdep.c:1.73
--- src/sys/arch/evbarm/gumstix/gumstix_machdep.c:1.72 Sat Oct 29 13:10:25 2022
+++ src/sys/arch/evbarm/gumstix/gumstix_machdep.c Thu Apr 20 08:28:04 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: gumstix_machdep.c,v 1.72 2022/10/29 13:10:25 jmcneill Exp $ */
+/* $NetBSD: gumstix_machdep.c,v 1.73 2023/04/20 08:28:04 skrll Exp $ */
/*
* Copyright (C) 2005, 2006, 2007 WIDE Project and SOUM Corporation.
* All rights reserved.
@@ -277,74 +277,52 @@ read_ttb(void)
* using the 2nd page tables.
*/
-#define _A(a) ((a) & ~L1_S_OFFSET)
-#define _S(s) (((s) + L1_S_SIZE - 1) & ~(L1_S_SIZE-1))
-
static const struct pmap_devmap gumstix_devmap[] = {
#if defined(GUMSTIX)
- {
+ DEVMAP_ENTRY(
GUMSTIX_GPIO_VBASE,
- _A(PXA2X0_GPIO_BASE),
- _S(PXA250_GPIO_SIZE),
- VM_PROT_READ | VM_PROT_WRITE,
- PTE_NOCACHE,
- },
- {
+ PXA2X0_GPIO_BASE,
+ PXA250_GPIO_SIZE
+ ),
+ DEVMAP_ENTRY(
GUMSTIX_CLKMAN_VBASE,
- _A(PXA2X0_CLKMAN_BASE),
- _S(PXA2X0_CLKMAN_SIZE),
- VM_PROT_READ | VM_PROT_WRITE,
- PTE_NOCACHE,
- },
- {
+ PXA2X0_CLKMAN_BASE,
+ PXA2X0_CLKMAN_SIZE
+ ),
+ DEVMAP_ENTRY(
GUMSTIX_INTCTL_VBASE,
- _A(PXA2X0_INTCTL_BASE),
- _S(PXA2X0_INTCTL_SIZE),
- VM_PROT_READ | VM_PROT_WRITE,
- PTE_NOCACHE,
- },
- {
+ PXA2X0_INTCTL_BASE,
+ PXA2X0_INTCTL_SIZE
+ ),
+ DEVMAP_ENTRY(
GUMSTIX_FFUART_VBASE,
- _A(PXA2X0_FFUART_BASE),
- _S(4 * COM_NPORTS),
- VM_PROT_READ | VM_PROT_WRITE,
- PTE_NOCACHE,
- },
- {
+ PXA2X0_FFUART_BASE,
+ 4 * COM_NPORTS
+ ),
+ DEVMAP_ENTRY(
GUMSTIX_STUART_VBASE,
- _A(PXA2X0_STUART_BASE),
- _S(4 * COM_NPORTS),
- VM_PROT_READ | VM_PROT_WRITE,
- PTE_NOCACHE,
- },
- {
+ PXA2X0_STUART_BASE,
+ 4 * COM_NPORTS
+ ),
+ DEVMAP_ENTRY(
GUMSTIX_BTUART_VBASE,
- _A(PXA2X0_BTUART_BASE),
- _S(4 * COM_NPORTS),
- VM_PROT_READ | VM_PROT_WRITE,
- PTE_NOCACHE,
- },
- {
+ PXA2X0_BTUART_BASE,
+ 4 * COM_NPORTS
+ ),
+ DEVMAP_ENTRY(
GUMSTIX_HWUART_VBASE,
- _A(PXA2X0_HWUART_BASE),
- _S(4 * COM_NPORTS),
- VM_PROT_READ | VM_PROT_WRITE,
- PTE_NOCACHE,
- },
- {
+ PXA2X0_HWUART_BASE,
+ 4 * COM_NPORTS
+ ),
+ DEVMAP_ENTRY(
GUMSTIX_LCDC_VBASE,
- _A(PXA2X0_LCDC_BASE),
- _S(4 * COM_NPORTS),
- VM_PROT_READ | VM_PROT_WRITE,
- PTE_NOCACHE,
- },
+ PXA2X0_LCDC_BASE,
+ 4 * COM_NPORTS
+ ),
#endif
- { 0, 0, 0, 0, 0 }
+ DEVMAP_ENTRY_END
};
-#undef _A
-#undef _S
-
extern uint32_t *uboot_args;
/*
Index: src/sys/arch/evbarm/hdl_g/hdlg_machdep.c
diff -u src/sys/arch/evbarm/hdl_g/hdlg_machdep.c:1.33 src/sys/arch/evbarm/hdl_g/hdlg_machdep.c:1.34
--- src/sys/arch/evbarm/hdl_g/hdlg_machdep.c:1.33 Tue Jan 4 10:38:04 2022
+++ src/sys/arch/evbarm/hdl_g/hdlg_machdep.c Thu Apr 20 08:28:04 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: hdlg_machdep.c,v 1.33 2022/01/04 10:38:04 skrll Exp $ */
+/* $NetBSD: hdlg_machdep.c,v 1.34 2023/04/20 08:28:04 skrll Exp $ */
/*
* Copyright (c) 2001, 2002, 2003 Wasabi Systems, Inc.
@@ -73,7 +73,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: hdlg_machdep.c,v 1.33 2022/01/04 10:38:04 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hdlg_machdep.c,v 1.34 2023/04/20 08:28:04 skrll Exp $");
#include "opt_arm_debug.h"
#include "opt_console.h"
@@ -171,37 +171,25 @@ static const struct pmap_devmap hdlg_dev
* Map the on-board devices VA == PA so that we can access them
* with the MMU on or off.
*/
- {
+ DEVMAP_ENTRY(
HDLG_OBIO_BASE,
HDLG_OBIO_BASE,
- HDLG_OBIO_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
+ HDLG_OBIO_SIZE
+ ),
- {
+ DEVMAP_ENTRY(
HDLG_IOW_VBASE,
VERDE_OUT_XLATE_IO_WIN0_BASE,
- VERDE_OUT_XLATE_IO_WIN_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
+ VERDE_OUT_XLATE_IO_WIN_SIZE
+ ),
- {
+ DEVMAP_ENTRY(
HDLG_80321_VBASE,
VERDE_PMMR_BASE,
- VERDE_PMMR_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
-
- {
- 0,
- 0,
- 0,
- 0,
- 0,
- }
+ VERDE_PMMR_SIZE
+ ),
+
+ DEVMAP_ENTRY_END
};
static void
Index: src/sys/arch/evbarm/imx23_olinuxino/imx23_olinuxino_machdep.c
diff -u src/sys/arch/evbarm/imx23_olinuxino/imx23_olinuxino_machdep.c:1.13 src/sys/arch/evbarm/imx23_olinuxino/imx23_olinuxino_machdep.c:1.14
--- src/sys/arch/evbarm/imx23_olinuxino/imx23_olinuxino_machdep.c:1.13 Fri Dec 3 13:27:38 2021
+++ src/sys/arch/evbarm/imx23_olinuxino/imx23_olinuxino_machdep.c Thu Apr 20 08:28:04 2023
@@ -1,4 +1,4 @@
-/* $Id: imx23_olinuxino_machdep.c,v 1.13 2021/12/03 13:27:38 andvar Exp $ */
+/* $Id: imx23_olinuxino_machdep.c,v 1.14 2023/04/20 08:28:04 skrll Exp $ */
/*
* Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -91,20 +91,14 @@ do { \
/*
* Static device map for i.MX23 peripheral address space.
*/
-#define _A(a) ((a) & ~L1_S_OFFSET)
-#define _S(s) (((s) + L1_S_SIZE - 1) & ~(L1_S_SIZE-1))
static const struct pmap_devmap devmap[] = {
- {
- _A(APBH_BASE), /* Virtual address. */
- _A(APBH_BASE), /* Physical address. */
- _S(APBH_SIZE + APBX_SIZE), /* APBX located after APBH. */
- VM_PROT_READ|VM_PROT_WRITE, /* Protection bits. */
- PTE_NOCACHE /* Cache attributes. */
- },
- { 0, 0, 0, 0, 0 }
+ DEVMAP_ENTRY(
+ APBH_BASE, /* Virtual address. */
+ APBH_BASE, /* Physical address. */
+ APBH_SIZE + APBX_SIZE /* APBX located after APBH. */
+ ),
+ DEVMAP_ENTRY_END
};
-#undef _A
-#undef _S
static struct plcom_instance imx23_pi = {
.pi_type = PLCOM_TYPE_PL011,
Index: src/sys/arch/evbarm/imx31/imx31lk_machdep.c
diff -u src/sys/arch/evbarm/imx31/imx31lk_machdep.c:1.29 src/sys/arch/evbarm/imx31/imx31lk_machdep.c:1.30
--- src/sys/arch/evbarm/imx31/imx31lk_machdep.c:1.29 Tue Aug 17 22:00:28 2021
+++ src/sys/arch/evbarm/imx31/imx31lk_machdep.c Thu Apr 20 08:28:04 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: imx31lk_machdep.c,v 1.29 2021/08/17 22:00:28 andvar Exp $ */
+/* $NetBSD: imx31lk_machdep.c,v 1.30 2023/04/20 08:28:04 skrll Exp $ */
/*
* Startup routines for the ZOOM iMX31 LITEKIT.
@@ -110,7 +110,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: imx31lk_machdep.c,v 1.29 2021/08/17 22:00:28 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: imx31lk_machdep.c,v 1.30 2023/04/20 08:28:04 skrll Exp $");
#include "opt_arm_debug.h"
#include "opt_console.h"
@@ -302,18 +302,13 @@ cpu_reboot(int howto, char *bootstr)
* with kernel's page table which we build up in initarm().
*/
-#define _A(a) ((a) & ~L1_S_OFFSET)
-#define _S(s) (((s) + L1_S_SIZE - 1) & ~(L1_S_SIZE-1))
-
static const struct pmap_devmap imx31lk_devmap[] = {
- {
+ DEVMAP_ENTRY(
IMX31LITEKIT_UART1_VBASE,
- _A(UART1_BASE),
- _S(L1_S_SIZE),
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
- {0, 0, 0, 0, 0 }
+ UART1_BASE,
+ L1_S_SIZE
+ ),
+ DEVMAP_ENTRY_END
};
#ifndef MEMSTART
Index: src/sys/arch/evbarm/integrator/integrator_machdep.c
diff -u src/sys/arch/evbarm/integrator/integrator_machdep.c:1.80 src/sys/arch/evbarm/integrator/integrator_machdep.c:1.81
--- src/sys/arch/evbarm/integrator/integrator_machdep.c:1.80 Tue Aug 10 06:47:49 2021
+++ src/sys/arch/evbarm/integrator/integrator_machdep.c Thu Apr 20 08:28:04 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: integrator_machdep.c,v 1.80 2021/08/10 06:47:49 skrll Exp $ */
+/* $NetBSD: integrator_machdep.c,v 1.81 2023/04/20 08:28:04 skrll Exp $ */
/*
* Copyright (c) 2001,2002 ARM Ltd
@@ -68,7 +68,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: integrator_machdep.c,v 1.80 2021/08/10 06:47:49 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: integrator_machdep.c,v 1.81 2023/04/20 08:28:04 skrll Exp $");
#include "opt_arm_debug.h"
#include "opt_console.h"
@@ -264,47 +264,33 @@ cpu_reboot(int howto, char *bootstr)
/* Statically mapped devices. */
static const struct pmap_devmap integrator_devmap[] = {
#if NPLCOM > 0 && defined(PLCONSOLE)
- {
+ DEVMAP_ENTRY(
UART0_BOOT_BASE,
IFPGA_IO_BASE + IFPGA_UART0,
- 1024 * 1024,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE
- },
+ 1024 * 1024
+ ),
- {
+ DEVMAP_ENTRY(
UART1_BOOT_BASE,
IFPGA_IO_BASE + IFPGA_UART1,
- 1024 * 1024,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE
- },
+ 1024 * 1024
+ ),
#endif
#if NPCI > 0
- {
+ DEVMAP_ENTRY(
IFPGA_PCI_IO_VBASE,
IFPGA_PCI_IO_BASE,
- IFPGA_PCI_IO_VSIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE
- },
+ IFPGA_PCI_IO_VSIZE
+ ),
- {
+ DEVMAP_ENTRY(
IFPGA_PCI_CONF_VBASE,
IFPGA_PCI_CONF_BASE,
- IFPGA_PCI_CONF_VSIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE
- },
+ IFPGA_PCI_CONF_VSIZE
+ ),
#endif
- {
- 0,
- 0,
- 0,
- 0,
- 0
- }
+ DEVMAP_ENTRY_END
};
/*
Index: src/sys/arch/evbarm/iq80310/iq80310_machdep.c
diff -u src/sys/arch/evbarm/iq80310/iq80310_machdep.c:1.94 src/sys/arch/evbarm/iq80310/iq80310_machdep.c:1.95
--- src/sys/arch/evbarm/iq80310/iq80310_machdep.c:1.94 Tue Aug 17 22:00:28 2021
+++ src/sys/arch/evbarm/iq80310/iq80310_machdep.c Thu Apr 20 08:28:04 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: iq80310_machdep.c,v 1.94 2021/08/17 22:00:28 andvar Exp $ */
+/* $NetBSD: iq80310_machdep.c,v 1.95 2023/04/20 08:28:04 skrll Exp $ */
/*
* Copyright (c) 2001, 2002, 2003 Wasabi Systems, Inc.
@@ -73,7 +73,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: iq80310_machdep.c,v 1.94 2021/08/17 22:00:28 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: iq80310_machdep.c,v 1.95 2023/04/20 08:28:04 skrll Exp $");
#include "opt_arm_debug.h"
#include "opt_console.h"
@@ -263,42 +263,28 @@ static const struct pmap_devmap iq80310_
* Map the on-board devices VA == PA so that we can access them
* with the MMU on or off.
*/
- {
+ DEVMAP_ENTRY(
IQ80310_OBIO_BASE,
IQ80310_OBIO_BASE,
- IQ80310_OBIO_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
- {
+ IQ80310_OBIO_SIZE
+ ),
+ DEVMAP_ENTRY(
IQ80310_PIOW_VBASE,
I80312_PCI_XLATE_PIOW_BASE,
- I80312_PCI_XLATE_IOSIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
- {
+ I80312_PCI_XLATE_IOSIZE
+ ),
+ DEVMAP_ENTRY(
IQ80310_SIOW_VBASE,
I80312_PCI_XLATE_SIOW_BASE,
- I80312_PCI_XLATE_IOSIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
- {
+ I80312_PCI_XLATE_IOSIZE
+ ),
+ DEVMAP_ENTRY(
IQ80310_80312_VBASE,
I80312_PMMR_BASE,
- I80312_PMMR_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
-
- {
- 0,
- 0,
- 0,
- 0,
- 0,
- }
+ I80312_PMMR_SIZE
+ ),
+
+ DEVMAP_ENTRY_END
};
/*
Index: src/sys/arch/evbarm/iq80321/iq80321_machdep.c
diff -u src/sys/arch/evbarm/iq80321/iq80321_machdep.c:1.64 src/sys/arch/evbarm/iq80321/iq80321_machdep.c:1.65
--- src/sys/arch/evbarm/iq80321/iq80321_machdep.c:1.64 Tue Aug 17 22:00:28 2021
+++ src/sys/arch/evbarm/iq80321/iq80321_machdep.c Thu Apr 20 08:28:04 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: iq80321_machdep.c,v 1.64 2021/08/17 22:00:28 andvar Exp $ */
+/* $NetBSD: iq80321_machdep.c,v 1.65 2023/04/20 08:28:04 skrll Exp $ */
/*
* Copyright (c) 2001, 2002, 2003 Wasabi Systems, Inc.
@@ -73,7 +73,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: iq80321_machdep.c,v 1.64 2021/08/17 22:00:28 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: iq80321_machdep.c,v 1.65 2023/04/20 08:28:04 skrll Exp $");
#include "opt_console.h"
#include "opt_ddb.h"
@@ -303,41 +303,29 @@ cpu_reboot(int howto, char *bootstr)
/* Static device mappings. */
static const struct pmap_devmap iq80321_devmap[] = {
- /*
- * Map the on-board devices VA == PA so that we can access them
- * with the MMU on or off.
- */
- {
- IQ80321_OBIO_BASE,
- IQ80321_OBIO_BASE,
- IQ80321_OBIO_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
-
- {
- IQ80321_IOW_VBASE,
- VERDE_OUT_XLATE_IO_WIN0_BASE,
- VERDE_OUT_XLATE_IO_WIN_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
-
- {
- IQ80321_80321_VBASE,
- VERDE_PMMR_BASE,
- VERDE_PMMR_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
-
- {
- 0,
- 0,
- 0,
- 0,
- 0,
- }
+ /*
+ * Map the on-board devices VA == PA so that we can access them
+ * with the MMU on or off.
+ */
+ DEVMAP_ENTRY(
+ IQ80321_OBIO_BASE,
+ IQ80321_OBIO_BASE,
+ IQ80321_OBIO_SIZE
+ ),
+
+ DEVMAP_ENTRY(
+ IQ80321_IOW_VBASE,
+ VERDE_OUT_XLATE_IO_WIN0_BASE,
+ VERDE_OUT_XLATE_IO_WIN_SIZE
+ ),
+
+ DEVMAP_ENTRY(
+ IQ80321_80321_VBASE,
+ VERDE_PMMR_BASE,
+ VERDE_PMMR_SIZE
+ ),
+
+ DEVMAP_ENTRY_END
};
static void
Index: src/sys/arch/evbarm/ixm1200/ixm1200_machdep.c
diff -u src/sys/arch/evbarm/ixm1200/ixm1200_machdep.c:1.66 src/sys/arch/evbarm/ixm1200/ixm1200_machdep.c:1.67
--- src/sys/arch/evbarm/ixm1200/ixm1200_machdep.c:1.66 Tue Aug 17 22:00:28 2021
+++ src/sys/arch/evbarm/ixm1200/ixm1200_machdep.c Thu Apr 20 08:28:05 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: ixm1200_machdep.c,v 1.66 2021/08/17 22:00:28 andvar Exp $ */
+/* $NetBSD: ixm1200_machdep.c,v 1.67 2023/04/20 08:28:05 skrll Exp $ */
/*
* Copyright (c) 2002, 2003
@@ -61,7 +61,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ixm1200_machdep.c,v 1.66 2021/08/17 22:00:28 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ixm1200_machdep.c,v 1.67 2023/04/20 08:28:05 skrll Exp $");
#include "opt_arm_debug.h"
#include "opt_console.h"
@@ -263,48 +263,32 @@ cpu_reboot(int howto, char *bootstr)
/* Static device mappings. */
static const struct pmap_devmap ixm1200_devmap[] = {
/* StrongARM System and Peripheral Registers */
- {
+ DEVMAP_ENTRY(
IXP12X0_SYS_VBASE,
IXP12X0_SYS_HWBASE,
- IXP12X0_SYS_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
+ IXP12X0_SYS_SIZE
+ ),
/* PCI Registers Accessible Through StrongARM Core */
- {
+ DEVMAP_ENTRY(
IXP12X0_PCI_VBASE, IXP12X0_PCI_HWBASE,
- IXP12X0_PCI_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
+ IXP12X0_PCI_SIZE
+ ),
/* PCI Registers Accessible Through I/O Cycle Access */
- {
+ DEVMAP_ENTRY(
IXP12X0_PCI_IO_VBASE, IXP12X0_PCI_IO_HWBASE,
- IXP12X0_PCI_IO_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
+ IXP12X0_PCI_IO_SIZE
+ ),
/* PCI Type0 Configuration Space */
- {
+ DEVMAP_ENTRY(
IXP12X0_PCI_TYPE0_VBASE, IXP12X0_PCI_TYPE0_HWBASE,
- IXP12X0_PCI_TYPE0_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
+ IXP12X0_PCI_TYPE0_SIZE
+ ),
/* PCI Type1 Configuration Space */
- {
+ DEVMAP_ENTRY(
IXP12X0_PCI_TYPE1_VBASE, IXP12X0_PCI_TYPE1_HWBASE,
- IXP12X0_PCI_TYPE1_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
- {
- 0,
- 0,
- 0,
- 0,
- 0
- },
+ IXP12X0_PCI_TYPE1_SIZE
+ ),
+ DEVMAP_ENTRY_END
};
/*
Index: src/sys/arch/evbarm/kobo/kobo_machdep.c
diff -u src/sys/arch/evbarm/kobo/kobo_machdep.c:1.8 src/sys/arch/evbarm/kobo/kobo_machdep.c:1.9
--- src/sys/arch/evbarm/kobo/kobo_machdep.c:1.8 Wed Jul 24 12:33:18 2019
+++ src/sys/arch/evbarm/kobo/kobo_machdep.c Thu Apr 20 08:28:05 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: kobo_machdep.c,v 1.8 2019/07/24 12:33:18 hkenken Exp $ */
+/* $NetBSD: kobo_machdep.c,v 1.9 2023/04/20 08:28:05 skrll Exp $ */
/*
* Copyright (c) 2002, 2003, 2005, 2010 Genetec Corporation.
@@ -102,7 +102,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kobo_machdep.c,v 1.8 2019/07/24 12:33:18 hkenken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kobo_machdep.c,v 1.9 2023/04/20 08:28:05 skrll Exp $");
#include "opt_evbarm_boardtype.h"
#include "opt_arm_debug.h"
@@ -193,24 +193,16 @@ int comcnmode = CONMODE;
* using the 2nd page tables.
*/
-#define _A(a) ((a) & ~L1_S_OFFSET)
-#define _S(s) (((s) + L1_S_SIZE - 1) & ~(L1_S_SIZE-1))
-
const struct pmap_devmap kobo_devmap[] = {
- {
+ DEVMAP_ENTRY(
/* for UART2, IOMUXC */
- .pd_va = _A(KOBO_IO_VBASE0),
- .pd_pa = _A(KOBO_IO_PBASE0),
- .pd_size = _S(L1_S_SIZE * 4),
- .pd_prot = VM_PROT_READ|VM_PROT_WRITE,
- .pd_cache = PTE_NOCACHE
- },
- {0}
+ KOBO_IO_VBASE0,
+ KOBO_IO_PBASE0,
+ L1_S_SIZE * 4
+ ),
+ DEVMAP_ENTRY_END
};
-#undef _A
-#undef _S
-
#ifndef MEMSTART
#define MEMSTART 0x70000000
#endif
Index: src/sys/arch/evbarm/lubbock/lubbock_machdep.c
diff -u src/sys/arch/evbarm/lubbock/lubbock_machdep.c:1.42 src/sys/arch/evbarm/lubbock/lubbock_machdep.c:1.43
--- src/sys/arch/evbarm/lubbock/lubbock_machdep.c:1.42 Tue Aug 17 22:00:29 2021
+++ src/sys/arch/evbarm/lubbock/lubbock_machdep.c Thu Apr 20 08:28:05 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: lubbock_machdep.c,v 1.42 2021/08/17 22:00:29 andvar Exp $ */
+/* $NetBSD: lubbock_machdep.c,v 1.43 2023/04/20 08:28:05 skrll Exp $ */
/*
* Copyright (c) 2002, 2003, 2005 Genetec Corporation. All rights reserved.
@@ -112,7 +112,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lubbock_machdep.c,v 1.42 2021/08/17 22:00:29 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lubbock_machdep.c,v 1.43 2023/04/20 08:28:05 skrll Exp $");
#include "opt_arm_debug.h"
#include "opt_console.h"
@@ -347,53 +347,41 @@ read_ttb(void)
* using the 2nd page tables.
*/
-#define _A(a) ((a) & ~L1_S_OFFSET)
-#define _S(s) (((s) + L1_S_SIZE - 1) & ~(L1_S_SIZE-1))
-
static const struct pmap_devmap lubbock_devmap[] = {
- {
+ DEVMAP_ENTRY{
LUBBOCK_OBIO_VBASE,
- _A(LUBBOCK_OBIO_PBASE),
- _S(LUBBOCK_OBIO_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
+ LUBBOCK_OBIO_PBASE,
+ LUBBOCK_OBIO_SIZE
},
- {
+ DEVMAP_ENTRY{
LUBBOCK_GPIO_VBASE,
- _A(PXA2X0_GPIO_BASE),
- _S(PXA250_GPIO_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
+ PXA2X0_GPIO_BASE,
+ PXA250_GPIO_SIZE
},
- {
+ DEVMAP_ENTRY{
LUBBOCK_CLKMAN_VBASE,
- _A(PXA2X0_CLKMAN_BASE),
- _S(PXA2X0_CLKMAN_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
+ PXA2X0_CLKMAN_BASE,
+ PXA2X0_CLKMAN_SIZE
},
- {
+ DEVMAP_ENTRY{
LUBBOCK_INTCTL_VBASE,
- _A(PXA2X0_INTCTL_BASE),
- _S(PXA2X0_INTCTL_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
+ PXA2X0_INTCTL_BASE,
+ PXA2X0_INTCTL_SIZE
},
- {
+ DEVMAP_ENTRY{
LUBBOCK_FFUART_VBASE,
- _A(PXA2X0_FFUART_BASE),
- _S(4 * COM_NPORTS),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
+ PXA2X0_FFUART_BASE,
+ 4 * COM_NPORTS
},
- {
+ DEVMAP_ENTRY{
LUBBOCK_BTUART_VBASE,
- _A(PXA2X0_BTUART_BASE),
- _S(4 * COM_NPORTS),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
+ PXA2X0_BTUART_BASE,
+ 4 * COM_NPORTS
},
- {0, 0, 0, 0,}
+ DEVMAP_ENTRY_END
};
-#undef _A
-#undef _S
-
/*
* vaddr_t initarm(...)
*
Index: src/sys/arch/evbarm/marvell/marvell_machdep.c
diff -u src/sys/arch/evbarm/marvell/marvell_machdep.c:1.37 src/sys/arch/evbarm/marvell/marvell_machdep.c:1.38
--- src/sys/arch/evbarm/marvell/marvell_machdep.c:1.37 Mon Aug 30 00:04:30 2021
+++ src/sys/arch/evbarm/marvell/marvell_machdep.c Thu Apr 20 08:28:05 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: marvell_machdep.c,v 1.37 2021/08/30 00:04:30 rin Exp $ */
+/* $NetBSD: marvell_machdep.c,v 1.38 2023/04/20 08:28:05 skrll Exp $ */
/*
* Copyright (c) 2007, 2008, 2010 KIYOHARA Takashi
* All rights reserved.
@@ -25,7 +25,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: marvell_machdep.c,v 1.37 2021/08/30 00:04:30 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: marvell_machdep.c,v 1.38 2023/04/20 08:28:05 skrll Exp $");
#include "opt_arm_debug.h"
#include "opt_console.h"
@@ -257,19 +257,14 @@ read_ttb(void)
* registers segment-aligned and segment-rounded in order to avoid
* using the 2nd page tables.
*/
-#define _A(a) ((a) & ~L1_S_OFFSET)
-#define _S(s) (((s) + L1_S_SIZE - 1) & ~(L1_S_SIZE-1))
static struct pmap_devmap marvell_devmap[] = {
- {
+ DEVMAP_ENTRY(
MARVELL_INTERREGS_VBASE,
- _A(MARVELL_INTERREGS_PBASE),
- _S(MVSOC_INTERREGS_SIZE),
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
-
- { 0, 0, 0, 0, 0 }
+ MARVELL_INTERREGS_PBASE,
+ MVSOC_INTERREGS_SIZE
+ ),
+ DEVMAP_ENTRY_END
};
extern uint32_t *u_boot_args[];
Index: src/sys/arch/evbarm/mini2440/mini2440_machdep.c
diff -u src/sys/arch/evbarm/mini2440/mini2440_machdep.c:1.19 src/sys/arch/evbarm/mini2440/mini2440_machdep.c:1.20
--- src/sys/arch/evbarm/mini2440/mini2440_machdep.c:1.19 Tue Aug 17 22:00:29 2021
+++ src/sys/arch/evbarm/mini2440/mini2440_machdep.c Thu Apr 20 08:28:05 2023
@@ -131,7 +131,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mini2440_machdep.c,v 1.19 2021/08/17 22:00:29 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mini2440_machdep.c,v 1.20 2023/04/20 08:28:05 skrll Exp $");
#include "opt_arm_debug.h"
#include "opt_console.h"
@@ -362,9 +362,6 @@ cpu_reboot(int howto, char *bootstr)
* using the 2nd page tables.
*/
-#define _A(a) ((a) & ~L1_S_OFFSET)
-#define _S(s) (((s) + L1_S_SIZE - 1) & ~(L1_S_SIZE-1))
-
#define _V(n) (MINI2440_IO_VBASE + (n) * L1_S_SIZE)
#define GPIO_VBASE _V(0)
@@ -374,37 +371,30 @@ cpu_reboot(int howto, char *bootstr)
static const struct pmap_devmap mini2440_devmap[] = {
/* GPIO registers */
- {
+ DEVMAP_ENTRY{
GPIO_VBASE,
- _A(S3C2440_GPIO_BASE),
- _S(S3C2440_GPIO_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ S3C2440_GPIO_BASE,
+ S3C2440_GPIO_SIZE
+ ),
+ DEVMAP_ENTRY({
INTCTL_VBASE,
- _A(S3C2440_INTCTL_BASE),
- _S(S3C2440_INTCTL_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ S3C2440_INTCTL_BASE,
+ S3C2440_INTCTL_SIZE
+ ),
+ DEVMAP_ENTRY({
CLKMAN_VBASE,
- _A(S3C2440_CLKMAN_BASE),
- _S(S3C24X0_CLKMAN_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- { /* UART registers for UART0, 1, 2. */
+ S3C2440_CLKMAN_BASE),
+ S3C24X0_CLKMAN_SIZE
+ ),
+ /* UART registers for UART0, 1, 2. */
+ DEVMAP_ENTRY({
UART_VBASE,
- _A(S3C2440_UART0_BASE),
- _S(S3C2440_UART_BASE(3) - S3C2440_UART0_BASE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
-
- { 0, 0, 0, 0 }
+ S3C2440_UART0_BASE),
+ S3C2440_UART_BASE(3) - S3C2440_UART0_BASE
+ ),
+ DEVMAP_ENTRY_END
};
-#undef _A
-#undef _S
-
static inline pd_entry_t *
read_ttb(void)
{
Index: src/sys/arch/evbarm/netwalker/netwalker_machdep.c
diff -u src/sys/arch/evbarm/netwalker/netwalker_machdep.c:1.26 src/sys/arch/evbarm/netwalker/netwalker_machdep.c:1.27
--- src/sys/arch/evbarm/netwalker/netwalker_machdep.c:1.26 Wed Jul 24 12:33:18 2019
+++ src/sys/arch/evbarm/netwalker/netwalker_machdep.c Thu Apr 20 08:28:05 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: netwalker_machdep.c,v 1.26 2019/07/24 12:33:18 hkenken Exp $ */
+/* $NetBSD: netwalker_machdep.c,v 1.27 2023/04/20 08:28:05 skrll Exp $ */
/*
* Copyright (c) 2002, 2003, 2005, 2010 Genetec Corporation.
@@ -102,7 +102,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netwalker_machdep.c,v 1.26 2019/07/24 12:33:18 hkenken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netwalker_machdep.c,v 1.27 2023/04/20 08:28:05 skrll Exp $");
#include "opt_evbarm_boardtype.h"
#include "opt_arm_debug.h"
@@ -207,24 +207,16 @@ int comcnmode = CONMODE;
* with kernel's page table which we build up in initarm().
*/
-#define _A(a) ((a) & ~L1_S_OFFSET)
-#define _S(s) (((s) + L1_S_SIZE - 1) & ~(L1_S_SIZE-1))
-
static const struct pmap_devmap netwalker_devmap[] = {
- {
+ DEVMAP_ENTRY(
/* for UART1, IOMUXC */
- .pd_va = _A(NETWALKER_IO_VBASE0),
- .pd_pa = _A(NETWALKER_IO_PBASE0),
- .pd_size = _S(L1_S_SIZE * 4),
- .pd_prot = VM_PROT_READ|VM_PROT_WRITE,
- .pd_cache = PTE_NOCACHE
- },
- {0}
+ NETWALKER_IO_VBASE0,
+ NETWALKER_IO_PBASE0,
+ L1_S_SIZE * 4
+ ),
+ DEVMAP_ENTRY_END
};
-#undef _A
-#undef _S
-
#ifndef MEMSTART
#define MEMSTART 0x90000000
#endif
Index: src/sys/arch/evbarm/nslu2/nslu2_machdep.c
diff -u src/sys/arch/evbarm/nslu2/nslu2_machdep.c:1.35 src/sys/arch/evbarm/nslu2/nslu2_machdep.c:1.36
--- src/sys/arch/evbarm/nslu2/nslu2_machdep.c:1.35 Tue Aug 17 22:00:29 2021
+++ src/sys/arch/evbarm/nslu2/nslu2_machdep.c Thu Apr 20 08:28:05 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: nslu2_machdep.c,v 1.35 2021/08/17 22:00:29 andvar Exp $ */
+/* $NetBSD: nslu2_machdep.c,v 1.36 2023/04/20 08:28:05 skrll Exp $ */
/*-
* Copyright (c) 2006 The NetBSD Foundation, Inc.
@@ -94,7 +94,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nslu2_machdep.c,v 1.35 2021/08/17 22:00:29 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nslu2_machdep.c,v 1.36 2023/04/20 08:28:05 skrll Exp $");
#include "opt_arm_debug.h"
#include "opt_console.h"
@@ -345,66 +345,48 @@ cpu_reboot(int howto, char *bootstr)
/* Static device mappings. */
static const struct pmap_devmap nslu2_devmap[] = {
/* Physical/Virtual address for I/O space */
- {
+ DEVMAP_ENTRY(
IXP425_IO_VBASE,
IXP425_IO_HWBASE,
- IXP425_IO_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
+ IXP425_IO_SIZE
+ ),
/* Expansion Bus */
- {
+ DEVMAP_ENTRY(
IXP425_EXP_VBASE,
IXP425_EXP_HWBASE,
- IXP425_EXP_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
+ IXP425_EXP_SIZE
+ ),
/* IXP425 PCI Configuration */
- {
+ DEVMAP_ENTRY(
IXP425_PCI_VBASE,
IXP425_PCI_HWBASE,
- IXP425_PCI_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
+ IXP425_PCI_SIZE
+ ),
/* SDRAM Controller */
- {
+ DEVMAP_ENTRY(
IXP425_MCU_VBASE,
IXP425_MCU_HWBASE,
- IXP425_MCU_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
+ IXP425_MCU_SIZE
+ ),
/* PCI Memory Space */
- {
+ DEVMAP_ENTRY(
IXP425_PCI_MEM_VBASE,
IXP425_PCI_MEM_HWBASE,
- IXP425_PCI_MEM_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
+ IXP425_PCI_MEM_SIZE
+ ),
/* Flash memory */
- {
+ DEVMAP_ENTRY(
NSLU2_FLASH_VBASE,
NSLU2_FLASH_HWBASE,
- NSLU2_FLASH_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
+ NSLU2_FLASH_SIZE
+ ),
- {
- 0,
- 0,
- 0,
- 0,
- 0,
- }
+ DEVMAP_ENTRY_END
};
/*
Index: src/sys/arch/evbarm/smdk2xx0/smdk2410_machdep.c
diff -u src/sys/arch/evbarm/smdk2xx0/smdk2410_machdep.c:1.45 src/sys/arch/evbarm/smdk2xx0/smdk2410_machdep.c:1.46
--- src/sys/arch/evbarm/smdk2xx0/smdk2410_machdep.c:1.45 Tue Aug 17 22:00:29 2021
+++ src/sys/arch/evbarm/smdk2xx0/smdk2410_machdep.c Thu Apr 20 08:28:05 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: smdk2410_machdep.c,v 1.45 2021/08/17 22:00:29 andvar Exp $ */
+/* $NetBSD: smdk2410_machdep.c,v 1.46 2023/04/20 08:28:05 skrll Exp $ */
/*
* Copyright (c) 2002, 2003 Fujitsu Component Limited
@@ -105,7 +105,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: smdk2410_machdep.c,v 1.45 2021/08/17 22:00:29 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: smdk2410_machdep.c,v 1.46 2023/04/20 08:28:05 skrll Exp $");
#include "opt_arm_debug.h"
#include "opt_console.h"
@@ -328,9 +328,6 @@ cpu_reboot(int howto, char *bootstr)
* using the 2nd page tables.
*/
-#define _A(a) ((a) & ~L1_S_OFFSET)
-#define _S(s) (((s) + L1_S_SIZE - 1) & ~(L1_S_SIZE-1))
-
#define _V(n) (SMDK2410_IO_VBASE + (n) * L1_S_SIZE)
#define GPIO_VBASE _V(0)
@@ -343,37 +340,31 @@ cpu_reboot(int howto, char *bootstr)
static const struct pmap_devmap smdk2410_devmap[] = {
/* GPIO registers */
- {
+ DEVMAP_ENTRY(
GPIO_VBASE,
- _A(S3C2410_GPIO_BASE),
- _S(S3C2410_GPIO_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ S3C2410_GPIO_BASE,
+ S3C2410_GPIO_SIZE
+ ),
+ DEVMAP_ENTRY(
INTCTL_VBASE,
- _A(S3C2410_INTCTL_BASE),
- _S(S3C2410_INTCTL_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ S3C2410_INTCTL_BASE,
+ S3C2410_INTCTL_SIZE
+ ),
+ DEVMAP_ENTRY(
CLKMAN_VBASE,
- _A(S3C2410_CLKMAN_BASE),
- _S(S3C24X0_CLKMAN_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- { /* UART registers for UART0, 1, 2. */
+ S3C2410_CLKMAN_BASE,
+ S3C24X0_CLKMAN_SIZE
+ ),
+ /* UART registers for UART0, 1, 2. */
+ DEVMAP_ENTRY(
UART_VBASE,
- _A(S3C2410_UART0_BASE),
- _S(S3C2410_UART_BASE(3) - S3C2410_UART0_BASE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
+ S3C2410_UART0_BASE,
+ S3C2410_UART_BASE(3) - S3C2410_UART0_BASE
+ ),
- { 0, 0, 0, 0 }
+ DEVMAP_ENTRY_END
};
-#undef _A
-#undef _S
-
static inline pd_entry_t *
read_ttb(void)
{
Index: src/sys/arch/evbarm/smdk2xx0/smdk2800_machdep.c
diff -u src/sys/arch/evbarm/smdk2xx0/smdk2800_machdep.c:1.50 src/sys/arch/evbarm/smdk2xx0/smdk2800_machdep.c:1.51
--- src/sys/arch/evbarm/smdk2xx0/smdk2800_machdep.c:1.50 Tue Aug 17 22:00:29 2021
+++ src/sys/arch/evbarm/smdk2xx0/smdk2800_machdep.c Thu Apr 20 08:28:05 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: smdk2800_machdep.c,v 1.50 2021/08/17 22:00:29 andvar Exp $ */
+/* $NetBSD: smdk2800_machdep.c,v 1.51 2023/04/20 08:28:05 skrll Exp $ */
/*
* Copyright (c) 2002, 2003, 2005 Fujitsu Component Limited
@@ -106,7 +106,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: smdk2800_machdep.c,v 1.50 2021/08/17 22:00:29 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: smdk2800_machdep.c,v 1.51 2023/04/20 08:28:05 skrll Exp $");
#include "opt_ddb.h"
#include "opt_console.h"
@@ -312,13 +312,12 @@ cpu_reboot(int howto, char *bootstr)
* at the same position.
*/
static const struct pmap_devmap smdk2800_devmap[] = {
- {
+ DEVMAP_ENTRY(
SMDK2800_IO_AREA_VBASE,
S3C2800_PERIPHERALS,
- S3C2800_PERIPHERALS_SIZE,
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- { 0, 0, 0, 0 }
+ S3C2800_PERIPHERALS_SIZE
+ ),
+ DEVMAP_ENTRY_END
};
#define ioreg_vaddr(pa) ((pa) - S3C2800_PERIPHERALS + SMDK2800_IO_AREA_VBASE)
Index: src/sys/arch/evbarm/tsarm/tsarm_machdep.c
diff -u src/sys/arch/evbarm/tsarm/tsarm_machdep.c:1.34 src/sys/arch/evbarm/tsarm/tsarm_machdep.c:1.35
--- src/sys/arch/evbarm/tsarm/tsarm_machdep.c:1.34 Sun Jul 3 19:58:42 2022
+++ src/sys/arch/evbarm/tsarm/tsarm_machdep.c Thu Apr 20 08:28:05 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: tsarm_machdep.c,v 1.34 2022/07/03 19:58:42 andvar Exp $ */
+/* $NetBSD: tsarm_machdep.c,v 1.35 2023/04/20 08:28:05 skrll Exp $ */
/*
* Copyright (c) 2001, 2002, 2003 Wasabi Systems, Inc.
@@ -73,7 +73,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tsarm_machdep.c,v 1.34 2022/07/03 19:58:42 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tsarm_machdep.c,v 1.35 2023/04/20 08:28:05 skrll Exp $");
#include "opt_arm_debug.h"
#include "opt_console.h"
@@ -306,50 +306,36 @@ cpu_reboot(int howto, char *bootstr)
/* Static device mappings. */
static const struct pmap_devmap tsarm_devmap[] = {
- {
+ DEVMAP_ENTRY(
EP93XX_AHB_VBASE,
EP93XX_AHB_HWBASE,
- EP93XX_AHB_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
+ EP93XX_AHB_SIZE
+ ),
- {
+ DEVMAP_ENTRY(
EP93XX_APB_VBASE,
EP93XX_APB_HWBASE,
- EP93XX_APB_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
+ EP93XX_APB_SIZE
+ ),
/*
* IO8 and IO16 space *must* be mapped contiguously with
* IO8_VA == IO16_VA - 64 Mbytes. ISA busmap driver depends
* on that!
*/
- {
+ DEVMAP_ENTRY(
TS7XXX_IO8_VBASE,
TS7XXX_IO8_HWBASE,
- TS7XXX_IO8_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
+ TS7XXX_IO8_SIZE
+ ),
- {
+ DEVMAP_ENTRY(
TS7XXX_IO16_VBASE,
TS7XXX_IO16_HWBASE,
- TS7XXX_IO16_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
-
- {
- 0,
- 0,
- 0,
- 0,
- 0,
- }
+ TS7XXX_IO16_SIZE
+ ),
+
+ DEVMAP_ENTRY_END
};
/*
Index: src/sys/arch/hpcarm/hpcarm/netbookpro_machdep.c
diff -u src/sys/arch/hpcarm/hpcarm/netbookpro_machdep.c:1.1 src/sys/arch/hpcarm/hpcarm/netbookpro_machdep.c:1.2
--- src/sys/arch/hpcarm/hpcarm/netbookpro_machdep.c:1.1 Sat Aug 6 03:53:40 2011
+++ src/sys/arch/hpcarm/hpcarm/netbookpro_machdep.c Thu Apr 20 08:28:06 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: netbookpro_machdep.c,v 1.1 2011/08/06 03:53:40 kiyohara Exp $ */
+/* $NetBSD: netbookpro_machdep.c,v 1.2 2023/04/20 08:28:06 skrll Exp $ */
/*
* Copyright (c) 2011 KIYOHARA Takashi
* All rights reserved.
@@ -25,7 +25,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbookpro_machdep.c,v 1.1 2011/08/06 03:53:40 kiyohara Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbookpro_machdep.c,v 1.2 2023/04/20 08:28:06 skrll Exp $");
#include <sys/systm.h>
#include <sys/device.h>
@@ -64,16 +64,14 @@ static int __unused enable_console(void
static void disable_consoles(void);
static void cn_nonprobe(struct consdev *);
-#define _A(a) ((a) & L1_S_FRAME)
-#define _S(s) (((s) + L1_S_SIZE - 1) & L1_S_FRAME)
const struct pmap_devmap machdep_devmap[] = {
- { /* Framebuffer */
+ /* Framebuffer */
+ DEVMAP_ENTRY(
0x14000000,
- _A(0x14000000),
- _S(0x00400000),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
+ 0x14000000,
+ 0x00400000
},
- { 0, 0, 0, 0, 0, }
+ DEVMAP_ENTRY_END
};
static struct pxa2x0_gpioconf netbookpro_boarddep_gpioconf[] = {
Index: src/sys/arch/hpcarm/hpcarm/pxa2x0_hpc_machdep.c
diff -u src/sys/arch/hpcarm/hpcarm/pxa2x0_hpc_machdep.c:1.30 src/sys/arch/hpcarm/hpcarm/pxa2x0_hpc_machdep.c:1.31
--- src/sys/arch/hpcarm/hpcarm/pxa2x0_hpc_machdep.c:1.30 Tue Aug 17 22:00:29 2021
+++ src/sys/arch/hpcarm/hpcarm/pxa2x0_hpc_machdep.c Thu Apr 20 08:28:06 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: pxa2x0_hpc_machdep.c,v 1.30 2021/08/17 22:00:29 andvar Exp $ */
+/* $NetBSD: pxa2x0_hpc_machdep.c,v 1.31 2023/04/20 08:28:06 skrll Exp $ */
/*
* Copyright (c) 1994-1998 Mark Brinicombe.
@@ -40,7 +40,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pxa2x0_hpc_machdep.c,v 1.30 2021/08/17 22:00:29 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pxa2x0_hpc_machdep.c,v 1.31 2023/04/20 08:28:06 skrll Exp $");
#include "opt_ddb.h"
#include "opt_dram_pages.h"
@@ -163,56 +163,45 @@ static void fakecninit(void);
#define PXA2X0_BTUART_VBASE 0xfd500000
#define PXA2X0_STUART_VBASE 0xfd600000
-#define _A(a) ((a) & L1_S_FRAME)
-#define _S(s) (((s) + L1_S_SIZE - 1) & L1_S_FRAME)
const struct pmap_devmap pxa2x0_devmap[] = {
- {
+ DEVMAP_ENTRY(
PXA2X0_GPIO_VBASE,
- _A(PXA2X0_GPIO_BASE),
- _S(PXA2X0_GPIO_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ PXA2X0_GPIO_BASE,
+ PXA2X0_GPIO_SIZE
+ ),
+ DEVMAP_ENTRY(
PXA2X0_CLKMAN_VBASE,
- _A(PXA2X0_CLKMAN_BASE),
- _S(PXA2X0_CLKMAN_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ PXA2X0_CLKMAN_BASE,
+ PXA2X0_CLKMAN_SIZE
+ ),
+ DEVMAP_ENTRY(
PXA2X0_INTCTL_VBASE,
- _A(PXA2X0_INTCTL_BASE),
- _S(PXA2X0_INTCTL_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ PXA2X0_INTCTL_BASE,
+ PXA2X0_INTCTL_SIZE
+ ),
+ DEVMAP_ENTRY(
PXA2X0_MEMCTL_VBASE,
- _A(PXA2X0_MEMCTL_BASE),
- _S(PXA2X0_MEMCTL_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ PXA2X0_MEMCTL_BASE,
+ PXA2X0_MEMCTL_SIZE
+ ),
+ DEVMAP_ENTRY(
PXA2X0_FFUART_VBASE,
- _A(PXA2X0_FFUART_BASE),
- _S(4 * COM_NPORTS),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ PXA2X0_FFUART_BASE,
+ 4 * COM_NPORTS
+ ),
+ DEVMAP_ENTRY(
PXA2X0_BTUART_VBASE,
- _A(PXA2X0_BTUART_BASE),
- _S(4 * COM_NPORTS),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ PXA2X0_BTUART_BASE,
+ 4 * COM_NPORTS
+ ),
+ DEVMAP_ENTRY(
PXA2X0_STUART_VBASE,
- _A(PXA2X0_STUART_BASE),
- _S(4 * COM_NPORTS),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
+ PXA2X0_STUART_BASE,
+ 4 * COM_NPORTS
+ ),
- { 0, 0, 0, 0, 0, }
+ DEVMAP_ENTRY_END
};
-#undef _A
-#undef _S
extern const struct pmap_devmap machdep_devmap[];
Index: src/sys/arch/hpcarm/hpcarm/sa11x0_hpc_machdep.c
diff -u src/sys/arch/hpcarm/hpcarm/sa11x0_hpc_machdep.c:1.21 src/sys/arch/hpcarm/hpcarm/sa11x0_hpc_machdep.c:1.22
--- src/sys/arch/hpcarm/hpcarm/sa11x0_hpc_machdep.c:1.21 Mon Oct 11 14:36:05 2021
+++ src/sys/arch/hpcarm/hpcarm/sa11x0_hpc_machdep.c Thu Apr 20 08:28:06 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: sa11x0_hpc_machdep.c,v 1.21 2021/10/11 14:36:05 rin Exp $ */
+/* $NetBSD: sa11x0_hpc_machdep.c,v 1.22 2023/04/20 08:28:06 skrll Exp $ */
/*
* Copyright (c) 1994-1998 Mark Brinicombe.
@@ -40,7 +40,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sa11x0_hpc_machdep.c,v 1.21 2021/10/11 14:36:05 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sa11x0_hpc_machdep.c,v 1.22 2023/04/20 08:28:06 skrll Exp $");
#include "opt_ddb.h"
#include "opt_dram_pages.h"
@@ -158,13 +158,12 @@ extern void *__sleep_ctx;
*/
static const struct pmap_devmap sa11x0_devmap[] = {
/* Physical/virtual address for UART #3. */
- {
+ DEVMAP_ENTRY(
SACOM3_VBASE,
SACOM3_BASE,
- 0x24,
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE
- },
- { 0, 0, 0, 0, 0 }
+ 0x24
+ ),
+ DEVMAP_ENTRY_END
};
/*
Index: src/sys/arch/iyonix/iyonix/iyonix_machdep.c
diff -u src/sys/arch/iyonix/iyonix/iyonix_machdep.c:1.31 src/sys/arch/iyonix/iyonix/iyonix_machdep.c:1.32
--- src/sys/arch/iyonix/iyonix/iyonix_machdep.c:1.31 Sun Jan 2 16:42:10 2022
+++ src/sys/arch/iyonix/iyonix/iyonix_machdep.c Thu Apr 20 08:28:06 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: iyonix_machdep.c,v 1.31 2022/01/02 16:42:10 christos Exp $ */
+/* $NetBSD: iyonix_machdep.c,v 1.32 2023/04/20 08:28:06 skrll Exp $ */
/*
* Copyright (c) 2001, 2002, 2003 Wasabi Systems, Inc.
@@ -73,7 +73,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: iyonix_machdep.c,v 1.31 2022/01/02 16:42:10 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: iyonix_machdep.c,v 1.32 2023/04/20 08:28:06 skrll Exp $");
#include "opt_ddb.h"
#include "opt_kgdb.h"
@@ -317,45 +317,31 @@ static const struct pmap_devmap iyonix_d
* Map the on-board devices VA == PA so that we can access them
* with the MMU on or off.
*/
- {
+ DEVMAP_ENTRY(
IYONIX_OBIO_BASE,
IYONIX_OBIO_BASE,
- IYONIX_OBIO_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
+ IYONIX_OBIO_SIZE
+ ),
- {
+ DEVMAP_ENTRY(
IYONIX_IOW_VBASE,
VERDE_OUT_XLATE_IO_WIN0_BASE,
- VERDE_OUT_XLATE_IO_WIN_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
+ VERDE_OUT_XLATE_IO_WIN_SIZE
+ ),
- {
+ DEVMAP_ENTRY(
IYONIX_80321_VBASE,
VERDE_PMMR_BASE,
- VERDE_PMMR_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
+ VERDE_PMMR_SIZE
+ ),
- {
+ DEVMAP_ENTRY(
IYONIX_FLASH_BASE,
IYONIX_FLASH_BASE,
- IYONIX_FLASH_SIZE,
- VM_PROT_READ|VM_PROT_WRITE,
- PTE_NOCACHE,
- },
-
- {
- 0,
- 0,
- 0,
- 0,
- 0,
- }
+ IYONIX_FLASH_SIZE
+ ),
+
+ DEVMAP_ENTRY_END
};
/* Read out the Machine ID from the flash, and stash it away for later use. */
Index: src/sys/arch/zaurus/zaurus/machdep.c
diff -u src/sys/arch/zaurus/zaurus/machdep.c:1.50 src/sys/arch/zaurus/zaurus/machdep.c:1.51
--- src/sys/arch/zaurus/zaurus/machdep.c:1.50 Sun Jul 3 19:58:42 2022
+++ src/sys/arch/zaurus/zaurus/machdep.c Thu Apr 20 08:28:06 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: machdep.c,v 1.50 2022/07/03 19:58:42 andvar Exp $ */
+/* $NetBSD: machdep.c,v 1.51 2023/04/20 08:28:06 skrll Exp $ */
/* $OpenBSD: zaurus_machdep.c,v 1.25 2006/06/20 18:24:04 todd Exp $ */
/*
@@ -107,7 +107,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.50 2022/07/03 19:58:42 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.51 2023/04/20 08:28:06 skrll Exp $");
#include "opt_ddb.h"
#include "opt_kgdb.h"
@@ -484,77 +484,61 @@ read_ttb(void)
* registers segment-aligned and segment-rounded in order to avoid
* using the 2nd page tables.
*/
-#define _A(a) ((a) & ~L1_S_OFFSET)
-#define _S(s) (((s) + L1_S_SIZE - 1) & ~(L1_S_SIZE-1))
-
static const struct pmap_devmap zaurus_devmap[] = {
- {
+ DEVMAP_ENTRY(
ZAURUS_GPIO_VBASE,
- _A(PXA2X0_GPIO_BASE),
- _S(PXA2X0_GPIO_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ PXA2X0_GPIO_BASE,
+ PXA2X0_GPIO_SIZE
+ ),
+ DEVMAP_ENTRY(
ZAURUS_CLKMAN_VBASE,
- _A(PXA2X0_CLKMAN_BASE),
- _S(PXA2X0_CLKMAN_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ PXA2X0_CLKMAN_BASE,
+ PXA2X0_CLKMAN_SIZE
+ ),
+ DEVMAP_ENTRY(
ZAURUS_INTCTL_VBASE,
- _A(PXA2X0_INTCTL_BASE),
- _S(PXA2X0_INTCTL_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ PXA2X0_INTCTL_BASE,
+ PXA2X0_INTCTL_SIZE
+ ),
+ DEVMAP_ENTRY(
ZAURUS_MEMCTL_VBASE,
- _A(PXA2X0_MEMCTL_BASE),
- _S(PXA2X0_MEMCTL_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ PXA2X0_MEMCTL_BASE,
+ PXA2X0_MEMCTL_SIZE
+ ),
+ DEVMAP_ENTRY(
ZAURUS_SCOOP0_VBASE,
- _A(C3000_SCOOP0_BASE),
- _S(SCOOP_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ C3000_SCOOP0_BASE,
+ SCOOP_SIZE
+ ),
+ DEVMAP_ENTRY(
ZAURUS_SCOOP1_VBASE,
- _A(C3000_SCOOP1_BASE),
- _S(SCOOP_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ C3000_SCOOP1_BASE,
+ SCOOP_SIZE
+ ),
+ DEVMAP_ENTRY(
ZAURUS_FFUART_VBASE,
- _A(PXA2X0_FFUART_BASE),
- _S(4 * COM_NPORTS),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ PXA2X0_FFUART_BASE,
+ 4 * COM_NPORTS
+ ),
+ DEVMAP_ENTRY(
ZAURUS_BTUART_VBASE,
- _A(PXA2X0_BTUART_BASE),
- _S(4 * COM_NPORTS),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ PXA2X0_BTUART_BASE,
+ 4 * COM_NPORTS
+ ),
+ DEVMAP_ENTRY(
ZAURUS_STUART_VBASE,
- _A(PXA2X0_STUART_BASE),
- _S(4 * COM_NPORTS),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
- {
+ PXA2X0_STUART_BASE,
+ 4 * COM_NPORTS
+ ),
+ DEVMAP_ENTRY(
ZAURUS_POWMAN_VBASE,
- _A(PXA2X0_POWMAN_BASE),
- _S(PXA2X0_POWMAN_SIZE),
- VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE,
- },
+ PXA2X0_POWMAN_BASE,
+ PXA2X0_POWMAN_SIZE
+ ),
- {0, 0, 0, 0, 0,}
+ DEVMAP_ENTRY_END
};
-#undef _A
-#undef _S
-
void green_on(int virt);
void
green_on(int virt)
Added files:
Index: src/sys/uvm/pmap/pmap_devmap.c
diff -u /dev/null src/sys/uvm/pmap/pmap_devmap.c:1.1
--- /dev/null Thu Apr 20 08:28:06 2023
+++ src/sys/uvm/pmap/pmap_devmap.c Thu Apr 20 08:28:02 2023
@@ -0,0 +1,173 @@
+/* $NetBSD: pmap_devmap.c,v 1.1 2023/04/20 08:28:02 skrll Exp $ */
+
+/*-
+ * Copyright (c) 2022 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Nick Hudson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__RCSID("$NetBSD: pmap_devmap.c,v 1.1 2023/04/20 08:28:02 skrll Exp $");
+
+
+#include <sys/param.h>
+#include <sys/types.h>
+
+#include <uvm/uvm.h>
+#include <uvm/uvm_extern.h>
+#include <uvm/pmap/pmap_devmap.h>
+
+
+static const struct pmap_devmap *pd_table;
+static vaddr_t pd_root;
+
+bool pmap_devmap_bootstrap_done = false;
+
+bool
+pmap_devmap_bootstrapped_p(void)
+{
+ return pmap_devmap_bootstrap_done;
+}
+
+
+vaddr_t
+pmap_devmap_root(void)
+{
+ return pd_root;
+}
+
+/*
+ * Register the devmap table. This is provided in case early console
+ * initialization needs to register mappings created by bootstrap code
+ * before pmap_devmap_bootstrap() is called.
+ */
+void
+pmap_devmap_register(const struct pmap_devmap *table)
+{
+
+ pd_table = table;
+}
+
+/*
+ * Map all of the static regions in the devmap table, and remember
+ * the devmap table so other parts of the kernel can look up entries
+ * later.
+ */
+void
+pmap_devmap_bootstrap(vaddr_t root, const struct pmap_devmap *table)
+{
+ UVMHIST_FUNC(__func__);
+ UVMHIST_CALLARGS(maphist, "(root=%#jx, table=%p)", root,
+ (uintptr_t)table, 0, 0);
+
+ bool done = false;
+
+ pd_root = root;
+ pd_table = table;
+
+ for (size_t i = 0; table[i].pd_size != 0; i++) {
+ const struct pmap_devmap * const pdp = &table[i];
+ const vaddr_t vmax = __type_max_u(vaddr_t);
+ const vaddr_t pmax = __type_max_u(paddr_t);
+
+ KASSERT(pdp->pd_size != 0);
+ KASSERTMSG(vmax - pdp->pd_va >= pdp->pd_size - 1,
+ "va %" PRIxVADDR " sz %" PRIxPSIZE, pdp->pd_va,
+ pdp->pd_size);
+ KASSERTMSG(pmax - pdp->pd_pa >= pdp->pd_size - 1,
+ "pa %" PRIxPADDR " sz %" PRIxPSIZE, pdp->pd_pa,
+ pdp->pd_size);
+ UVMHIST_LOG(maphist,
+ "pa %#jx -> %#jx @ va %#jx -> %#jx",
+ pdp->pd_pa, pdp->pd_pa + pdp->pd_size - 1,
+ pdp->pd_va, pdp->pd_va + pdp->pd_size - 1);
+
+ pmap_kenter_range(pdp->pd_va, pdp->pd_pa, pdp->pd_size,
+ pdp->pd_prot, pdp->pd_flags);
+ done = true;
+ }
+ if (done)
+ pmap_devmap_bootstrap_done = true;
+}
+
+/*
+ * Find the table entry that fully covers the physical address
+ * range [pa, pa + size)
+ */
+const struct pmap_devmap *
+pmap_devmap_find_pa(paddr_t pa, psize_t size)
+{
+ if (pd_table == NULL)
+ return NULL;
+
+ for (size_t i = 0; pd_table[i].pd_size != 0; i++) {
+ const paddr_t pd_pa = pd_table[i].pd_pa;
+ const psize_t pd_sz = pd_table[i].pd_size;
+
+ if (pa < pd_pa)
+ continue;
+
+ const psize_t pdiff = pa - pd_pa;
+
+ if (pd_sz < pdiff)
+ continue;
+
+ if (pd_sz - pdiff >= size)
+ return &pd_table[i];
+ }
+
+ return NULL;
+}
+
+/*
+ * Find the table entry that fully covers the virtual address
+ * range [va, va + size)
+ */
+const struct pmap_devmap *
+pmap_devmap_find_va(vaddr_t va, vsize_t size)
+{
+ if (pd_table == NULL)
+ return NULL;
+
+ for (size_t i = 0; pd_table[i].pd_size != 0; i++) {
+ const vaddr_t pd_va = pd_table[i].pd_va;
+ const vsize_t pd_sz = pd_table[i].pd_size;
+
+ if (va < pd_va)
+ continue;
+
+ const vsize_t vdiff = va - pd_va;
+
+ if (pd_sz < vdiff)
+ continue;
+
+ if (pd_sz - vdiff >= size)
+ return &pd_table[i];
+
+ }
+
+ return NULL;
+}
Index: src/sys/uvm/pmap/pmap_devmap.h
diff -u /dev/null src/sys/uvm/pmap/pmap_devmap.h:1.1
--- /dev/null Thu Apr 20 08:28:06 2023
+++ src/sys/uvm/pmap/pmap_devmap.h Thu Apr 20 08:28:02 2023
@@ -0,0 +1,66 @@
+/* $NetBSD: pmap_devmap.h,v 1.1 2023/04/20 08:28:02 skrll Exp $ */
+
+/*-
+ * Copyright (c) 2022 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Nick Hudson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+
+#ifndef _UVM_PMAP_DEVMAP_H_
+#define _UVM_PMAP_DEVMAP_H_
+
+typedef struct pmap_devmap {
+ vaddr_t pd_va; /* virtual address */
+ paddr_t pd_pa; /* physical address */
+ psize_t pd_size; /* size of region */
+ vm_prot_t pd_prot; /* protection code */
+ u_int pd_flags; /* flags for pmap_kenter_{pa,range} */
+} pmap_devmap_t;
+
+
+bool pmap_devmap_bootstrapped_p(void);
+void pmap_devmap_register(const struct pmap_devmap *);
+void pmap_devmap_bootstrap(vaddr_t, const struct pmap_devmap *);
+vaddr_t pmap_devmap_root(void);
+const struct pmap_devmap *pmap_devmap_find_pa(paddr_t, psize_t);
+const struct pmap_devmap *pmap_devmap_find_va(vaddr_t, vsize_t);
+
+#define DEVMAP_ENTRY_FLAGS(va, pa, sz, fl) \
+{ \
+ .pd_va = DEVMAP_ALIGN(va), \
+ .pd_pa = DEVMAP_ALIGN(pa), \
+ .pd_size = DEVMAP_SIZE(sz), \
+ .pd_prot = VM_PROT_READ | VM_PROT_WRITE, \
+ .pd_flags = (fl), \
+}
+
+#define DEVMAP_ENTRY(va, pa, sz) \
+ DEVMAP_ENTRY_FLAGS(va, pa, sz, DEVMAP_FLAGS)
+
+#define DEVMAP_ENTRY_END { 0 }
+
+#endif /* _UVM_PMAP_DEVMAP_H_ */