| Viewing file:  page.h (3.61 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
/**  arch/arm/include/asm/page.h
 *
 *  Copyright (C) 1995-2003 Russell King
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */
 #ifndef _ASMARM_PAGE_H
 #define _ASMARM_PAGE_H
 
 /* PAGE_SHIFT determines the page size */
 #define PAGE_SHIFT        12
 #define PAGE_SIZE        (_AC(1,UL) << PAGE_SHIFT)
 #define PAGE_MASK        (~((1 << PAGE_SHIFT) - 1))
 
 #ifndef __ASSEMBLY__
 
 #ifndef CONFIG_MMU
 
 #include <asm/page-nommu.h>
 
 #else
 
 #include <asm/glue.h>
 
 /*
 *    User Space Model
 *    ================
 *
 *    This section selects the correct set of functions for dealing with
 *    page-based copying and clearing for user space for the particular
 *    processor(s) we're building for.
 *
 *    We have the following to choose from:
 *      v4wt        - ARMv4 with writethrough cache, without minicache
 *      v4wb        - ARMv4 with writeback cache, without minicache
 *      v4_mc        - ARMv4 with minicache
 *      xscale    - Xscale
 *      xsc3        - XScalev3
 */
 #undef _USER
 #undef MULTI_USER
 
 #ifdef CONFIG_CPU_COPY_V4WT
 # ifdef _USER
 #  define MULTI_USER 1
 # else
 #  define _USER v4wt
 # endif
 #endif
 
 #ifdef CONFIG_CPU_COPY_V4WB
 # ifdef _USER
 #  define MULTI_USER 1
 # else
 #  define _USER v4wb
 # endif
 #endif
 
 #ifdef CONFIG_CPU_COPY_FEROCEON
 # ifdef _USER
 #  define MULTI_USER 1
 # else
 #  define _USER feroceon
 # endif
 #endif
 
 #ifdef CONFIG_CPU_COPY_FA
 # ifdef _USER
 #  define MULTI_USER 1
 # else
 #  define _USER fa
 # endif
 #endif
 
 #ifdef CONFIG_CPU_SA1100
 # ifdef _USER
 #  define MULTI_USER 1
 # else
 #  define _USER v4_mc
 # endif
 #endif
 
 #ifdef CONFIG_CPU_XSCALE
 # ifdef _USER
 #  define MULTI_USER 1
 # else
 #  define _USER xscale_mc
 # endif
 #endif
 
 #ifdef CONFIG_CPU_XSC3
 # ifdef _USER
 #  define MULTI_USER 1
 # else
 #  define _USER xsc3_mc
 # endif
 #endif
 
 #ifdef CONFIG_CPU_COPY_V6
 # define MULTI_USER 1
 #endif
 
 #if !defined(_USER) && !defined(MULTI_USER)
 #error Unknown user operations model
 #endif
 
 struct page;
 struct vm_area_struct;
 
 struct cpu_user_fns {
 void (*cpu_clear_user_highpage)(struct page *page, unsigned long vaddr);
 void (*cpu_copy_user_highpage)(struct page *to, struct page *from,
 unsigned long vaddr, struct vm_area_struct *vma);
 };
 
 #ifdef MULTI_USER
 extern struct cpu_user_fns cpu_user;
 
 #define __cpu_clear_user_highpage    cpu_user.cpu_clear_user_highpage
 #define __cpu_copy_user_highpage    cpu_user.cpu_copy_user_highpage
 
 #else
 
 #define __cpu_clear_user_highpage    __glue(_USER,_clear_user_highpage)
 #define __cpu_copy_user_highpage    __glue(_USER,_copy_user_highpage)
 
 extern void __cpu_clear_user_highpage(struct page *page, unsigned long vaddr);
 extern void __cpu_copy_user_highpage(struct page *to, struct page *from,
 unsigned long vaddr, struct vm_area_struct *vma);
 #endif
 
 #define clear_user_highpage(page,vaddr)        \
 __cpu_clear_user_highpage(page, vaddr)
 
 #define __HAVE_ARCH_COPY_USER_HIGHPAGE
 #define copy_user_highpage(to,from,vaddr,vma)    \
 __cpu_copy_user_highpage(to, from, vaddr, vma)
 
 #define clear_page(page)    memset((void *)(page), 0, PAGE_SIZE)
 extern void copy_page(void *to, const void *from);
 
 #ifdef CONFIG_KUSER_HELPERS
 #define __HAVE_ARCH_GATE_AREA 1
 #endif
 
 #ifdef CONFIG_ARM_LPAE
 #include <asm/pgtable-3level-types.h>
 #else
 #include <asm/pgtable-2level-types.h>
 #endif
 
 #endif /* CONFIG_MMU */
 
 typedef struct page *pgtable_t;
 
 #ifdef CONFIG_HAVE_ARCH_PFN_VALID
 extern int pfn_valid(unsigned long);
 #endif
 
 #include <asm/memory.h>
 
 #endif /* !__ASSEMBLY__ */
 
 #define VM_DATA_DEFAULT_FLAGS \
 (((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0) | \
 VM_READ | VM_WRITE | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
 
 #include <asm-generic/getorder.h>
 
 #endif
 
 |