aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristof Provost <kp@FreeBSD.org>2019-10-15 23:21:52 +0000
committerKristof Provost <kp@FreeBSD.org>2019-10-15 23:21:52 +0000
commit1d95443818b4c50ad8e703b746f9c03c7c85251c (patch)
tree242d7dfa59fce53b71e00b4ff2088a0f0d46c91a
parentd61b6a41dd30a9b175c1c41cd3acf5028db021a1 (diff)
downloadsrc-1d95443818b4c50ad8e703b746f9c03c7c85251c.tar.gz
src-1d95443818b4c50ad8e703b746f9c03c7c85251c.zip
Generalize ARM specific comments in devmap
The comments in devmap are very ARM specific, this generalizes them for other architectures. Submitted by: Nicholas O'Brien <nickisobrien_gmail.com> Reviewed by: manu, philip Sponsored by: Axiado Differential Revision: https://reviews.freebsd.org/D22035
Notes
Notes: svn path=/head/; revision=353600
-rw-r--r--sys/kern/subr_devmap.c19
-rw-r--r--sys/sys/devmap.h12
2 files changed, 17 insertions, 14 deletions
diff --git a/sys/kern/subr_devmap.c b/sys/kern/subr_devmap.c
index 7dace37744e6..5eb3bb777fd8 100644
--- a/sys/kern/subr_devmap.c
+++ b/sys/kern/subr_devmap.c
@@ -46,7 +46,7 @@ static boolean_t devmap_bootstrap_done = false;
* The allocated-kva (akva) devmap table and metadata. Platforms can call
* devmap_add_entry() to add static device mappings to this table using
* automatically allocated virtual addresses carved out of the top of kva space.
- * Allocation begins immediately below the ARM_VECTORS_HIGH address.
+ * Allocation begins immediately below the max kernel virtual address.
*/
#define AKVA_DEVMAP_MAX_ENTRIES 32
static struct devmap_entry akva_devmap_entries[AKVA_DEVMAP_MAX_ENTRIES];
@@ -115,8 +115,8 @@ devmap_lastaddr()
* physical address and size and a virtual address allocated from the top of
* kva. This automatically registers the akva table on the first call, so all a
* platform has to do is call this routine to install as many mappings as it
- * needs and when initarm() calls devmap_bootstrap() it will pick up all the
- * entries in the akva table automatically.
+ * needs and when the platform-specific init function calls devmap_bootstrap()
+ * it will pick up all the entries in the akva table automatically.
*/
void
devmap_add_entry(vm_paddr_t pa, vm_size_t sz)
@@ -132,13 +132,13 @@ devmap_add_entry(vm_paddr_t pa, vm_size_t sz)
if (akva_devmap_idx == 0)
devmap_register_table(akva_devmap_entries);
+ /* Allocate virtual address space from the top of kva downwards. */
+#ifdef __arm__
/*
- * Allocate virtual address space from the top of kva downwards. If the
- * range being mapped is aligned and sized to 1MB boundaries then also
- * align the virtual address to the next-lower 1MB boundary so that we
- * end up with a nice efficient section mapping.
+ * If the range being mapped is aligned and sized to 1MB boundaries then
+ * also align the virtual address to the next-lower 1MB boundary so that
+ * we end with a nice efficient section mapping.
*/
-#ifdef __arm__
if ((pa & 0x000fffff) == 0 && (sz & 0x000fffff) == 0) {
akva_devmap_vaddr = trunc_1mpage(akva_devmap_vaddr - sz);
} else
@@ -170,7 +170,8 @@ devmap_register_table(const struct devmap_entry *table)
* the previously-registered table is used. This smooths transition from legacy
* code that fills in a local table then calls this function passing that table,
* and newer code that uses devmap_register_table() in platform-specific
- * code, then lets the common initarm() call this function with a NULL pointer.
+ * code, then lets the common platform-specific init function call this function
+ * with a NULL pointer.
*/
void
devmap_bootstrap(vm_offset_t l1pt, const struct devmap_entry *table)
diff --git a/sys/sys/devmap.h b/sys/sys/devmap.h
index 23e4bc664575..af84e5602c67 100644
--- a/sys/sys/devmap.h
+++ b/sys/sys/devmap.h
@@ -63,16 +63,18 @@ void devmap_add_entry(vm_paddr_t pa, vm_size_t sz);
/*
* Register a platform-local table to be bootstrapped by the generic
- * initarm() in arm/machdep.c. This is used by newer code that allocates and
- * fills in its own local table but does not have its own initarm() routine.
+ * platform-specific init function in <ARCH>/machdep.c. This is used by newer
+ * code that allocates and fills in its own local table but does not have its
+ * own platform-specific init routine.
*/
void devmap_register_table(const struct devmap_entry * _table);
/*
* Establish mappings for all the entries in the table. This is called
- * automatically from the common initarm() in arm/machdep.c, and also from the
- * custom initarm() routines in older code. If the table pointer is NULL, this
- * will use the table installed previously by devmap_register_table().
+ * automatically from the common platform-specific init function in
+ * <ARCH>/machdep.c, and also from the custom platform-specific init routines
+ * in older code. If the table pointer is NULL, this will use the table
+ * installed previously by devmap_register_table().
*/
void devmap_bootstrap(vm_offset_t _l1pt,
const struct devmap_entry *_table);