diff options
author | jdike <jdike> | 2003-11-10 23:06:02 +0000 |
---|---|---|
committer | jdike <jdike> | 2003-11-10 23:06:02 +0000 |
commit | 703e4e55cef6b3abd50938157c92e00a315916e6 (patch) | |
tree | 4329326ad625711bbb8365d3732b8e25c3a79b1a | |
parent | 3ee8acc155cbeb43a71d42222e06230d6a20a2d5 (diff) | |
download | uml-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.c | 7 |
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; } |