diff options
-rw-r--r-- | arch/um/include/mem.h | 12 | ||||
-rw-r--r-- | arch/um/kernel/ksyms.c | 5 | ||||
-rw-r--r-- | arch/um/kernel/physmem.c | 35 | ||||
-rw-r--r-- | include/asm-um/page.h | 3 | ||||
-rw-r--r-- | include/asm-um/pgtable.h | 16 |
5 files changed, 23 insertions, 48 deletions
diff --git a/arch/um/include/mem.h b/arch/um/include/mem.h index 99d3ad4a03e5..e8ff0d8fa610 100644 --- a/arch/um/include/mem.h +++ b/arch/um/include/mem.h | |||
@@ -13,7 +13,17 @@ extern int physmem_subst_mapping(void *virt, int fd, __u64 offset, int w); | |||
13 | extern int is_remapped(void *virt); | 13 | extern int is_remapped(void *virt); |
14 | extern int physmem_remove_mapping(void *virt); | 14 | extern int physmem_remove_mapping(void *virt); |
15 | extern void physmem_forget_descriptor(int fd); | 15 | extern void physmem_forget_descriptor(int fd); |
16 | extern unsigned long to_phys(void *virt); | 16 | |
17 | extern unsigned long uml_physmem; | ||
18 | static inline unsigned long to_phys(void *virt) | ||
19 | { | ||
20 | return(((unsigned long) virt) - uml_physmem); | ||
21 | } | ||
22 | |||
23 | static inline void *to_virt(unsigned long phys) | ||
24 | { | ||
25 | return((void *) uml_physmem + phys); | ||
26 | } | ||
17 | 27 | ||
18 | #endif | 28 | #endif |
19 | 29 | ||
diff --git a/arch/um/kernel/ksyms.c b/arch/um/kernel/ksyms.c index 32d3076dd220..a97a72e516aa 100644 --- a/arch/um/kernel/ksyms.c +++ b/arch/um/kernel/ksyms.c | |||
@@ -34,14 +34,9 @@ EXPORT_SYMBOL(host_task_size); | |||
34 | EXPORT_SYMBOL(arch_validate); | 34 | EXPORT_SYMBOL(arch_validate); |
35 | EXPORT_SYMBOL(get_kmem_end); | 35 | EXPORT_SYMBOL(get_kmem_end); |
36 | 36 | ||
37 | EXPORT_SYMBOL(page_to_phys); | ||
38 | EXPORT_SYMBOL(phys_to_page); | ||
39 | EXPORT_SYMBOL(high_physmem); | 37 | EXPORT_SYMBOL(high_physmem); |
40 | EXPORT_SYMBOL(empty_zero_page); | 38 | EXPORT_SYMBOL(empty_zero_page); |
41 | EXPORT_SYMBOL(um_virt_to_phys); | 39 | EXPORT_SYMBOL(um_virt_to_phys); |
42 | EXPORT_SYMBOL(__virt_to_page); | ||
43 | EXPORT_SYMBOL(to_phys); | ||
44 | EXPORT_SYMBOL(to_virt); | ||
45 | EXPORT_SYMBOL(mode_tt); | 40 | EXPORT_SYMBOL(mode_tt); |
46 | EXPORT_SYMBOL(handle_page_fault); | 41 | EXPORT_SYMBOL(handle_page_fault); |
47 | EXPORT_SYMBOL(find_iomem); | 42 | EXPORT_SYMBOL(find_iomem); |
diff --git a/arch/um/kernel/physmem.c b/arch/um/kernel/physmem.c index a24e3b7f4bf0..ea670fcc8af5 100644 --- a/arch/um/kernel/physmem.c +++ b/arch/um/kernel/physmem.c | |||
@@ -248,16 +248,6 @@ unsigned long high_physmem; | |||
248 | 248 | ||
249 | extern unsigned long physmem_size; | 249 | extern unsigned long physmem_size; |
250 | 250 | ||
251 | void *to_virt(unsigned long phys) | ||
252 | { | ||
253 | return((void *) uml_physmem + phys); | ||
254 | } | ||
255 | |||
256 | unsigned long to_phys(void *virt) | ||
257 | { | ||
258 | return(((unsigned long) virt) - uml_physmem); | ||
259 | } | ||
260 | |||
261 | int init_maps(unsigned long physmem, unsigned long iomem, unsigned long highmem) | 251 | int init_maps(unsigned long physmem, unsigned long iomem, unsigned long highmem) |
262 | { | 252 | { |
263 | struct page *p, *map; | 253 | struct page *p, *map; |
@@ -298,31 +288,6 @@ int init_maps(unsigned long physmem, unsigned long iomem, unsigned long highmem) | |||
298 | return(0); | 288 | return(0); |
299 | } | 289 | } |
300 | 290 | ||
301 | struct page *phys_to_page(const unsigned long phys) | ||
302 | { | ||
303 | return(&mem_map[phys >> PAGE_SHIFT]); | ||
304 | } | ||
305 | |||
306 | struct page *__virt_to_page(const unsigned long virt) | ||
307 | { | ||
308 | return(&mem_map[__pa(virt) >> PAGE_SHIFT]); | ||
309 | } | ||
310 | |||
311 | phys_t page_to_phys(struct page *page) | ||
312 | { | ||
313 | return((page - mem_map) << PAGE_SHIFT); | ||
314 | } | ||
315 | |||
316 | pte_t mk_pte(struct page *page, pgprot_t pgprot) | ||
317 | { | ||
318 | pte_t pte; | ||
319 | |||
320 | pte_set_val(pte, page_to_phys(page), pgprot); | ||
321 | if(pte_present(pte)) | ||
322 | pte_mknewprot(pte_mknewpage(pte)); | ||
323 | return(pte); | ||
324 | } | ||
325 | |||
326 | /* Changed during early boot */ | 291 | /* Changed during early boot */ |
327 | static unsigned long kmem_top = 0; | 292 | static unsigned long kmem_top = 0; |
328 | 293 | ||
diff --git a/include/asm-um/page.h b/include/asm-um/page.h index bd850a249183..2c192abe9aeb 100644 --- a/include/asm-um/page.h +++ b/include/asm-um/page.h | |||
@@ -96,8 +96,7 @@ extern unsigned long uml_physmem; | |||
96 | 96 | ||
97 | #define __va_space (8*1024*1024) | 97 | #define __va_space (8*1024*1024) |
98 | 98 | ||
99 | extern unsigned long to_phys(void *virt); | 99 | #include "mem.h" |
100 | extern void *to_virt(unsigned long phys); | ||
101 | 100 | ||
102 | /* Cast to unsigned long before casting to void * to avoid a warning from | 101 | /* Cast to unsigned long before casting to void * to avoid a warning from |
103 | * mmap_kmem about cutting a long long down to a void *. Not sure that | 102 | * mmap_kmem about cutting a long long down to a void *. Not sure that |
diff --git a/include/asm-um/pgtable.h b/include/asm-um/pgtable.h index b48e0966ecd7..ed06170e0edd 100644 --- a/include/asm-um/pgtable.h +++ b/include/asm-um/pgtable.h | |||
@@ -326,14 +326,22 @@ static inline void set_pte(pte_t *pteptr, pte_t pteval) | |||
326 | } | 326 | } |
327 | #define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval) | 327 | #define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval) |
328 | 328 | ||
329 | extern phys_t page_to_phys(struct page *page); | ||
330 | |||
331 | /* | 329 | /* |
332 | * Conversion functions: convert a page and protection to a page entry, | 330 | * Conversion functions: convert a page and protection to a page entry, |
333 | * and a page entry and page directory to the page they refer to. | 331 | * and a page entry and page directory to the page they refer to. |
334 | */ | 332 | */ |
335 | 333 | ||
336 | extern pte_t mk_pte(struct page *page, pgprot_t pgprot); | 334 | #define phys_to_page(phys) pfn_to_page(phys_to_pfn(phys)) |
335 | #define __virt_to_page(virt) phys_to_page(__pa(virt)) | ||
336 | #define page_to_phys(page) pfn_to_phys(page_to_pfn(page)) | ||
337 | |||
338 | #define mk_pte(page, pgprot) \ | ||
339 | ({ pte_t pte; \ | ||
340 | \ | ||
341 | pte_set_val(pte, page_to_phys(page), (pgprot)); \ | ||
342 | if (pte_present(pte)) \ | ||
343 | pte_mknewprot(pte_mknewpage(pte)); \ | ||
344 | pte;}) | ||
337 | 345 | ||
338 | static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) | 346 | static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) |
339 | { | 347 | { |
@@ -410,8 +418,6 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) | |||
410 | #endif | 418 | #endif |
411 | #endif | 419 | #endif |
412 | 420 | ||
413 | extern struct page *phys_to_page(const unsigned long phys); | ||
414 | extern struct page *__virt_to_page(const unsigned long virt); | ||
415 | #define virt_to_page(addr) __virt_to_page((const unsigned long) addr) | 421 | #define virt_to_page(addr) __virt_to_page((const unsigned long) addr) |
416 | 422 | ||
417 | /* | 423 | /* |