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

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

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ 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 /* SPDX-License-Identifier: GPL-2.0-only */
  2 /*
  3  *  arch/arm/include/asm/page.h
  4  *
  5  *  Copyright (C) 1995-2003 Russell King
  6  */
  7 #ifndef _ASMARM_PAGE_H
  8 #define _ASMARM_PAGE_H
  9 
 10 /* PAGE_SHIFT determines the page size */
 11 #define PAGE_SHIFT              CONFIG_PAGE_SHIFT
 12 #define PAGE_SIZE               (_AC(1,UL) << PAGE_SHIFT)
 13 #define PAGE_MASK               (~((1 << PAGE_SHIFT) - 1))
 14 
 15 #ifndef __ASSEMBLY__
 16 
 17 #ifndef CONFIG_MMU
 18 
 19 #include <asm/page-nommu.h>
 20 
 21 #else
 22 
 23 #include <asm/glue.h>
 24 
 25 /*
 26  *      User Space Model
 27  *      ================
 28  *
 29  *      This section selects the correct set of functions for dealing with
 30  *      page-based copying and clearing for user space for the particular
 31  *      processor(s) we're building for.
 32  *
 33  *      We have the following to choose from:
 34  *        v4wt          - ARMv4 with writethrough cache, without minicache
 35  *        v4wb          - ARMv4 with writeback cache, without minicache
 36  *        v4_mc         - ARMv4 with minicache
 37  *        xscale        - Xscale
 38  *        xsc3          - XScalev3
 39  */
 40 #undef _USER
 41 #undef MULTI_USER
 42 
 43 #ifdef CONFIG_CPU_COPY_V4WT
 44 # ifdef _USER
 45 #  define MULTI_USER 1
 46 # else
 47 #  define _USER v4wt
 48 # endif
 49 #endif
 50 
 51 #ifdef CONFIG_CPU_COPY_V4WB
 52 # ifdef _USER
 53 #  define MULTI_USER 1
 54 # else
 55 #  define _USER v4wb
 56 # endif
 57 #endif
 58 
 59 #ifdef CONFIG_CPU_COPY_FEROCEON
 60 # ifdef _USER
 61 #  define MULTI_USER 1
 62 # else
 63 #  define _USER feroceon
 64 # endif
 65 #endif
 66 
 67 #ifdef CONFIG_CPU_COPY_FA
 68 # ifdef _USER
 69 #  define MULTI_USER 1
 70 # else
 71 #  define _USER fa
 72 # endif
 73 #endif
 74 
 75 #ifdef CONFIG_CPU_SA1100
 76 # ifdef _USER
 77 #  define MULTI_USER 1
 78 # else
 79 #  define _USER v4_mc
 80 # endif
 81 #endif
 82 
 83 #ifdef CONFIG_CPU_XSCALE
 84 # ifdef _USER
 85 #  define MULTI_USER 1
 86 # else
 87 #  define _USER xscale_mc
 88 # endif
 89 #endif
 90 
 91 #ifdef CONFIG_CPU_XSC3
 92 # ifdef _USER
 93 #  define MULTI_USER 1
 94 # else
 95 #  define _USER xsc3_mc
 96 # endif
 97 #endif
 98 
 99 #ifdef CONFIG_CPU_COPY_V6
100 # define MULTI_USER 1
101 #endif
102 
103 #if !defined(_USER) && !defined(MULTI_USER)
104 #error Unknown user operations model
105 #endif
106 
107 struct page;
108 struct vm_area_struct;
109 
110 struct cpu_user_fns {
111         void (*cpu_clear_user_highpage)(struct page *page, unsigned long vaddr);
112         void (*cpu_copy_user_highpage)(struct page *to, struct page *from,
113                         unsigned long vaddr, struct vm_area_struct *vma);
114 };
115 
116 void fa_copy_user_highpage(struct page *to, struct page *from,
117         unsigned long vaddr, struct vm_area_struct *vma);
118 void fa_clear_user_highpage(struct page *page, unsigned long vaddr);
119 void feroceon_copy_user_highpage(struct page *to, struct page *from,
120         unsigned long vaddr, struct vm_area_struct *vma);
121 void feroceon_clear_user_highpage(struct page *page, unsigned long vaddr);
122 void v4_mc_copy_user_highpage(struct page *to, struct page *from,
123         unsigned long vaddr, struct vm_area_struct *vma);
124 void v4_mc_clear_user_highpage(struct page *page, unsigned long vaddr);
125 void v4wb_copy_user_highpage(struct page *to, struct page *from,
126         unsigned long vaddr, struct vm_area_struct *vma);
127 void v4wb_clear_user_highpage(struct page *page, unsigned long vaddr);
128 void v4wt_copy_user_highpage(struct page *to, struct page *from,
129         unsigned long vaddr, struct vm_area_struct *vma);
130 void v4wt_clear_user_highpage(struct page *page, unsigned long vaddr);
131 void xsc3_mc_copy_user_highpage(struct page *to, struct page *from,
132         unsigned long vaddr, struct vm_area_struct *vma);
133 void xsc3_mc_clear_user_highpage(struct page *page, unsigned long vaddr);
134 void xscale_mc_copy_user_highpage(struct page *to, struct page *from,
135         unsigned long vaddr, struct vm_area_struct *vma);
136 void xscale_mc_clear_user_highpage(struct page *page, unsigned long vaddr);
137 
138 #ifdef MULTI_USER
139 extern struct cpu_user_fns cpu_user;
140 
141 #define __cpu_clear_user_highpage       cpu_user.cpu_clear_user_highpage
142 #define __cpu_copy_user_highpage        cpu_user.cpu_copy_user_highpage
143 
144 #else
145 
146 #define __cpu_clear_user_highpage       __glue(_USER,_clear_user_highpage)
147 #define __cpu_copy_user_highpage        __glue(_USER,_copy_user_highpage)
148 
149 extern void __cpu_clear_user_highpage(struct page *page, unsigned long vaddr);
150 extern void __cpu_copy_user_highpage(struct page *to, struct page *from,
151                         unsigned long vaddr, struct vm_area_struct *vma);
152 #endif
153 
154 #define clear_user_highpage(page,vaddr)         \
155          __cpu_clear_user_highpage(page, vaddr)
156 
157 #define __HAVE_ARCH_COPY_USER_HIGHPAGE
158 #define copy_user_highpage(to,from,vaddr,vma)   \
159         __cpu_copy_user_highpage(to, from, vaddr, vma)
160 
161 #define clear_page(page)        memset((void *)(page), 0, PAGE_SIZE)
162 extern void copy_page(void *to, const void *from);
163 
164 #ifdef CONFIG_KUSER_HELPERS
165 #define __HAVE_ARCH_GATE_AREA 1
166 #endif
167 
168 #ifdef CONFIG_ARM_LPAE
169 #include <asm/pgtable-3level-types.h>
170 #else
171 #include <asm/pgtable-2level-types.h>
172 #ifdef CONFIG_VMAP_STACK
173 #define ARCH_PAGE_TABLE_SYNC_MASK       PGTBL_PMD_MODIFIED
174 #endif
175 #endif
176 
177 #endif /* CONFIG_MMU */
178 
179 typedef struct page *pgtable_t;
180 
181 #ifdef CONFIG_HAVE_ARCH_PFN_VALID
182 extern int pfn_valid(unsigned long);
183 #define pfn_valid pfn_valid
184 #endif
185 
186 #endif /* !__ASSEMBLY__ */
187 
188 #include <asm/memory.h>
189 
190 #define VM_DATA_DEFAULT_FLAGS   VM_DATA_FLAGS_TSK_EXEC
191 
192 #include <asm-generic/getorder.h>
193 #include <asm-generic/memory_model.h>
194 
195 #endif
196 

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

kernel.org | git.kernel.org | LWN.net | Project Home | 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.

sflogo.php