summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/alpha/mm/init.c10
-rw-r--r--arch/arm/mm/init.c10
-rw-r--r--arch/arm/mm/mm-armv.c4
-rw-r--r--arch/arm/mm/small_page.c6
-rw-r--r--arch/i386/mm/init.c10
-rw-r--r--arch/i386/mm/ioremap.c7
-rw-r--r--arch/ia64/ia32/binfmt_elf32.c4
-rw-r--r--arch/ia64/mm/init.c12
-rw-r--r--arch/m68k/atari/stram.c8
-rw-r--r--arch/m68k/mm/init.c10
-rw-r--r--arch/m68k/mm/memory.c2
-rw-r--r--arch/m68k/mm/motorola.c4
-rw-r--r--arch/mips/arc/memory.c4
-rw-r--r--arch/mips/dec/prom/memory.c4
-rw-r--r--arch/mips/mm/init.c21
-rw-r--r--arch/mips/mm/umap.c6
-rw-r--r--arch/mips64/arc/memory.c4
-rw-r--r--arch/mips64/mm/init.c21
-rw-r--r--arch/mips64/mm/umap.c6
-rw-r--r--arch/ppc/mm/init.c16
-rw-r--r--arch/s390/mm/init.c8
-rw-r--r--arch/sh/mm/init.c8
-rw-r--r--arch/sparc/kernel/sun4d_smp.c12
-rw-r--r--arch/sparc/kernel/sun4m_smp.c12
-rw-r--r--arch/sparc/mm/generic.c6
-rw-r--r--arch/sparc/mm/init.c8
-rw-r--r--arch/sparc/mm/io-unit.c2
-rw-r--r--arch/sparc/mm/iommu.c2
-rw-r--r--arch/sparc/mm/srmmu.c4
-rw-r--r--arch/sparc/mm/sun4c.c6
-rw-r--r--arch/sparc64/mm/fault.c2
-rw-r--r--arch/sparc64/mm/generic.c6
-rw-r--r--arch/sparc64/mm/init.c4
33 files changed, 123 insertions, 126 deletions
diff --git a/arch/alpha/mm/init.c b/arch/alpha/mm/init.c
index 84b608f45..2ab7941b2 100644
--- a/arch/alpha/mm/init.c
+++ b/arch/alpha/mm/init.c
@@ -141,7 +141,7 @@ pte_t
__bad_page(void)
{
memset((void *) EMPTY_PGE, 0, PAGE_SIZE);
- return pte_mkdirty(mk_pte(mem_map + MAP_NR(EMPTY_PGE), PAGE_SHARED));
+ return pte_mkdirty(mk_pte(virt_to_page(EMPTY_PGE), PAGE_SHARED));
}
void
@@ -325,8 +325,8 @@ free_initmem (void)
addr = (unsigned long)(&__init_begin);
for (; addr < (unsigned long)(&__init_end); addr += PAGE_SIZE) {
- ClearPageReserved(mem_map + MAP_NR(addr));
- set_page_count(mem_map+MAP_NR(addr), 1);
+ ClearPageReserved(virt_to_page(addr));
+ set_page_count(virt_to_page(addr), 1);
free_page(addr);
totalram_pages++;
}
@@ -339,8 +339,8 @@ void
free_initrd_mem(unsigned long start, unsigned long end)
{
for (; start < end; start += PAGE_SIZE) {
- ClearPageReserved(mem_map + MAP_NR(start));
- set_page_count(mem_map+MAP_NR(start), 1);
+ ClearPageReserved(virt_to_page(start));
+ set_page_count(virt_to_page(start), 1);
free_page(start);
totalram_pages++;
}
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
index 589653111..72eaa2e47 100644
--- a/arch/arm/mm/init.c
+++ b/arch/arm/mm/init.c
@@ -534,8 +534,8 @@ void __init paging_init(struct meminfo *mi)
memzero(zero_page, PAGE_SIZE);
memzero(bad_page, PAGE_SIZE);
- empty_zero_page = mem_map + MAP_NR(zero_page);
- empty_bad_page = mem_map + MAP_NR(bad_page);
+ empty_zero_page = virt_to_page(zero_page);
+ empty_bad_page = virt_to_page(bad_page);
empty_bad_pte_table = ((pte_t *)bad_table) + TABLE_OFFSET;
}
@@ -598,7 +598,7 @@ void __init mem_init(void)
static inline void free_area(unsigned long addr, unsigned long end, char *s)
{
unsigned int size = (end - addr) >> 10;
- struct page *page = mem_map + MAP_NR(addr);
+ struct page *page = virt_to_page(addr);
for (; addr < end; addr += PAGE_SIZE, page ++) {
ClearPageReserved(page);
@@ -632,8 +632,8 @@ void free_initrd_mem(unsigned long start, unsigned long end)
if (!keep_initrd) {
for (addr = start; addr < end; addr += PAGE_SIZE) {
- ClearPageReserved(mem_map + MAP_NR(addr));
- set_page_count(mem_map+MAP_NR(addr), 1);
+ ClearPageReserved(virt_to_page(addr));
+ set_page_count(virt_to_page(addr), 1);
free_page(addr);
totalram_pages++;
}
diff --git a/arch/arm/mm/mm-armv.c b/arch/arm/mm/mm-armv.c
index 1edbc35fd..e656a25d2 100644
--- a/arch/arm/mm/mm-armv.c
+++ b/arch/arm/mm/mm-armv.c
@@ -417,8 +417,8 @@ static inline void free_memmap(unsigned long start, unsigned long end)
start = __phys_to_virt(start);
end = __phys_to_virt(end);
- pg = PAGE_ALIGN((unsigned long)(mem_map + MAP_NR(start)));
- pgend = ((unsigned long)(mem_map + MAP_NR(end))) & PAGE_MASK;
+ pg = PAGE_ALIGN((unsigned long)(virt_to_page(start)));
+ pgend = ((unsigned long)(virt_to_page(end))) & PAGE_MASK;
start = __virt_to_phys(pg);
end = __virt_to_phys(pgend);
diff --git a/arch/arm/mm/small_page.c b/arch/arm/mm/small_page.c
index 40c91ba32..27fb0f663 100644
--- a/arch/arm/mm/small_page.c
+++ b/arch/arm/mm/small_page.c
@@ -142,12 +142,10 @@ no_page:
static void __free_small_page(unsigned long spage, struct order *order)
{
unsigned long flags;
- unsigned long nr;
struct page *page;
- nr = MAP_NR(spage);
- if (nr < max_mapnr) {
- page = mem_map + nr;
+ page = virt_to_page(spage);
+ if (VALID_PAGE(page)) {
/*
* The container-page must be marked Reserved
diff --git a/arch/i386/mm/init.c b/arch/i386/mm/init.c
index af72d1581..9ba2baa31 100644
--- a/arch/i386/mm/init.c
+++ b/arch/i386/mm/init.c
@@ -566,8 +566,6 @@ void __init mem_init(void)
#ifdef CONFIG_HIGHMEM
highmem_start_page = mem_map + highstart_pfn;
- /* cache the highmem_mapnr */
- highmem_mapnr = highstart_pfn;
max_mapnr = num_physpages = highend_pfn;
#else
max_mapnr = num_physpages = max_low_pfn;
@@ -642,8 +640,8 @@ void free_initmem(void)
addr = (unsigned long)(&__init_begin);
for (; addr < (unsigned long)(&__init_end); addr += PAGE_SIZE) {
- ClearPageReserved(mem_map + MAP_NR(addr));
- set_page_count(mem_map+MAP_NR(addr), 1);
+ ClearPageReserved(virt_to_page(addr));
+ set_page_count(virt_to_page(addr), 1);
free_page(addr);
totalram_pages++;
}
@@ -656,8 +654,8 @@ void free_initrd_mem(unsigned long start, unsigned long end)
if (start < end)
printk ("Freeing initrd memory: %ldk freed\n", (end - start) >> 10);
for (; start < end; start += PAGE_SIZE) {
- ClearPageReserved(mem_map + MAP_NR(start));
- set_page_count(mem_map+MAP_NR(start), 1);
+ ClearPageReserved(virt_to_page(start));
+ set_page_count(virt_to_page(start), 1);
free_page(start);
totalram_pages++;
}
diff --git a/arch/i386/mm/ioremap.c b/arch/i386/mm/ioremap.c
index cb4427672..ba5c2e7ba 100644
--- a/arch/i386/mm/ioremap.c
+++ b/arch/i386/mm/ioremap.c
@@ -121,15 +121,14 @@ void * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flag
*/
if (phys_addr < virt_to_phys(high_memory)) {
char *t_addr, *t_end;
- int i;
+ struct page *page;
t_addr = __va(phys_addr);
t_end = t_addr + (size - 1);
- for(i = MAP_NR(t_addr); i < MAP_NR(t_end); i++) {
- if(!PageReserved(mem_map + i))
+ for(page = virt_to_page(t_addr); page < virt_to_page(t_end); page++)
+ if(!PageReserved(page))
return NULL;
- }
}
/*
diff --git a/arch/ia64/ia32/binfmt_elf32.c b/arch/ia64/ia32/binfmt_elf32.c
index 6c63e33a7..770ef6363 100644
--- a/arch/ia64/ia32/binfmt_elf32.c
+++ b/arch/ia64/ia32/binfmt_elf32.c
@@ -81,9 +81,9 @@ void ia64_elf32_init(struct pt_regs *regs)
{
int nr;
- put_shared_page(current, mem_map + MAP_NR(ia32_gdt_table), IA32_PAGE_OFFSET);
+ put_shared_page(current, virt_to_page(ia32_gdt_table), IA32_PAGE_OFFSET);
if (PAGE_SHIFT <= IA32_PAGE_SHIFT)
- put_shared_page(current, mem_map + MAP_NR(ia32_tss), IA32_PAGE_OFFSET + PAGE_SIZE);
+ put_shared_page(current, virt_to_page(ia32_tss), IA32_PAGE_OFFSET + PAGE_SIZE);
nr = smp_processor_id();
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
index d911c91bf..8ddda7e11 100644
--- a/arch/ia64/mm/init.c
+++ b/arch/ia64/mm/init.c
@@ -173,8 +173,8 @@ free_initmem (void)
addr = (unsigned long) &__init_begin;
for (; addr < (unsigned long) &__init_end; addr += PAGE_SIZE) {
- clear_bit(PG_reserved, &mem_map[MAP_NR(addr)].flags);
- set_page_count(&mem_map[MAP_NR(addr)], 1);
+ clear_bit(PG_reserved, &virt_to_page(addr)->flags);
+ set_page_count(virt_to_page(addr), 1);
free_page(addr);
++totalram_pages;
}
@@ -188,8 +188,8 @@ free_initrd_mem(unsigned long start, unsigned long end)
if (start < end)
printk ("Freeing initrd memory: %ldkB freed\n", (end - start) >> 10);
for (; start < end; start += PAGE_SIZE) {
- clear_bit(PG_reserved, &mem_map[MAP_NR(start)].flags);
- set_page_count(&mem_map[MAP_NR(start)], 1);
+ clear_bit(PG_reserved, &virt_to_page(start)->flags);
+ set_page_count(virt_to_page(start), 1);
free_page(start);
++totalram_pages;
}
@@ -372,7 +372,7 @@ count_reserved_pages (u64 start, u64 end, void *arg)
unsigned long *count = arg;
struct page *pg;
- for (pg = mem_map + MAP_NR(start); pg < mem_map + MAP_NR(end); ++pg)
+ for (pg = virt_to_page(start); pg < virt_to_page(end); ++pg)
if (PageReserved(pg))
++num_reserved;
*count += num_reserved;
@@ -409,7 +409,7 @@ mem_init (void)
datasize >> 10, initsize >> 10);
/* install the gate page in the global page table: */
- put_gate_page(mem_map + MAP_NR(__start_gate_section), GATE_ADDR);
+ put_gate_page(virt_to_page(__start_gate_section), GATE_ADDR);
#ifndef CONFIG_IA64_SOFTSDV_HACKS
/*
diff --git a/arch/m68k/atari/stram.c b/arch/m68k/atari/stram.c
index 2b804b767..d0acdaaae 100644
--- a/arch/m68k/atari/stram.c
+++ b/arch/m68k/atari/stram.c
@@ -305,7 +305,7 @@ void __init atari_stram_reserve_pages(unsigned long start_mem)
/* always reserve first page of ST-RAM, the first 2 kB are
* supervisor-only! */
- set_bit( PG_reserved, &mem_map[MAP_NR(stram_start)].flags );
+ set_bit( PG_reserved, &virt_to_page(stram_start)->flags );
#ifdef CONFIG_STRAM_SWAP
if (!max_swap_size) {
@@ -699,7 +699,7 @@ static inline void unswap_pte(struct vm_area_struct * vma, unsigned long
if (pte_page(pte) != page)
return;
if (0 /* isswap */)
- mem_map[MAP_NR(pte_page(pte))].offset = page;
+ virt_to_page(pte_page(pte))->offset = page;
else
/* We will be removing the swap cache in a moment, so... */
set_pte(dir, pte_mkdirty(pte));
@@ -716,7 +716,7 @@ static inline void unswap_pte(struct vm_area_struct * vma, unsigned long
DPRINTK( "unswap_pte: replacing entry %08lx by new page %08lx",
entry, page );
set_pte(dir, pte_mkdirty(__mk_pte(page,vma->vm_page_prot)));
- atomic_inc(&mem_map[MAP_NR(page)].count);
+ atomic_inc(&virt_to_page(page)->count);
++vma->vm_mm->rss;
}
swap_free(entry);
@@ -1291,7 +1291,7 @@ static int get_gfp_order( unsigned long size )
/* reserve a range of pages in mem_map[] */
static void reserve_region( unsigned long addr, unsigned long end )
{
- mem_map_t *mapp = &mem_map[MAP_NR(addr)];
+ mem_map_t *mapp = virt_to_page(addr);
for( ; addr < end; addr += PAGE_SIZE, ++mapp )
set_bit( PG_reserved, &mapp->flags );
diff --git a/arch/m68k/mm/init.c b/arch/m68k/mm/init.c
index 4e6b28265..612d51eda 100644
--- a/arch/m68k/mm/init.c
+++ b/arch/m68k/mm/init.c
@@ -153,10 +153,10 @@ void __init mem_init(void)
#if 0
#ifndef CONFIG_SUN3
if (virt_to_phys ((void *)tmp) >= mach_max_dma_address)
- clear_bit(PG_DMA, &mem_map[MAP_NR(tmp)].flags);
+ clear_bit(PG_DMA, &virt_to_page(tmp)->flags);
#endif
#endif
- if (PageReserved(mem_map+MAP_NR(tmp))) {
+ if (PageReserved(virt_to_page(tmp))) {
if (tmp >= (unsigned long)&_text
&& tmp < (unsigned long)&_etext)
codepages++;
@@ -168,7 +168,7 @@ void __init mem_init(void)
continue;
}
#if 0
- set_page_count(mem_map+MAP_NR(tmp), 1);
+ set_page_count(virt_to_page(tmp), 1);
#ifdef CONFIG_BLK_DEV_INITRD
if (!initrd_start ||
(tmp < (initrd_start & PAGE_MASK) || tmp >= initrd_end))
@@ -202,8 +202,8 @@ void __init mem_init(void)
void free_initrd_mem(unsigned long start, unsigned long end)
{
for (; start < end; start += PAGE_SIZE) {
- ClearPageReserved(mem_map + MAP_NR(start));
- set_page_count(mem_map+MAP_NR(start), 1);
+ ClearPageReserved(virt_to_page(start));
+ set_page_count(virt_to_page(start), 1);
free_page(start);
totalram_pages++;
}
diff --git a/arch/m68k/mm/memory.c b/arch/m68k/mm/memory.c
index a0a5336ed..a3c4f38c5 100644
--- a/arch/m68k/mm/memory.c
+++ b/arch/m68k/mm/memory.c
@@ -93,7 +93,7 @@ pmd_t *get_pmd_slow(pgd_t *pgd, unsigned long offset)
typedef struct list_head ptable_desc;
static LIST_HEAD(ptable_list);
-#define PD_PTABLE(page) ((ptable_desc *)&mem_map[MAP_NR(page)])
+#define PD_PTABLE(page) ((ptable_desc *)virt_to_page(page))
#define PD_PAGE(ptable) (list_entry(ptable, struct page, list))
#define PD_MARKBITS(dp) (*(unsigned char *)&PD_PAGE(dp)->index)
diff --git a/arch/m68k/mm/motorola.c b/arch/m68k/mm/motorola.c
index 146dc7279..61cd918e7 100644
--- a/arch/m68k/mm/motorola.c
+++ b/arch/m68k/mm/motorola.c
@@ -293,8 +293,8 @@ void free_initmem(void)
addr = (unsigned long)&__init_begin;
for (; addr < (unsigned long)&__init_end; addr += PAGE_SIZE) {
- mem_map[MAP_NR(addr)].flags &= ~(1 << PG_reserved);
- set_page_count(mem_map+MAP_NR(addr), 1);
+ virt_to_page(addr)->flags &= ~(1 << PG_reserved);
+ set_page_count(virt_to_page(addr), 1);
free_page(addr);
}
}
diff --git a/arch/mips/arc/memory.c b/arch/mips/arc/memory.c
index 49de2ffa9..7988cfc39 100644
--- a/arch/mips/arc/memory.c
+++ b/arch/mips/arc/memory.c
@@ -228,8 +228,8 @@ prom_free_prom_memory (void)
addr = PAGE_OFFSET + p->base;
while (addr < p->base + p->size) {
- ClearPageReserved(mem_map + MAP_NR(addr));
- set_page_count(mem_map + MAP_NR(addr), 1);
+ ClearPageReserved(virt_to_page(addr));
+ set_page_count(virt_to_page(addr), 1);
free_page(addr);
addr += PAGE_SIZE;
freed += PAGE_SIZE;
diff --git a/arch/mips/dec/prom/memory.c b/arch/mips/dec/prom/memory.c
index 1025104ce..e54e78a25 100644
--- a/arch/mips/dec/prom/memory.c
+++ b/arch/mips/dec/prom/memory.c
@@ -149,8 +149,8 @@ void prom_free_prom_memory (void)
addr = PAGE_SIZE;
while (addr < end) {
- ClearPageReserved(mem_map + MAP_NR(addr));
- set_page_count(mem_map + MAP_NR(addr), 1);
+ ClearPageReserved(virt_to_page(addr));
+ set_page_count(virt_to_page(addr), 1);
free_page(addr);
addr += PAGE_SIZE;
}
diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c
index b1fde5108..a6f448e05 100644
--- a/arch/mips/mm/init.c
+++ b/arch/mips/mm/init.c
@@ -120,7 +120,8 @@ unsigned long empty_zero_page, zero_page_mask;
static inline unsigned long setup_zero_pages(void)
{
- unsigned long order, size, pg;
+ unsigned long order, size;
+ struct page *page;
switch (mips_cputype) {
case CPU_R4000SC:
@@ -137,11 +138,11 @@ static inline unsigned long setup_zero_pages(void)
if (!empty_zero_page)
panic("Oh boy, that early out of memory?");
- pg = MAP_NR(empty_zero_page);
- while (pg < MAP_NR(empty_zero_page) + (1 << order)) {
- set_bit(PG_reserved, &mem_map[pg].flags);
- set_page_count(mem_map + pg, 0);
- pg++;
+ page = virt_to_page(empty_zero_page);
+ while (page < virt_to_page(empty_zero_page + (PAGE_SIZE << order))) {
+ set_bit(PG_reserved, &page->flags);
+ set_page_count(page, 0);
+ page++;
}
size = PAGE_SIZE << order;
@@ -309,8 +310,8 @@ void __init mem_init(void)
void free_initrd_mem(unsigned long start, unsigned long end)
{
for (; start < end; start += PAGE_SIZE) {
- ClearPageReserved(mem_map + MAP_NR(start));
- set_page_count(mem_map+MAP_NR(start), 1);
+ ClearPageReserved(virt_to_page(start));
+ set_page_count(virt_to_page(start), 1);
free_page(start);
totalram_pages++;
}
@@ -329,8 +330,8 @@ void free_initmem(void)
addr = (unsigned long) &__init_begin;
while (addr < (unsigned long) &__init_end) {
- ClearPageReserved(mem_map + MAP_NR(addr));
- set_page_count(mem_map + MAP_NR(addr), 1);
+ ClearPageReserved(virt_to_page(addr));
+ set_page_count(virt_to_page(addr), 1);
free_page(addr);
totalram_pages++;
addr += PAGE_SIZE;
diff --git a/arch/mips/mm/umap.c b/arch/mips/mm/umap.c
index 003866ac4..465bec37b 100644
--- a/arch/mips/mm/umap.c
+++ b/arch/mips/mm/umap.c
@@ -115,10 +115,10 @@ void *vmalloc_uncached (unsigned long size)
static inline void free_pte(pte_t page)
{
if (pte_present(page)) {
- unsigned long nr = pte_pagenr(page);
- if (nr >= max_mapnr || PageReserved(mem_map+nr))
+ struct page *ptpage = pte_page(page);
+ if ((!VALID_PAGE(ptpage)) || PageReserved(ptpage))
return;
- __free_page(pte_page(page));
+ __free_page(ptpage);
if (current->mm->rss <= 0)
return;
current->mm->rss--;
diff --git a/arch/mips64/arc/memory.c b/arch/mips64/arc/memory.c
index 1e88dd6c7..d2ef95869 100644
--- a/arch/mips64/arc/memory.c
+++ b/arch/mips64/arc/memory.c
@@ -233,8 +233,8 @@ prom_free_prom_memory (void)
addr = PAGE_OFFSET + (unsigned long) (long) p->base;
end = addr + (unsigned long) (long) p->size;
while (addr < end) {
- ClearPageReserved(mem_map + MAP_NR(addr));
- set_page_count(mem_map + MAP_NR(addr), 1);
+ ClearPageReserved(virt_to_page(addr));
+ set_page_count(virt_to_page(addr), 1);
free_page(addr);
addr += PAGE_SIZE;
freed += PAGE_SIZE;
diff --git a/arch/mips64/mm/init.c b/arch/mips64/mm/init.c
index 223ca3e5e..f1d95c702 100644
--- a/arch/mips64/mm/init.c
+++ b/arch/mips64/mm/init.c
@@ -215,7 +215,8 @@ unsigned long empty_zero_page, zero_page_mask;
unsigned long setup_zero_pages(void)
{
- unsigned long order, size, pg;
+ unsigned long order, size;
+ struct page *page;
switch (mips_cputype) {
case CPU_R4000SC:
@@ -232,11 +233,11 @@ unsigned long setup_zero_pages(void)
if (!empty_zero_page)
panic("Oh boy, that early out of memory?");
- pg = MAP_NR(empty_zero_page);
- while (pg < MAP_NR(empty_zero_page) + (1 << order)) {
- set_bit(PG_reserved, &mem_map[pg].flags);
- set_page_count(mem_map + pg, 0);
- pg++;
+ page = virt_to_page(empty_zero_page);
+ while (page < virt_to_page(empty_zero_page + (PAGE_SIZE << order))) {
+ set_bit(PG_reserved, &page->flags);
+ set_page_count(page, 0);
+ page++;
}
size = PAGE_SIZE << order;
@@ -374,8 +375,8 @@ void __init mem_init(void)
void free_initrd_mem(unsigned long start, unsigned long end)
{
for (; start < end; start += PAGE_SIZE) {
- ClearPageReserved(mem_map + MAP_NR(start));
- set_page_count(mem_map+MAP_NR(start), 1);
+ ClearPageReserved(virt_to_page(start));
+ set_page_count(virt_to_page(start), 1);
free_page(start);
totalram_pages++;
}
@@ -396,8 +397,8 @@ free_initmem(void)
addr = (unsigned long)(&__init_begin);
while (addr < (unsigned long)&__init_end) {
page = PAGE_OFFSET | CPHYSADDR(addr);
- ClearPageReserved(mem_map + MAP_NR(page));
- set_page_count(mem_map + MAP_NR(page), 1);
+ ClearPageReserved(virt_to_page(page));
+ set_page_count(virt_to_page(page), 1);
free_page(page);
totalram_pages++;
addr += PAGE_SIZE;
diff --git a/arch/mips64/mm/umap.c b/arch/mips64/mm/umap.c
index b8ae542cc..9b0e7db1e 100644
--- a/arch/mips64/mm/umap.c
+++ b/arch/mips64/mm/umap.c
@@ -109,10 +109,10 @@ void *vmalloc_uncached (unsigned long size)
static inline void free_pte(pte_t page)
{
if (pte_present(page)) {
- unsigned long nr = pte_pagenr(page);
- if (nr >= max_mapnr || PageReserved(mem_map+nr))
+ struct page *ptpage = pte_page(page);
+ if ((!VALID_PAGE(ptpage)) || PageReserved(ptpage))
return;
- __free_page(pte_page(page));
+ __free_page(ptpage);
if (current->mm->rss <= 0)
return;
current->mm->rss--;
diff --git a/arch/ppc/mm/init.c b/arch/ppc/mm/init.c
index 16c3bc694..67257c50b 100644
--- a/arch/ppc/mm/init.c
+++ b/arch/ppc/mm/init.c
@@ -797,8 +797,8 @@ void __init free_initmem(void)
#define FREESEC(START,END,CNT) do { \
a = (unsigned long)(&START); \
for (; a < (unsigned long)(&END); a += PAGE_SIZE) { \
- clear_bit(PG_reserved, &mem_map[MAP_NR(a)].flags); \
- set_page_count(mem_map+MAP_NR(a), 1); \
+ clear_bit(PG_reserved, &virt_to_page(a)->flags); \
+ set_page_count(virt_to_page(a), 1); \
free_page(a); \
CNT++; \
} \
@@ -865,8 +865,8 @@ void __init free_initmem(void)
void free_initrd_mem(unsigned long start, unsigned long end)
{
for (; start < end; start += PAGE_SIZE) {
- ClearPageReserved(mem_map + MAP_NR(start));
- set_page_count(mem_map+MAP_NR(start), 1);
+ ClearPageReserved(virt_to_page(start));
+ set_page_count(virt_to_page(start), 1);
free_page(start);
totalram_pages++;
}
@@ -1187,7 +1187,7 @@ void __init mem_init(void)
make sure the ramdisk pages aren't reserved. */
if (initrd_start) {
for (addr = initrd_start; addr < initrd_end; addr += PAGE_SIZE)
- clear_bit(PG_reserved, &mem_map[MAP_NR(addr)].flags);
+ clear_bit(PG_reserved, &virt_to_page(addr)->flags);
}
#endif /* CONFIG_BLK_DEV_INITRD */
@@ -1196,17 +1196,17 @@ void __init mem_init(void)
if ( rtas_data )
for (addr = rtas_data; addr < PAGE_ALIGN(rtas_data+rtas_size) ;
addr += PAGE_SIZE)
- SetPageReserved(mem_map + MAP_NR(addr));
+ SetPageReserved(virt_to_page(addr));
#endif /* defined(CONFIG_ALL_PPC) */
if ( sysmap_size )
for (addr = (unsigned long)sysmap;
addr < PAGE_ALIGN((unsigned long)sysmap+sysmap_size) ;
addr += PAGE_SIZE)
- SetPageReserved(mem_map + MAP_NR(addr));
+ SetPageReserved(virt_to_page(addr));
for (addr = PAGE_OFFSET; addr < (unsigned long)end_of_DRAM;
addr += PAGE_SIZE) {
- if (!PageReserved(mem_map + MAP_NR(addr)))
+ if (!PageReserved(virt_to_page(addr)))
continue;
if (addr < (ulong) etext)
codepages++;
diff --git a/arch/s390/mm/init.c b/arch/s390/mm/init.c
index 4e30c015a..a45d02ed8 100644
--- a/arch/s390/mm/init.c
+++ b/arch/s390/mm/init.c
@@ -351,8 +351,8 @@ void free_initmem(void)
addr = (unsigned long)(&__init_begin);
for (; addr < (unsigned long)(&__init_end); addr += PAGE_SIZE) {
- ClearPageReserved(mem_map + MAP_NR(addr));
- set_page_count(mem_map+MAP_NR(addr), 1);
+ ClearPageReserved(virt_to_page(addr));
+ set_page_count(virt_to_page(addr), 1);
free_page(addr);
totalram_pages++;
}
@@ -366,8 +366,8 @@ void free_initrd_mem(unsigned long start, unsigned long end)
if (start < end)
printk ("Freeing initrd memory: %ldk freed\n", (end - start) >> 10);
for (; start < end; start += PAGE_SIZE) {
- ClearPageReserved(mem_map + MAP_NR(start));
- set_page_count(mem_map+MAP_NR(start), 1);
+ ClearPageReserved(virt_to_page(start));
+ set_page_count(virt_to_page(start), 1);
free_page(start);
totalram_pages++;
}
diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c
index f798ef968..5e0632a86 100644
--- a/arch/sh/mm/init.c
+++ b/arch/sh/mm/init.c
@@ -270,8 +270,8 @@ void free_initmem(void)
addr = (unsigned long)(&__init_begin);
for (; addr < (unsigned long)(&__init_end); addr += PAGE_SIZE) {
- ClearPageReserved(mem_map + MAP_NR(addr));
- set_page_count(mem_map+MAP_NR(addr), 1);
+ ClearPageReserved(virt_to_page(addr));
+ set_page_count(virt_to_page(addr), 1);
free_page(addr);
totalram_pages++;
}
@@ -283,8 +283,8 @@ void free_initrd_mem(unsigned long start, unsigned long end)
{
unsigned long p;
for (p = start; p < end; p += PAGE_SIZE) {
- ClearPageReserved(mem_map + MAP_NR(p));
- set_page_count(mem_map+MAP_NR(p), 1);
+ ClearPageReserved(virt_to_page(p));
+ set_page_count(virt_to_page(p), 1);
free_page(p);
totalram_pages++;
}
diff --git a/arch/sparc/kernel/sun4d_smp.c b/arch/sparc/kernel/sun4d_smp.c
index 1294ad31a..280392629 100644
--- a/arch/sparc/kernel/sun4d_smp.c
+++ b/arch/sparc/kernel/sun4d_smp.c
@@ -298,20 +298,20 @@ void __init smp4d_boot_cpus(void)
}
/* Free unneeded trap tables */
- ClearPageReserved(mem_map + MAP_NR(trapbase_cpu1));
- set_page_count(mem_map + MAP_NR(trapbase_cpu1), 1);
+ ClearPageReserved(virt_to_page(trapbase_cpu1));
+ set_page_count(virt_to_page(trapbase_cpu1), 1);
free_page((unsigned long)trapbase_cpu1);
totalram_pages++;
num_physpages++;
- ClearPageReserved(mem_map + MAP_NR(trapbase_cpu2));
- set_page_count(mem_map + MAP_NR(trapbase_cpu2), 1);
+ ClearPageReserved(virt_to_page(trapbase_cpu2));
+ set_page_count(virt_to_page(trapbase_cpu2), 1);
free_page((unsigned long)trapbase_cpu2);
totalram_pages++;
num_physpages++;
- ClearPageReserved(mem_map + MAP_NR(trapbase_cpu3));
- set_page_count(mem_map + MAP_NR(trapbase_cpu3), 1);
+ ClearPageReserved(virt_to_page(trapbase_cpu3));
+ set_page_count(virt_to_page(trapbase_cpu3), 1);
free_page((unsigned long)trapbase_cpu3);
totalram_pages++;
num_physpages++;
diff --git a/arch/sparc/kernel/sun4m_smp.c b/arch/sparc/kernel/sun4m_smp.c
index 60c37373e..d6c126d00 100644
--- a/arch/sparc/kernel/sun4m_smp.c
+++ b/arch/sparc/kernel/sun4m_smp.c
@@ -279,22 +279,22 @@ void __init smp4m_boot_cpus(void)
/* Free unneeded trap tables */
if (!(cpu_present_map & (1 << 1))) {
- ClearPageReserved(mem_map + MAP_NR(trapbase_cpu1));
- set_page_count(mem_map + MAP_NR(trapbase_cpu1), 1);
+ ClearPageReserved(virt_to_page(trapbase_cpu1));
+ set_page_count(virt_to_page(trapbase_cpu1), 1);
free_page((unsigned long)trapbase_cpu1);
totalram_pages++;
num_physpages++;
}
if (!(cpu_present_map & (1 << 2))) {
- ClearPageReserved(mem_map + MAP_NR(trapbase_cpu2));
- set_page_count(mem_map + MAP_NR(trapbase_cpu2), 1);
+ ClearPageReserved(virt_to_page(trapbase_cpu2));
+ set_page_count(virt_to_page(trapbase_cpu2), 1);
free_page((unsigned long)trapbase_cpu2);
totalram_pages++;
num_physpages++;
}
if (!(cpu_present_map & (1 << 3))) {
- ClearPageReserved(mem_map + MAP_NR(trapbase_cpu3));
- set_page_count(mem_map + MAP_NR(trapbase_cpu3), 1);
+ ClearPageReserved(virt_to_page(trapbase_cpu3));
+ set_page_count(virt_to_page(trapbase_cpu3), 1);
free_page((unsigned long)trapbase_cpu3);
totalram_pages++;
num_physpages++;
diff --git a/arch/sparc/mm/generic.c b/arch/sparc/mm/generic.c
index 9e599fd9d..ad74d0ed2 100644
--- a/arch/sparc/mm/generic.c
+++ b/arch/sparc/mm/generic.c
@@ -18,14 +18,14 @@ static inline void forget_pte(pte_t page)
if (pte_none(page))
return;
if (pte_present(page)) {
- unsigned long nr = pte_pagenr(page);
- if (nr >= max_mapnr || PageReserved(mem_map+nr))
+ struct page *ptpage = pte_page(page);
+ if ((!VALID_PAGE(ptpage)) || PageReserved(ptpage))
return;
/*
* free_page() used to be able to clear swap cache
* entries. We may now have to do it manually.
*/
- free_page_and_swap_cache(mem_map+nr);
+ free_page_and_swap_cache(ptpage);
return;
}
swap_free(pte_to_swp_entry(page));
diff --git a/arch/sparc/mm/init.c b/arch/sparc/mm/init.c
index ced31b91f..3d42e0c63 100644
--- a/arch/sparc/mm/init.c
+++ b/arch/sparc/mm/init.c
@@ -369,8 +369,8 @@ void __init free_mem_map_range(struct page *first, struct page *last)
prom_printf("[%p,%p] ", first, last);
#endif
while (first < last) {
- ClearPageReserved(mem_map + MAP_NR(first));
- set_page_count(mem_map + MAP_NR(first), 1);
+ ClearPageReserved(virt_to_page(first));
+ set_page_count(virt_to_page(first), 1);
free_page((unsigned long)first);
totalram_pages++;
num_physpages++;
@@ -542,7 +542,7 @@ void free_initmem (void)
struct page *p;
page = addr + phys_base;
- p = mem_map + MAP_NR(page);
+ p = virt_to_page(page);
ClearPageReserved(p);
set_page_count(p, 1);
@@ -559,7 +559,7 @@ void free_initrd_mem(unsigned long start, unsigned long end)
if (start < end)
printk ("Freeing initrd memory: %ldk freed\n", (end - start) >> 10);
for (; start < end; start += PAGE_SIZE) {
- struct page *p = mem_map + MAP_NR(start);
+ struct page *p = virt_to_page(start);
ClearPageReserved(p);
set_page_count(p, 1);
diff --git a/arch/sparc/mm/io-unit.c b/arch/sparc/mm/io-unit.c
index a370ea2d4..f395f06f5 100644
--- a/arch/sparc/mm/io-unit.c
+++ b/arch/sparc/mm/io-unit.c
@@ -190,7 +190,7 @@ static void iounit_map_dma_area(unsigned long va, __u32 addr, int len)
pmdp = pmd_offset(pgdp, addr);
ptep = pte_offset(pmdp, addr);
- set_pte(ptep, pte_val(mk_pte(mem_map + MAP_NR(page), dvma_prot)));
+ set_pte(ptep, pte_val(mk_pte(virt_to_page(page), dvma_prot)));
i = ((addr - IOUNIT_DMA_BASE) >> PAGE_SHIFT);
diff --git a/arch/sparc/mm/iommu.c b/arch/sparc/mm/iommu.c
index 5fde9a52a..e48128479 100644
--- a/arch/sparc/mm/iommu.c
+++ b/arch/sparc/mm/iommu.c
@@ -247,7 +247,7 @@ static void iommu_map_dma_area(unsigned long va, __u32 addr, int len)
pmdp = pmd_offset(pgdp, addr);
ptep = pte_offset(pmdp, addr);
- set_pte(ptep, mk_pte(mem_map + MAP_NR(page), dvma_prot));
+ set_pte(ptep, mk_pte(virt_to_page(page), dvma_prot));
if (ipte_cache != 0) {
iopte_val(*iopte++) = MKIOPTE(__pa(page));
} else {
diff --git a/arch/sparc/mm/srmmu.c b/arch/sparc/mm/srmmu.c
index c7f839f28..7e76841de 100644
--- a/arch/sparc/mm/srmmu.c
+++ b/arch/sparc/mm/srmmu.c
@@ -612,7 +612,7 @@ static void srmmu_free_task_struct(struct task_struct *tsk)
static void srmmu_get_task_struct(struct task_struct *tsk)
{
- atomic_inc(&mem_map[MAP_NR(tsk)].count);
+ atomic_inc(&virt_to_page(tsk)->count);
}
/* tsunami.S */
@@ -2153,7 +2153,7 @@ void __init ld_mmu_srmmu(void)
BTFIXUPSET_CALL(set_pte, srmmu_set_pte, BTFIXUPCALL_SWAPO0O1);
BTFIXUPSET_CALL(switch_mm, srmmu_switch_mm, BTFIXUPCALL_NORM);
- BTFIXUPSET_CALL(pte_pagenr, srmmu_pte_pagenr, BTFIXUPCALL_NORM);
+ BTFIXUPSET_CALL(sparc_pte_pagenr, srmmu_pte_pagenr, BTFIXUPCALL_NORM);
BTFIXUPSET_CALL(pmd_page, srmmu_pmd_page, BTFIXUPCALL_NORM);
BTFIXUPSET_CALL(pgd_page, srmmu_pgd_page, BTFIXUPCALL_NORM);
diff --git a/arch/sparc/mm/sun4c.c b/arch/sparc/mm/sun4c.c
index 55551c561..717269b68 100644
--- a/arch/sparc/mm/sun4c.c
+++ b/arch/sparc/mm/sun4c.c
@@ -1320,7 +1320,7 @@ static __u32 sun4c_get_scsi_one(char *bufptr, unsigned long len, struct sbus_bus
unsigned long page;
page = ((unsigned long)bufptr) & PAGE_MASK;
- if (MAP_NR(page) > max_mapnr) {
+ if (!VALID_PAGE(virt_to_page(page))) {
sun4c_flush_page(page);
return (__u32)bufptr; /* already locked */
}
@@ -2095,7 +2095,7 @@ static int sun4c_pmd_none(pmd_t pmd) { return !pmd_val(pmd); }
static int sun4c_pmd_bad(pmd_t pmd)
{
return (((pmd_val(pmd) & ~PAGE_MASK) != PGD_TABLE) ||
- (MAP_NR(pmd_val(pmd)) > max_mapnr));
+ (!VALID_PAGE(virt_to_page(pmd_val(pmd)))));
}
static int sun4c_pmd_present(pmd_t pmd)
@@ -2650,7 +2650,7 @@ void __init ld_mmu_sun4c(void)
BTFIXUPSET_CALL(set_pte, sun4c_set_pte, BTFIXUPCALL_STO1O0);
- BTFIXUPSET_CALL(pte_pagenr, sun4c_pte_pagenr, BTFIXUPCALL_NORM);
+ BTFIXUPSET_CALL(sparc_pte_pagenr, sun4c_pte_pagenr, BTFIXUPCALL_NORM);
#if PAGE_SHIFT <= 12
BTFIXUPSET_CALL(pmd_page, sun4c_pmd_page, BTFIXUPCALL_ANDNINT(PAGE_SIZE - 1));
#else
diff --git a/arch/sparc64/mm/fault.c b/arch/sparc64/mm/fault.c
index 63da67c8e..cd4b3365c 100644
--- a/arch/sparc64/mm/fault.c
+++ b/arch/sparc64/mm/fault.c
@@ -110,7 +110,7 @@ static unsigned int get_user_insn(unsigned long tpc)
if(!pte_present(pte))
goto out;
- pa = phys_base + (pte_pagenr(pte) << PAGE_SHIFT);
+ pa = phys_base + (sparc64_pte_pagenr(pte) << PAGE_SHIFT);
pa += (tpc & ~PAGE_MASK);
/* Use phys bypass so we don't pollute dtlb/dcache. */
diff --git a/arch/sparc64/mm/generic.c b/arch/sparc64/mm/generic.c
index 9a1ab1de3..c469c6062 100644
--- a/arch/sparc64/mm/generic.c
+++ b/arch/sparc64/mm/generic.c
@@ -18,14 +18,14 @@ static inline void forget_pte(pte_t page)
if (pte_none(page))
return;
if (pte_present(page)) {
- unsigned long nr = pte_pagenr(page);
- if (nr >= max_mapnr || PageReserved(mem_map+nr))
+ struct page *ptpage = pte_page(page);
+ if ((!VALID_PAGE(ptpage)) || PageReserved(ptpage))
return;
/*
* free_page() used to be able to clear swap cache
* entries. We may now have to do it manually.
*/
- free_page_and_swap_cache(mem_map+nr);
+ free_page_and_swap_cache(ptpage);
return;
}
swap_free(pte_to_swp_entry(page));
diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c
index d3c9e5036..63994c51d 100644
--- a/arch/sparc64/mm/init.c
+++ b/arch/sparc64/mm/init.c
@@ -1242,7 +1242,7 @@ void free_initmem (void)
page = (addr +
((unsigned long) __va(phys_base)) -
((unsigned long) &empty_zero_page));
- p = mem_map + MAP_NR(page);
+ p = virt_to_page(page);
ClearPageReserved(p);
set_page_count(p, 1);
@@ -1257,7 +1257,7 @@ void free_initrd_mem(unsigned long start, unsigned long end)
if (start < end)
printk ("Freeing initrd memory: %ldk freed\n", (end - start) >> 10);
for (; start < end; start += PAGE_SIZE) {
- struct page *p = mem_map + MAP_NR(start);
+ struct page *p = virt_to_page(start);
ClearPageReserved(p);
set_page_count(p, 1);