~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/arm/include/asm/page.h

Version: ~ [ linux-5.18 ] ~ [ linux-5.17.9 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.41 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.117 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.195 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.244 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.280 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.315 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.302 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  *  arch/arm/include/asm/page.h
  3  *
  4  *  Copyright (C) 1995-2003 Russell King
  5  *
  6  * This program is free software; you can redistribute it and/or modify
  7  * it under the terms of the GNU General Public License version 2 as
  8  * published by the Free Software Foundation.
  9  */
 10 #ifndef _ASMARM_PAGE_H
 11 #define _ASMARM_PAGE_H
 12 
 13 /* PAGE_SHIFT determines the page size */
 14 #define PAGE_SHIFT              12
 15 #define PAGE_SIZE               (_AC(1,UL) << PAGE_SHIFT)
 16 #define PAGE_MASK               (~((1 << PAGE_SHIFT) - 1))
 17 
 18 #ifndef __ASSEMBLY__
 19 
 20 #ifndef CONFIG_MMU
 21 
 22 #include <asm/page-nommu.h>
 23 
 24 #else
 25 
 26 #include <asm/glue.h>
 27 
 28 /*
 29  *      User Space Model
 30  *      ================
 31  *
 32  *      This section selects the correct set of functions for dealing with
 33  *      page-based copying and clearing for user space for the particular
 34  *      processor(s) we're building for.
 35  *
 36  *      We have the following to choose from:
 37  *        v4wt          - ARMv4 with writethrough cache, without minicache
 38  *        v4wb          - ARMv4 with writeback cache, without minicache
 39  *        v4_mc         - ARMv4 with minicache
 40  *        xscale        - Xscale
 41  *        xsc3          - XScalev3
 42  */
 43 #undef _USER
 44 #undef MULTI_USER
 45 
 46 #ifdef CONFIG_CPU_COPY_V4WT
 47 # ifdef _USER
 48 #  define MULTI_USER 1
 49 # else
 50 #  define _USER v4wt
 51 # endif
 52 #endif
 53 
 54 #ifdef CONFIG_CPU_COPY_V4WB
 55 # ifdef _USER
 56 #  define MULTI_USER 1
 57 # else
 58 #  define _USER v4wb
 59 # endif
 60 #endif
 61 
 62 #ifdef CONFIG_CPU_COPY_FEROCEON
 63 # ifdef _USER
 64 #  define MULTI_USER 1
 65 # else
 66 #  define _USER feroceon
 67 # endif
 68 #endif
 69 
 70 #ifdef CONFIG_CPU_COPY_FA
 71 # ifdef _USER
 72 #  define MULTI_USER 1
 73 # else
 74 #  define _USER fa
 75 # endif
 76 #endif
 77 
 78 #ifdef CONFIG_CPU_SA1100
 79 # ifdef _USER
 80 #  define MULTI_USER 1
 81 # else
 82 #  define _USER v4_mc
 83 # endif
 84 #endif
 85 
 86 #ifdef CONFIG_CPU_XSCALE
 87 # ifdef _USER
 88 #  define MULTI_USER 1
 89 # else
 90 #  define _USER xscale_mc
 91 # endif
 92 #endif
 93 
 94 #ifdef CONFIG_CPU_XSC3
 95 # ifdef _USER
 96 #  define MULTI_USER 1
 97 # else
 98 #  define _USER xsc3_mc
 99 # endif
100 #endif
101 
102 #ifdef CONFIG_CPU_COPY_V6
103 # define MULTI_USER 1
104 #endif
105 
106 #if !defined(_USER) && !defined(MULTI_USER)
107 #error Unknown user operations model
108 #endif
109 
110 struct page;
111 struct vm_area_struct;
112 
113 struct cpu_user_fns {
114         void (*cpu_clear_user_highpage)(struct page *page, unsigned long vaddr);
115         void (*cpu_copy_user_highpage)(struct page *to, struct page *from,
116                         unsigned long vaddr, struct vm_area_struct *vma);
117 };
118 
119 #ifdef MULTI_USER
120 extern struct cpu_user_fns cpu_user;
121 
122 #define __cpu_clear_user_highpage       cpu_user.cpu_clear_user_highpage
123 #define __cpu_copy_user_highpage        cpu_user.cpu_copy_user_highpage
124 
125 #else
126 
127 #define __cpu_clear_user_highpage       __glue(_USER,_clear_user_highpage)
128 #define __cpu_copy_user_highpage        __glue(_USER,_copy_user_highpage)
129 
130 extern void __cpu_clear_user_highpage(struct page *page, unsigned long vaddr);
131 extern void __cpu_copy_user_highpage(struct page *to, struct page *from,
132                         unsigned long vaddr, struct vm_area_struct *vma);
133 #endif
134 
135 #define clear_user_highpage(page,vaddr)         \
136          __cpu_clear_user_highpage(page, vaddr)
137 
138 #define __HAVE_ARCH_COPY_USER_HIGHPAGE
139 #define copy_user_highpage(to,from,vaddr,vma)   \
140         __cpu_copy_user_highpage(to, from, vaddr, vma)
141 
142 #define clear_page(page)        memset((void *)(page), 0, PAGE_SIZE)
143 extern void copy_page(void *to, const void *from);
144 
145 #ifdef CONFIG_KUSER_HELPERS
146 #define __HAVE_ARCH_GATE_AREA 1
147 #endif
148 
149 #ifdef CONFIG_ARM_LPAE
150 #include <asm/pgtable-3level-types.h>
151 #else
152 #include <asm/pgtable-2level-types.h>
153 #endif
154 
155 #endif /* CONFIG_MMU */
156 
157 typedef struct page *pgtable_t;
158 
159 #ifdef CONFIG_HAVE_ARCH_PFN_VALID
160 extern int pfn_valid(unsigned long);
161 #endif
162 
163 #include <asm/memory.h>
164 
165 #endif /* !__ASSEMBLY__ */
166 
167 #define VM_DATA_DEFAULT_FLAGS \
168         (((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0) | \
169          VM_READ | VM_WRITE | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
170 
171 #include <asm-generic/getorder.h>
172 
173 #endif
174 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp