summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjdike <jdike>2003-11-10 23:06:02 +0000
committerjdike <jdike>2003-11-10 23:06:02 +0000
commit703e4e55cef6b3abd50938157c92e00a315916e6 (patch)
tree4329326ad625711bbb8365d3732b8e25c3a79b1a
parent3ee8acc155cbeb43a71d42222e06230d6a20a2d5 (diff)
downloaduml-history-703e4e55cef6b3abd50938157c92e00a315916e6.tar.gz
Fixed the kmem driver so that it doesn't assume that physical memory begins
at address 0.
-rw-r--r--drivers/char/mem.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/char/mem.c b/drivers/char/mem.c
index 8af0fdf..2d5d81f 100644
--- a/drivers/char/mem.c
+++ b/drivers/char/mem.c
@@ -209,6 +209,8 @@ static int mmap_mem(struct file * file, struct vm_area_struct * vma)
return 0;
}
+extern unsigned long uml_physmem;
+
/*
* This function reads the *virtual* memory as seen by the kernel.
*/
@@ -219,7 +221,8 @@ static ssize_t read_kmem(struct file *file, char *buf,
ssize_t read = 0;
ssize_t virtr = 0;
char * kbuf; /* k-addr because vread() takes vmlist_lock rwlock */
-
+
+ p += uml_physmem;
if (p < (unsigned long) high_memory) {
read = count;
if (count > (unsigned long) high_memory - p)
@@ -268,7 +271,7 @@ static ssize_t read_kmem(struct file *file, char *buf,
}
free_page((unsigned long)kbuf);
}
- *ppos = p;
+ *ppos = p - uml_physmem;
return virtr + read;
}