diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-08-08 22:17:26 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-08-08 22:17:26 +0000 |
commit | 984760dbf5e48f6224dfe9e26e03536b3d38b6cd (patch) | |
tree | a99674322e524c4c90009b3bdae5fab0eebf2094 /include | |
parent | a7ce7d5e94c98ef5b867f61b2ebecd563f4b6ec9 (diff) |
Merge with Linux 2.4.0-test6-pre8.
Diffstat (limited to 'include')
28 files changed, 48 insertions, 64 deletions
diff --git a/include/asm-alpha/pgalloc.h b/include/asm-alpha/pgalloc.h index 45e5b3b59..dc23ef74d 100644 --- a/include/asm-alpha/pgalloc.h +++ b/include/asm-alpha/pgalloc.h @@ -245,7 +245,7 @@ extern __inline__ pgd_t *get_pgd_slow(void) (PTRS_PER_PGD - USER_PTRS_PER_PGD) * sizeof(pgd_t)); pgd_val(ret[PTRS_PER_PGD]) - = pte_val(mk_pte(mem_map + MAP_NR(ret), PAGE_KERNEL)); + = pte_val(mk_pte(virt_to_page(ret), PAGE_KERNEL)); } return ret; } diff --git a/include/asm-alpha/pgtable.h b/include/asm-alpha/pgtable.h index 2614e8189..d68e18332 100644 --- a/include/asm-alpha/pgtable.h +++ b/include/asm-alpha/pgtable.h @@ -141,7 +141,7 @@ extern unsigned long __zero_page(void); #define BAD_PAGETABLE __bad_pagetable() #define BAD_PAGE __bad_page() -#define ZERO_PAGE(vaddr) (mem_map + MAP_NR(ZERO_PGE)) +#define ZERO_PAGE(vaddr) (virt_to_page(ZERO_PGE)) /* number of bits that fit into a memory pointer */ #define BITS_PER_PTR (8*sizeof(unsigned long)) @@ -209,8 +209,7 @@ extern inline void pmd_set(pmd_t * pmdp, pte_t * ptep) extern inline void pgd_set(pgd_t * pgdp, pmd_t * pmdp) { pgd_val(*pgdp) = _PAGE_TABLE | ((((unsigned long) pmdp) - PAGE_OFFSET) << (32-PAGE_SHIFT)); } -#define pte_pagenr(x) ((unsigned long)((pte_val(x) >> 32))) -#define pte_page(x) (mem_map+pte_pagenr(x)) +#define pte_page(x) (mem_map+(unsigned long)((pte_val(x) >> 32))) extern inline unsigned long pmd_page(pmd_t pmd) { return PAGE_OFFSET + ((pmd_val(pmd) & _PFN_MASK) >> (32-PAGE_SHIFT)); } diff --git a/include/asm-alpha/processor.h b/include/asm-alpha/processor.h index 6992e1445..81427025c 100644 --- a/include/asm-alpha/processor.h +++ b/include/asm-alpha/processor.h @@ -145,7 +145,7 @@ unsigned long get_wchan(struct task_struct *p); #define alloc_task_struct() \ ((struct task_struct *) __get_free_pages(GFP_KERNEL,1)) #define free_task_struct(p) free_pages((unsigned long)(p),1) -#define get_task_struct(tsk) atomic_inc(&mem_map[MAP_NR(tsk)].count) +#define get_task_struct(tsk) atomic_inc(&virt_to_page(tsk)->count) #define init_task (init_task_union.task) #define init_stack (init_task_union.stack) diff --git a/include/asm-arm/pgtable.h b/include/asm-arm/pgtable.h index b18e572d0..850ea4139 100644 --- a/include/asm-arm/pgtable.h +++ b/include/asm-arm/pgtable.h @@ -80,7 +80,7 @@ extern void __handle_bad_pmd_kernel(pmd_t *pmd); #define pte_clear(ptep) set_pte((ptep), __pte(0)) #ifndef CONFIG_DISCONTIGMEM -#define pte_pagenr(pte) ((unsigned long)(((pte_val(pte) - PHYS_OFFSET) >> PAGE_SHIFT))) +#define pte_page(x) (mem_map + (unsigned long)(((pte_val(pte) - PHYS_OFFSET) >> PAGE_SHIFT))) #else /* * I'm not happy with this - we needlessly convert a physical address @@ -88,7 +88,7 @@ extern void __handle_bad_pmd_kernel(pmd_t *pmd); * which, if __va and __pa are expensive causes twice the expense for * zero gain. --rmk */ -#define pte_pagenr(pte) MAP_NR(__va(pte_val(pte))) +#define pte_page(x) (mem_map + MAP_NR(__va(pte_val(pte)))) #endif #define pmd_none(pmd) (!pmd_val(pmd)) @@ -99,7 +99,6 @@ extern void __handle_bad_pmd_kernel(pmd_t *pmd); */ #define page_address(page) ((page)->virtual) #define pages_to_mb(x) ((x) >> (20 - PAGE_SHIFT)) -#define pte_page(x) (mem_map + pte_pagenr(x)) /* * Conversion functions: convert a page and protection to a page entry, diff --git a/include/asm-i386/pgtable.h b/include/asm-i386/pgtable.h index 33d5a73e5..94025647e 100644 --- a/include/asm-i386/pgtable.h +++ b/include/asm-i386/pgtable.h @@ -89,7 +89,7 @@ __asm__ __volatile__("invlpg %0": :"m" (*(char *) addr)) * for zero-mapped memory areas etc.. */ extern unsigned long empty_zero_page[1024]; -#define ZERO_PAGE(vaddr) (mem_map + MAP_NR(empty_zero_page)) +#define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page)) #endif /* !__ASSEMBLY__ */ diff --git a/include/asm-i386/processor.h b/include/asm-i386/processor.h index e9faddd62..769269192 100644 --- a/include/asm-i386/processor.h +++ b/include/asm-i386/processor.h @@ -422,7 +422,7 @@ unsigned long get_wchan(struct task_struct *p); #define THREAD_SIZE (2*PAGE_SIZE) #define alloc_task_struct() ((struct task_struct *) __get_free_pages(GFP_KERNEL,1)) #define free_task_struct(p) free_pages((unsigned long) (p), 1) -#define get_task_struct(tsk) atomic_inc(&mem_map[MAP_NR(tsk)].count) +#define get_task_struct(tsk) atomic_inc(&virt_to_page(tsk)->count) #define init_task (init_task_union.task) #define init_stack (init_task_union.stack) diff --git a/include/asm-ia64/pgtable.h b/include/asm-ia64/pgtable.h index 0efc7f155..9963ebb73 100644 --- a/include/asm-ia64/pgtable.h +++ b/include/asm-ia64/pgtable.h @@ -169,12 +169,6 @@ #define page_address(page) ((void *) (PAGE_OFFSET + (((page) - mem_map) << PAGE_SHIFT))) /* - * Given a PTE, return the index of the mem_map[] entry corresponding - * to the page frame the PTE. - */ -#define pte_pagenr(x) ((unsigned long) ((pte_val(x) & _PFN_MASK) >> PAGE_SHIFT)) - -/* * Now for some cache flushing routines. This is the kind of stuff * that can be very expensive, so try to avoid them whenever possible. */ @@ -250,7 +244,7 @@ extern pmd_t *ia64_bad_pagetable (void); #define pte_present(pte) (pte_val(pte) & (_PAGE_P | _PAGE_PROTNONE)) #define pte_clear(pte) (pte_val(*(pte)) = 0UL) /* pte_page() returns the "struct page *" corresponding to the PTE: */ -#define pte_page(pte) (mem_map + pte_pagenr(pte)) +#define pte_page(pte) (mem_map + (unsigned long) ((pte_val(pte) & _PFN_MASK) >> PAGE_SHIFT)) #define pmd_set(pmdp, ptep) (pmd_val(*(pmdp)) = __pa(ptep)) #define pmd_none(pmd) (!pmd_val(pmd)) @@ -418,7 +412,7 @@ do { \ * for zero-mapped memory areas etc.. */ extern unsigned long empty_zero_page[1024]; -#define ZERO_PAGE(vaddr) (mem_map + MAP_NR(empty_zero_page)) +#define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page)) # endif /* !__ASSEMBLY__ */ diff --git a/include/asm-ia64/processor.h b/include/asm-ia64/processor.h index fa3721bde..5024801ae 100644 --- a/include/asm-ia64/processor.h +++ b/include/asm-ia64/processor.h @@ -685,7 +685,7 @@ thread_saved_pc (struct thread_struct *t) #define alloc_task_struct() \ ((struct task_struct *) __get_free_pages(GFP_KERNEL, IA64_TASK_STRUCT_LOG_NUM_PAGES)) #define free_task_struct(p) free_pages((unsigned long)(p), IA64_TASK_STRUCT_LOG_NUM_PAGES) -#define get_task_struct(tsk) atomic_inc(&mem_map[MAP_NR(tsk)].count) +#define get_task_struct(tsk) atomic_inc(&virt_to_page(tsk)->count) #define init_task (init_task_union.task) #define init_stack (init_task_union.stack) diff --git a/include/asm-m68k/pgtable.h b/include/asm-m68k/pgtable.h index 3755cb2f4..bedaecc4e 100644 --- a/include/asm-m68k/pgtable.h +++ b/include/asm-m68k/pgtable.h @@ -172,7 +172,7 @@ extern pte_t * __bad_pagetable(void); #define BAD_PAGETABLE __bad_pagetable() #define BAD_PAGE __bad_page() -#define ZERO_PAGE(vaddr) (mem_map + MAP_NR(empty_zero_page)) +#define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page)) /* number of bits that fit into a memory pointer */ #define BITS_PER_PTR (8*sizeof(unsigned long)) @@ -228,7 +228,6 @@ extern inline void pgd_set(pgd_t * pgdp, pmd_t * pmdp) #define pte_none(pte) (!pte_val(pte)) #define pte_present(pte) (pte_val(pte) & (_PAGE_PRESENT | _PAGE_FAKE_SUPER)) #define pte_clear(ptep) ({ pte_val(*(ptep)) = 0; }) -#define pte_pagenr(pte) ((__pte_page(pte) - PAGE_OFFSET) >> PAGE_SHIFT) #define pmd_none(pmd) (!pmd_val(pmd)) #define pmd_bad(pmd) ((pmd_val(pmd) & _DESCTYPE_MASK) != _PAGE_TABLE) @@ -248,7 +247,7 @@ extern inline void pgd_set(pgd_t * pgdp, pmd_t * pmdp) /* Permanent address of a page. */ #define page_address(page) ((page)->virtual) #define __page_address(page) (PAGE_OFFSET + (((page) - mem_map) << PAGE_SHIFT)) -#define pte_page(pte) (mem_map+pte_pagenr(pte)) +#define pte_page(pte) (mem_map+((__pte_page(pte) - PAGE_OFFSET) >> PAGE_SHIFT)) #define pte_ERROR(e) \ printk("%s:%d: bad pte %p(%08lx).\n", __FILE__, __LINE__, &(e), pte_val(e)) diff --git a/include/asm-m68k/processor.h b/include/asm-m68k/processor.h index 4444e4f43..79d81adc2 100644 --- a/include/asm-m68k/processor.h +++ b/include/asm-m68k/processor.h @@ -141,7 +141,7 @@ unsigned long get_wchan(struct task_struct *p); ({ \ unsigned long eip = 0; \ if ((tsk)->thread.esp0 > PAGE_SIZE && \ - MAP_NR((tsk)->thread.esp0) < max_mapnr) \ + (VALID_PAGE(virt_to_page((tsk)->thread.esp0)))) \ eip = ((struct pt_regs *) (tsk)->thread.esp0)->pc; \ eip; }) #define KSTK_ESP(tsk) ((tsk) == current ? rdusp() : (tsk)->thread.usp) @@ -152,7 +152,7 @@ unsigned long get_wchan(struct task_struct *p); #define alloc_task_struct() \ ((struct task_struct *) __get_free_pages(GFP_KERNEL,1)) #define free_task_struct(p) free_pages((unsigned long)(p),1) -#define get_task_struct(tsk) atomic_inc(&mem_map[MAP_NR(tsk)].count) +#define get_task_struct(tsk) atomic_inc(&virt_to_page(tsk)->count) #define init_task (init_task_union.task) #define init_stack (init_task_union.stack) diff --git a/include/asm-mips/pgtable.h b/include/asm-mips/pgtable.h index 5de15976f..e0c24161a 100644 --- a/include/asm-mips/pgtable.h +++ b/include/asm-mips/pgtable.h @@ -212,7 +212,7 @@ extern unsigned long zero_page_mask; #define BAD_PAGETABLE __bad_pagetable() #define BAD_PAGE __bad_page() #define ZERO_PAGE(vaddr) \ - (mem_map + MAP_NR(empty_zero_page + (((unsigned long)(vaddr)) & zero_page_mask))) + (virt_to_page(empty_zero_page + (((unsigned long)(vaddr)) & zero_page_mask))) /* number of bits that fit into a memory pointer */ #define BITS_PER_PTR (8*sizeof(unsigned long)) @@ -237,11 +237,6 @@ extern pmd_t invalid_pte_table[PAGE_SIZE/sizeof(pmd_t)]; * Conversion functions: convert a page and protection to a page entry, * and a page entry and page directory to the page they refer to. */ -extern inline unsigned long pte_page(pte_t pte) -{ - return PAGE_OFFSET + (pte_val(pte) & PAGE_MASK); -} - extern inline unsigned long pmd_page(pmd_t pmd) { return pmd_val(pmd); @@ -304,12 +299,11 @@ extern inline int pgd_present(pgd_t pgd) { return 1; } extern inline void pgd_clear(pgd_t *pgdp) { } /* - * Permanent address of a page. On MIPS64 we never have highmem, so this + * Permanent address of a page. On MIPS we never have highmem, so this * is simple. */ #define page_address(page) ((page)->virtual) -#define pte_pagenr(x) ((unsigned long)((pte_val(x) >> PAGE_SHIFT))) -#define pte_page(x) (mem_map+pte_pagenr(x)) +#define pte_page(x) (mem_map+(unsigned long)((pte_val(x) >> PAGE_SHIFT))) /* * The following only work if pte_present() is true. diff --git a/include/asm-mips/processor.h b/include/asm-mips/processor.h index d6fb7526d..022bb1215 100644 --- a/include/asm-mips/processor.h +++ b/include/asm-mips/processor.h @@ -234,7 +234,7 @@ unsigned long get_wchan(struct task_struct *p); #define alloc_task_struct() \ ((struct task_struct *) __get_free_pages(GFP_KERNEL,1)) #define free_task_struct(p) free_pages((unsigned long)(p),1) -#define get_task_struct(tsk) atomic_inc(&mem_map[MAP_NR(tsk)].count) +#define get_task_struct(tsk) atomic_inc(&virt_to_page(tsk)->count) #define init_task (init_task_union.task) #define init_stack (init_task_union.stack) diff --git a/include/asm-mips64/pgtable.h b/include/asm-mips64/pgtable.h index ccabdb171..42cdcab75 100644 --- a/include/asm-mips64/pgtable.h +++ b/include/asm-mips64/pgtable.h @@ -241,7 +241,7 @@ extern unsigned long zero_page_mask; #define BAD_PMDTABLE __bad_pmd_table() #define BAD_PAGE __bad_page() #define ZERO_PAGE(vaddr) \ - (mem_map + MAP_NR(empty_zero_page + (((unsigned long)(vaddr)) & zero_page_mask))) + (virt_to_page(empty_zero_page + (((unsigned long)(vaddr)) & zero_page_mask))) /* number of bits that fit into a memory pointer */ #define BITS_PER_PTR (8*sizeof(unsigned long)) @@ -354,13 +354,13 @@ extern inline void pgd_clear(pgd_t *pgdp) */ #define page_address(page) ((page)->virtual) #ifndef CONFIG_DISCONTIGMEM -#define pte_pagenr(x) ((unsigned long)((pte_val(x) >> PAGE_SHIFT))) +#define pte_page(x) (mem_map+(unsigned long)((pte_val(x) >> PAGE_SHIFT))) #else -#define pte_pagenr(x) \ +#define mips64_pte_pagenr(x) \ (PLAT_NODE_DATA_STARTNR(PHYSADDR_TO_NID(pte_val(x))) + \ PLAT_NODE_DATA_LOCALNR(pte_val(x), PHYSADDR_TO_NID(pte_val(x)))) -#endif #define pte_page(x) (mem_map+pte_pagenr(x)) +#endif /* * The following only work if pte_present() is true. diff --git a/include/asm-mips64/processor.h b/include/asm-mips64/processor.h index 3e8cab4b5..618e8ad25 100644 --- a/include/asm-mips64/processor.h +++ b/include/asm-mips64/processor.h @@ -290,7 +290,7 @@ unsigned long get_wchan(struct task_struct *p); #define alloc_task_struct() \ ((struct task_struct *) __get_free_pages(GFP_KERNEL, 2)) #define free_task_struct(p) free_pages((unsigned long)(p), 2) -#define get_task_struct(tsk) atomic_inc(&mem_map[MAP_NR(tsk)].count) +#define get_task_struct(tsk) atomic_inc(&virt_to_page(tsk)->count) #define init_task (init_task_union.task) #define init_stack (init_task_union.stack) diff --git a/include/asm-ppc/pgtable.h b/include/asm-ppc/pgtable.h index 703dc409b..348404828 100644 --- a/include/asm-ppc/pgtable.h +++ b/include/asm-ppc/pgtable.h @@ -274,7 +274,7 @@ extern unsigned long ioremap_bot, ioremap_base; * for zero-mapped memory areas etc.. */ extern unsigned long empty_zero_page[1024]; -#define ZERO_PAGE(vaddr) (mem_map + MAP_NR(empty_zero_page)) +#define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page)) /* * BAD_PAGETABLE is used when we need a bogus page-table, while @@ -303,7 +303,6 @@ extern pte_t * __bad_pagetable(void); #define pte_none(pte) (!pte_val(pte)) #define pte_present(pte) (pte_val(pte) & _PAGE_PRESENT) #define pte_clear(ptep) do { pte_val(*(ptep)) = 0; } while (0) -#define pte_pagenr(x) ((unsigned long)((pte_val(x) >> PAGE_SHIFT))) #define pmd_none(pmd) (!pmd_val(pmd)) #define pmd_bad(pmd) ((pmd_val(pmd) & ~PAGE_MASK) != 0) @@ -315,7 +314,7 @@ extern pte_t * __bad_pagetable(void); */ #define page_address(page) ((page)->virtual) #define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT)) -#define pte_page(x) (mem_map+pte_pagenr(x)) +#define pte_page(x) (mem_map+(unsigned long)((pte_val(x) >> PAGE_SHIFT))) #ifndef __ASSEMBLY__ /* diff --git a/include/asm-ppc/processor.h b/include/asm-ppc/processor.h index a0a96d937..4fd684705 100644 --- a/include/asm-ppc/processor.h +++ b/include/asm-ppc/processor.h @@ -687,7 +687,7 @@ unsigned long get_wchan(struct task_struct *p); #define alloc_task_struct() \ ((struct task_struct *) __get_free_pages(GFP_KERNEL,1)) #define free_task_struct(p) free_pages((unsigned long)(p),1) -#define get_task_struct(tsk) atomic_inc(&mem_map[MAP_NR(tsk)].count) +#define get_task_struct(tsk) atomic_inc(&virt_to_page(tsk)->count) /* in process.c - for early bootup debug -- Cort */ int ll_printk(const char *, ...); diff --git a/include/asm-s390/pgtable.h b/include/asm-s390/pgtable.h index fd4792961..d6509ea2f 100644 --- a/include/asm-s390/pgtable.h +++ b/include/asm-s390/pgtable.h @@ -41,7 +41,7 @@ extern pgd_t swapper_pg_dir[] __attribute__ ((aligned (4096))); * for zero-mapped memory areas etc.. */ extern unsigned long empty_zero_page[1024]; -#define ZERO_PAGE(vaddr) (mem_map + MAP_NR(empty_zero_page)) +#define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page)) #endif /* !__ASSEMBLY__ */ /* Certain architectures need to do special things when PTEs @@ -272,7 +272,6 @@ extern inline int pte_none(pte_t pte) { return ((pte_val(pte) & (_PAGE extern inline int pte_present(pte_t pte) { return pte_val(pte) & _PAGE_PRESENT; } extern inline void pte_clear(pte_t *ptep) { pte_val(*ptep) = _PAGE_INVALID; } #define PTE_INIT(x) pte_clear(x) -extern inline int pte_pagenr(pte_t pte) { return ((unsigned long)((pte_val(pte) >> PAGE_SHIFT))); } extern inline int pmd_none(pmd_t pmd) { return pmd_val(pmd) & _PAGE_TABLE_INV; } extern inline int pmd_bad(pmd_t pmd) { return (pmd_val(pmd) == 0); } @@ -337,7 +336,7 @@ extern inline pte_t pte_modify(pte_t pte, pgprot_t newprot) { pte_val(pte) = (pte_val(pte) & PAGE_MASK) | pgprot_val(newprot); return pte; } #define page_address(page) ((page)->virtual) -#define pte_page(x) (mem_map+pte_pagenr(x)) +#define pte_page(x) (mem_map+(unsigned long)((pte_val(pte) >> PAGE_SHIFT))) #define pmd_page(pmd) \ ((unsigned long) __va(pmd_val(pmd) & PAGE_MASK)) diff --git a/include/asm-s390/processor.h b/include/asm-s390/processor.h index d55567d94..5cb89c8a3 100644 --- a/include/asm-s390/processor.h +++ b/include/asm-s390/processor.h @@ -149,7 +149,7 @@ unsigned long get_wchan(struct task_struct *p); #define alloc_task_struct() \ ((struct task_struct *) __get_free_pages(GFP_KERNEL,1)) #define free_task_struct(p) free_pages((unsigned long)(p),1) -#define get_task_struct(tsk) atomic_inc(&mem_map[MAP_NR(tsk)].count) +#define get_task_struct(tsk) atomic_inc(&virt_to_page(tsk)->count) #define init_task (init_task_union.task) #define init_stack (init_task_union.stack) diff --git a/include/asm-sh/pgtable.h b/include/asm-sh/pgtable.h index d7da3b727..867cf06ac 100644 --- a/include/asm-sh/pgtable.h +++ b/include/asm-sh/pgtable.h @@ -62,7 +62,7 @@ extern void flush_icache_page(struct vm_area_struct *vma, struct page *pg); * for zero-mapped memory areas etc.. */ extern unsigned long empty_zero_page[1024]; -#define ZERO_PAGE(vaddr) (mem_map + MAP_NR(empty_zero_page)) +#define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page)) #endif /* !__ASSEMBLY__ */ @@ -156,7 +156,6 @@ extern void __handle_bad_pmd_kernel(pmd_t * pmd); #define pte_none(x) (!pte_val(x)) #define pte_present(x) (pte_val(x) & (_PAGE_PRESENT | _PAGE_PROTNONE)) #define pte_clear(xp) do { set_pte(xp, __pte(0)); } while (0) -#define pte_pagenr(x) ((unsigned long)(((pte_val(x) -__MEMORY_START) >> PAGE_SHIFT))) #define pmd_none(x) (!pmd_val(x)) #define pmd_present(x) (pmd_val(x) & _PAGE_PRESENT) @@ -169,7 +168,7 @@ extern void __handle_bad_pmd_kernel(pmd_t * pmd); */ #define page_address(page) ((page)->virtual) #define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT)) -#define pte_page(x) (mem_map+pte_pagenr(x)) +#define pte_page(x) (mem_map+(unsigned long)(((pte_val(x) -__MEMORY_START) >> PAGE_SHIFT))) /* * The following only work if pte_present() is true. diff --git a/include/asm-sh/processor.h b/include/asm-sh/processor.h index cf59dbb88..77cbe9c1e 100644 --- a/include/asm-sh/processor.h +++ b/include/asm-sh/processor.h @@ -217,7 +217,7 @@ extern unsigned long get_wchan(struct task_struct *p); #define THREAD_SIZE (2*PAGE_SIZE) extern struct task_struct * alloc_task_struct(void); extern void free_task_struct(struct task_struct *); -#define get_task_struct(tsk) atomic_inc(&mem_map[MAP_NR(tsk)].count) +#define get_task_struct(tsk) atomic_inc(&virt_to_page(tsk)->count) #define init_task (init_task_union.task) #define init_stack (init_task_union.stack) diff --git a/include/asm-sparc/pgtable.h b/include/asm-sparc/pgtable.h index 5e1dc8b63..5fc507132 100644 --- a/include/asm-sparc/pgtable.h +++ b/include/asm-sparc/pgtable.h @@ -204,11 +204,11 @@ extern unsigned long empty_zero_page; #define SIZEOF_PTR_LOG2 2 -BTFIXUPDEF_CALL_CONST(unsigned long, pte_pagenr, pte_t) +BTFIXUPDEF_CALL_CONST(unsigned long, sparc_pte_pagenr, pte_t) BTFIXUPDEF_CALL_CONST(unsigned long, pmd_page, pmd_t) BTFIXUPDEF_CALL_CONST(unsigned long, pgd_page, pgd_t) -#define pte_pagenr(pte) BTFIXUP_CALL(pte_pagenr)(pte) +#define sparc_pte_pagenr(pte) BTFIXUP_CALL(sparc_pte_pagenr)(pte) #define pmd_page(pmd) BTFIXUP_CALL(pmd_page)(pmd) #define pgd_page(pgd) BTFIXUP_CALL(pgd_page)(pgd) @@ -308,7 +308,7 @@ BTFIXUPDEF_CALL_CONST(pte_t, pte_mkyoung, pte_t) /* Permanent address of a page. */ #define page_address(page) ((page)->virtual) -#define pte_page(x) (mem_map+pte_pagenr(x)) +#define pte_page(x) (mem_map+sparc_pte_pagenr(x)) /* * Conversion functions: convert a page and protection to a page entry, diff --git a/include/asm-sparc64/pgalloc.h b/include/asm-sparc64/pgalloc.h index 41cd7a7dd..b81b9cee4 100644 --- a/include/asm-sparc64/pgalloc.h +++ b/include/asm-sparc64/pgalloc.h @@ -125,7 +125,7 @@ extern struct pgtable_cache_struct { extern __inline__ void free_pgd_fast(pgd_t *pgd) { - struct page *page = mem_map + MAP_NR(pgd); + struct page *page = virt_to_page(pgd); if (!page->pprev_hash) { (unsigned long *)page->next_hash = pgd_quicklist; diff --git a/include/asm-sparc64/pgtable.h b/include/asm-sparc64/pgtable.h index 6a03c66d8..3318578f3 100644 --- a/include/asm-sparc64/pgtable.h +++ b/include/asm-sparc64/pgtable.h @@ -177,7 +177,7 @@ extern inline pte_t pte_modify(pte_t orig_pte, pgprot_t new_prot) (pmd_val(*(pmdp)) = (__pa((unsigned long) (ptep)) >> 11UL)) #define pgd_set(pgdp, pmdp) \ (pgd_val(*(pgdp)) = (__pa((unsigned long) (pmdp)) >> 11UL)) -#define pte_pagenr(pte) (((unsigned long) ((pte_val(pte)&~PAGE_OFFSET)-phys_base)>>PAGE_SHIFT)) +#define sparc64_pte_pagenr(pte) (((unsigned long) ((pte_val(pte)&~PAGE_OFFSET)-phys_base)>>PAGE_SHIFT)) #define pmd_page(pmd) ((unsigned long) __va((pmd_val(pmd)<<11UL))) #define pgd_page(pgd) ((unsigned long) __va((pgd_val(pgd)<<11UL))) #define pte_none(pte) (!pte_val(pte)) @@ -209,7 +209,7 @@ extern inline pte_t pte_modify(pte_t orig_pte, pgprot_t new_prot) #define __page_address(page) ((page)->virtual) #define page_address(page) ({ __page_address(page); }) -#define pte_page(x) (mem_map+pte_pagenr(x)) +#define pte_page(x) (mem_map+sparc64_pte_pagenr(x)) /* Be very careful when you change these three, they are delicate. */ #define pte_mkyoung(pte) (__pte(pte_val(pte) | _PAGE_ACCESSED | _PAGE_R)) diff --git a/include/asm-sparc64/processor.h b/include/asm-sparc64/processor.h index b7b124a56..37433eace 100644 --- a/include/asm-sparc64/processor.h +++ b/include/asm-sparc64/processor.h @@ -259,7 +259,7 @@ __out: __ret; \ /* Allocation and freeing of task_struct and kernel stack. */ #define alloc_task_struct() ((struct task_struct *)__get_free_pages(GFP_KERNEL, 1)) #define free_task_struct(tsk) free_pages((unsigned long)(tsk),1) -#define get_task_struct(tsk) atomic_inc(&mem_map[MAP_NR(tsk)].count) +#define get_task_struct(tsk) atomic_inc(&virt_to_page(tsk)->count) #define init_task (init_task_union.task) #define init_stack (init_task_union.stack) diff --git a/include/linux/highmem.h b/include/linux/highmem.h index 9a2f2cbe6..bde781475 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h @@ -11,7 +11,6 @@ extern struct page *highmem_start_page; #include <asm/highmem.h> /* declarations for linux/mm/highmem.c */ -extern unsigned long highmem_mapnr; FASTCALL(unsigned int nr_free_highpages(void)); extern struct page * prepare_highmem_swapout(struct page *); diff --git a/include/linux/mm.h b/include/linux/mm.h index a248e939f..94e30f7c7 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -338,6 +338,9 @@ extern unsigned long FASTCALL(get_zeroed_page(int gfp_mask)); #define __get_dma_pages(gfp_mask, order) \ __get_free_pages((gfp_mask) | GFP_DMA,(order)) +#define virt_to_page(kaddr) (mem_map + MAP_NR(kaddr)) +#define VALID_PAGE(page) ((page - mem_map) < max_mapnr) + /* * The old interface name will be removed in 2.5: */ diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index a1176b978..a3b897378 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@ -36,7 +36,7 @@ /* * From a kernel address, get the "struct page *" */ -#define page_cache_entry(x) (mem_map + MAP_NR(x)) +#define page_cache_entry(x) virt_to_page(x) extern unsigned int page_hash_bits; #define PAGE_HASH_BITS (page_hash_bits) diff --git a/include/linux/wrapper.h b/include/linux/wrapper.h index 36d80ef1e..edf8ef153 100644 --- a/include/linux/wrapper.h +++ b/include/linux/wrapper.h @@ -29,8 +29,8 @@ #define vma_get_end(v) v->vm_end #define vma_get_page_prot(v) v->vm_page_prot -#define mem_map_reserve(p) set_bit(PG_reserved, &mem_map[p].flags) -#define mem_map_unreserve(p) clear_bit(PG_reserved, &mem_map[p].flags) -#define mem_map_inc_count(p) atomic_inc(&(mem_map[p].count)) -#define mem_map_dec_count(p) atomic_dec(&(mem_map[p].count)) +#define mem_map_reserve(p) set_bit(PG_reserved, &p->flags) +#define mem_map_unreserve(p) clear_bit(PG_reserved, &p->flags) +#define mem_map_inc_count(p) atomic_inc(&(p->count)) +#define mem_map_dec_count(p) atomic_dec(&(p->count)) #endif |