diff options
Diffstat (limited to 'arch/microblaze/mm/pgtable.c')
| -rw-r--r-- | arch/microblaze/mm/pgtable.c | 55 | 
1 files changed, 17 insertions, 38 deletions
diff --git a/arch/microblaze/mm/pgtable.c b/arch/microblaze/mm/pgtable.c index 2820081b21a..784557fb28c 100644 --- a/arch/microblaze/mm/pgtable.c +++ b/arch/microblaze/mm/pgtable.c @@ -103,7 +103,7 @@ static void __iomem *__ioremap(phys_addr_t addr, unsigned long size,  		area = get_vm_area(size, VM_IOREMAP);  		if (area == NULL)  			return NULL; -		v = VMALLOC_VMADDR(area->addr); +		v = (unsigned long) area->addr;  	} else {  		v = (ioremap_bot -= size);  	} @@ -154,31 +154,13 @@ int map_page(unsigned long va, phys_addr_t pa, int flags)  		err = 0;  		set_pte_at(&init_mm, va, pg, pfn_pte(pa >> PAGE_SHIFT,  				__pgprot(flags))); -		if (mem_init_done) +		if (unlikely(mem_init_done))  			flush_HPTE(0, va, pmd_val(*pd));  			/* flush_HPTE(0, va, pg); */  	}  	return err;  } -void __init adjust_total_lowmem(void) -{ -/* TBD */ -#if 0 -	unsigned long max_low_mem = MAX_LOW_MEM; - -	if (total_lowmem > max_low_mem) { -		total_lowmem = max_low_mem; -#ifndef CONFIG_HIGHMEM -		printk(KERN_INFO "Warning, memory limited to %ld Mb, use " -				"CONFIG_HIGHMEM to reach %ld Mb\n", -				max_low_mem >> 20, total_memory >> 20); -		total_memory = total_lowmem; -#endif /* CONFIG_HIGHMEM */ -	} -#endif -} -  /*   * Map in all of physical memory starting at CONFIG_KERNEL_START.   */ @@ -206,24 +188,6 @@ void __init mapin_ram(void)  /* is x a power of 2? */  #define is_power_of_2(x)	((x) != 0 && (((x) & ((x) - 1)) == 0)) -/* - * Set up a mapping for a block of I/O. - * virt, phys, size must all be page-aligned. - * This should only be called before ioremap is called. - */ -void __init io_block_mapping(unsigned long virt, phys_addr_t phys, -			     unsigned int size, int flags) -{ -	int i; - -	if (virt > CONFIG_KERNEL_START && virt < ioremap_bot) -		ioremap_bot = ioremap_base = virt; - -	/* Put it in the page tables. */ -	for (i = 0; i < size; i += PAGE_SIZE) -		map_page(virt + i, phys + i, flags); -} -  /* Scan the real Linux page tables and return a PTE pointer for   * a virtual address in a context.   * Returns true (1) if PTE was found, zero otherwise.  The pointer to @@ -274,3 +238,18 @@ unsigned long iopa(unsigned long addr)  	return pa;  } + +__init_refok pte_t *pte_alloc_one_kernel(struct mm_struct *mm, +		unsigned long address) +{ +	pte_t *pte; +	if (mem_init_done) { +		pte = (pte_t *)__get_free_page(GFP_KERNEL | +					__GFP_REPEAT | __GFP_ZERO); +	} else { +		pte = (pte_t *)early_get_page(); +		if (pte) +			clear_page(pte); +	} +	return pte; +}  |