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

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

Version: ~ [ linux-5.19-rc3 ] ~ [ linux-5.18.5 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.48 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.123 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.199 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.248 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.284 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.319 ] ~ [ 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 /* 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              12
 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 #ifdef MULTI_USER
117 extern struct cpu_user_fns cpu_user;
118 
119 #define __cpu_clear_user_highpage       cpu_user.cpu_clear_user_highpage
120 #define __cpu_copy_user_highpage        cpu_user.cpu_copy_user_highpage
121 
122 #else
123 
124 #define __cpu_clear_user_highpage       __glue(_USER,_clear_user_highpage)
125 #define __cpu_copy_user_highpage        __glue(_USER,_copy_user_highpage)
126 
127 extern void __cpu_clear_user_highpage(struct page *page, unsigned long vaddr);
128 extern void __cpu_copy_user_highpage(struct page *to, struct page *from,
129                         unsigned long vaddr, struct vm_area_struct *vma);
130 #endif
131 
132 #define clear_user_highpage(page,vaddr)         \
133          __cpu_clear_user_highpage(page, vaddr)
134 
135 #define __HAVE_ARCH_COPY_USER_HIGHPAGE
136 #define copy_user_highpage(to,from,vaddr,vma)   \
137         __cpu_copy_user_highpage(to, from, vaddr, vma)
138 
139 #define clear_page(page)        memset((void *)(page), 0, PAGE_SIZE)
140 extern void copy_page(void *to, const void *from);
141 
142 #ifdef CONFIG_KUSER_HELPERS
143 #define __HAVE_ARCH_GATE_AREA 1
144 #endif
145 
146 #ifdef CONFIG_ARM_LPAE
147 #include <asm/pgtable-3level-types.h>
148 #else
149 #include <asm/pgtable-2level-types.h>
150 #endif
151 
152 #endif /* CONFIG_MMU */
153 
154 typedef struct page *pgtable_t;
155 
156 #ifdef CONFIG_HAVE_ARCH_PFN_VALID
157 extern int pfn_valid(unsigned long);
158 #endif
159 
160 #include <asm/memory.h>
161 
162 #endif /* !__ASSEMBLY__ */
163 
164 #define VM_DATA_DEFAULT_FLAGS \
165         (((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0) | \
166          VM_READ | VM_WRITE | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
167 
168 #include <asm-generic/getorder.h>
169 
170 #endif
171 

~ [ 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