aboutsummaryrefslogtreecommitdiff
path: root/i386/intel
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2021-12-28 22:05:41 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2021-12-28 22:10:40 +0100
commita7a099032d9f68d4338b021a6323689feacbc47a (patch)
tree87a7ff415a03976cf3a27c8dee535e31ca6e139f /i386/intel
parentabd21321841032248800bca9abc64867f7ba6b59 (diff)
downloadgnumach-a7a099032d9f68d4338b021a6323689feacbc47a.tar.gz
gnumach-a7a099032d9f68d4338b021a6323689feacbc47a.tar.bz2
gnumach-a7a099032d9f68d4338b021a6323689feacbc47a.zip
ddb: Fix accessing high memory
User processes loaded in high memory are not visible to ddb through the direct mapping. We can however read/write data through copy_from/to_phys.
Diffstat (limited to 'i386/intel')
-rw-r--r--i386/intel/pmap.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/i386/intel/pmap.h b/i386/intel/pmap.h
index 0ca03148..f24b3a71 100644
--- a/i386/intel/pmap.h
+++ b/i386/intel/pmap.h
@@ -494,6 +494,29 @@ extern void pmap_zero_page (phys_addr_t);
extern void pmap_copy_page (phys_addr_t, phys_addr_t);
/*
+ * copy_to_phys(src_addr_v, dst_addr_p, count)
+ *
+ * Copy virtual memory to physical memory
+ */
+extern void
+copy_to_phys(
+ vm_offset_t src_addr_v,
+ phys_addr_t dst_addr_p,
+ int count);
+
+/*
+ * copy_from_phys(src_addr_p, dst_addr_v, count)
+ *
+ * Copy physical memory to virtual memory. The virtual memory
+ * is assumed to be present (e.g. the buffer pool).
+ */
+extern void
+copy_from_phys(
+ phys_addr_t src_addr_p,
+ vm_offset_t dst_addr_v,
+ int count);
+
+/*
* kvtophys(addr)
*
* Convert a kernel virtual address to a physical address