summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthorpej <thorpej@NetBSD.org>2003-06-15 18:18:16 +0000
committerthorpej <thorpej@NetBSD.org>2003-06-15 18:18:16 +0000
commitcf8a25bdfcb5ff42096bede86fdd3469b516a37d (patch)
tree333b8ae0ef523f543c4c9cccc71e6ae4311c8412
parentaf662325205944803ec838b2af546e7bcb1e5479 (diff)
Add another devmap routine that allows bootstrap code to register
a devmap reflecting mappings that are created by really early bootstrap code before pmap_devmap_bootstrap() is called.
-rw-r--r--sys/arch/arm/arm32/pmap.c17
-rw-r--r--sys/arch/arm/include/arm32/pmap.h3
2 files changed, 16 insertions, 4 deletions
diff --git a/sys/arch/arm/arm32/pmap.c b/sys/arch/arm/arm32/pmap.c
index 06818e5ea1b..6725ecca56d 100644
--- a/sys/arch/arm/arm32/pmap.c
+++ b/sys/arch/arm/arm32/pmap.c
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.c,v 1.135 2003/06/15 17:45:21 thorpej Exp $ */
+/* $NetBSD: pmap.c,v 1.136 2003/06/15 18:18:16 thorpej Exp $ */
/*
* Copyright 2003 Wasabi Systems, Inc.
@@ -210,7 +210,7 @@
#include <machine/param.h>
#include <arm/arm32/katelib.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.135 2003/06/15 17:45:21 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.136 2003/06/15 18:18:16 thorpej Exp $");
#ifdef PMAP_DEBUG
#define PDEBUG(_lev_,_stat_) \
@@ -4499,6 +4499,18 @@ pmap_map_chunk(vaddr_t l1pt, vaddr_t va, paddr_t pa, vsize_t size,
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.
@@ -4508,7 +4520,6 @@ pmap_devmap_bootstrap(vaddr_t l1pt, const struct pmap_devmap *table)
{
int i;
- KASSERT(pmap_devmap_table == NULL);
pmap_devmap_table = table;
for (i = 0; pmap_devmap_table[i].pd_size != 0; i++) {
diff --git a/sys/arch/arm/include/arm32/pmap.h b/sys/arch/arm/include/arm32/pmap.h
index 58cca7895af..b5f4e35a52e 100644
--- a/sys/arch/arm/include/arm32/pmap.h
+++ b/sys/arch/arm/include/arm32/pmap.h
@@ -1,4 +1,4 @@
-/* $NetBSD: pmap.h,v 1.73 2003/06/15 17:45:23 thorpej Exp $ */
+/* $NetBSD: pmap.h,v 1.74 2003/06/15 18:18:17 thorpej Exp $ */
/*
* Copyright (c) 2002, 2003 Wasabi Systems, Inc.
@@ -273,6 +273,7 @@ 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_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 *);
/*
* Special page zero routine for use by the idle loop (no cache cleans).