X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fum%2Fkernel%2Fphysmem.c;fp=arch%2Fum%2Fkernel%2Fphysmem.c;h=544665e04513b33b4106ccd564be392e22d09b8f;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=22c40d3085f7f838302c2a92e0e66728c60d86fd;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/arch/um/kernel/physmem.c b/arch/um/kernel/physmem.c index 22c40d308..544665e04 100644 --- a/arch/um/kernel/physmem.c +++ b/arch/um/kernel/physmem.c @@ -9,7 +9,6 @@ #include "linux/vmalloc.h" #include "linux/bootmem.h" #include "linux/module.h" -#include "linux/pfn.h" #include "asm/types.h" #include "asm/pgtable.h" #include "kern_util.h" @@ -69,7 +68,7 @@ static void insert_phys_mapping(struct phys_desc *desc) panic("Physical remapping for %p already present", desc->virt); - rb_link_node(&desc->rb, rb_parent(*n), n); + rb_link_node(&desc->rb, (*n)->rb_parent, n); rb_insert_color(&desc->rb, &phys_mappings); } @@ -226,7 +225,7 @@ EXPORT_SYMBOL(physmem_forget_descriptor); EXPORT_SYMBOL(physmem_remove_mapping); EXPORT_SYMBOL(physmem_subst_mapping); -int arch_free_page(struct page *page, int order) +void arch_free_page(struct page *page, int order) { void *virt; int i; @@ -235,8 +234,6 @@ int arch_free_page(struct page *page, int order) virt = __va(page_to_phys(page + i)); physmem_remove_mapping(virt); } - - return 0; } int is_remapped(void *virt) @@ -282,7 +279,7 @@ int init_maps(unsigned long physmem, unsigned long iomem, unsigned long highmem) for(i = 0; i < total_pages; i++){ p = &map[i]; - memset(p, 0, sizeof(struct page)); + set_page_count(p, 0); SetPageReserved(p); INIT_LIST_HEAD(&p->lru); } @@ -319,7 +316,9 @@ void map_memory(unsigned long virt, unsigned long phys, unsigned long len, } } -extern int __syscall_stub_start; +#define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT) + +extern int __syscall_stub_start, __binary_start; void setup_physmem(unsigned long start, unsigned long reserve_end, unsigned long len, unsigned long long highmem) @@ -409,8 +408,6 @@ unsigned long find_iomem(char *driver, unsigned long *len_out) *len_out = region->size; return(region->virt); } - - region = region->next; } return(0);