patch-2.4.23 linux-2.4.23/arch/ppc/mm/pgtable.c
Next file: linux-2.4.23/arch/ppc/mm/ppc_mmu.c
Previous file: linux-2.4.23/arch/ppc/mm/mmu_decl.h
Back to the patch index
Back to the overall index
- Lines: 90
- Date:
2003-11-28 10:26:19.000000000 -0800
- Orig file:
linux-2.4.22/arch/ppc/mm/pgtable.c
- Orig date:
2003-08-25 04:44:40.000000000 -0700
diff -urN linux-2.4.22/arch/ppc/mm/pgtable.c linux-2.4.23/arch/ppc/mm/pgtable.c
@@ -37,10 +37,11 @@
unsigned long ioremap_bot;
int io_bat_index;
-/* Maximum 768Mb of lowmem. On SMP, this value will be
- * trimmed down to whatever can be covered by BATs though.
+/* The maximum lowmem defaults to 768Mb, but this can be configured to
+ * another value. On SMP, this value will be trimmed down to whatever
+ * can be covered by BATs.
*/
-#define MAX_LOW_MEM 0x30000000
+#define MAX_LOW_MEM CONFIG_LOWMEM_SIZE
#ifndef CONFIG_SMP
struct pgtable_cache_struct quicklists;
@@ -67,16 +68,35 @@
#define p_mapped_by_bats(x) (0UL)
#endif /* HAVE_BATS */
+#ifdef CONFIG_PTE_64BIT
void *
-ioremap(unsigned long addr, unsigned long size)
+ioremap(phys_addr_t addr, unsigned long size)
+{
+ phys_addr_t addr64 = fixup_bigphys_addr(addr, size);;
+
+ return ioremap64(addr64, size);
+}
+
+void *
+ioremap64(unsigned long long addr, unsigned long size)
+{
+ return __ioremap(addr, size, _PAGE_NO_CACHE);
+}
+
+#else /* !CONFIG_PTE_64BIT */
+
+void *
+ioremap(phys_addr_t addr, unsigned long size)
{
return __ioremap(addr, size, _PAGE_NO_CACHE);
}
+#endif /* CONFIG_PTE_64BIT */
void *
-__ioremap(unsigned long addr, unsigned long size, unsigned long flags)
+__ioremap(phys_addr_t addr, unsigned long size, unsigned long flags)
{
- unsigned long p, v, i;
+ unsigned long v, i;
+ phys_addr_t p;
int err;
/*
@@ -101,7 +121,7 @@
*/
if ( mem_init_done && (p < virt_to_phys(high_memory)) )
{
- printk("__ioremap(): phys addr %0lx is RAM lr %p\n", p,
+ printk("__ioremap(): phys addr "PTE_FMT" is RAM lr %p\n", p,
__builtin_return_address(0));
return NULL;
}
@@ -152,7 +172,7 @@
}
out:
- return (void *) (v + (addr & ~PAGE_MASK));
+ return (void *) (v + ((unsigned long)addr & ~PAGE_MASK));
}
void iounmap(void *addr)
@@ -168,7 +188,7 @@
}
int
-map_page(unsigned long va, unsigned long pa, int flags)
+map_page(unsigned long va, phys_addr_t pa, int flags)
{
pmd_t *pd;
pte_t *pg;
@@ -308,7 +328,7 @@
* 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, unsigned long phys,
+void __init io_block_mapping(unsigned long virt, phys_addr_t phys,
unsigned int size, int flags)
{
int i;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)