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

TOMOYO Linux Cross Reference
Linux/arch/mips/include/asm/pgtable-bits.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ 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.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /arch/mips/include/asm/pgtable-bits.h (Architecture alpha) and /arch/m68k/include/asm-m68k/pgtable-bits.h (Architecture m68k)


  1 /*                                                  1 
  2  * This file is subject to the terms and condi    
  3  * License.  See the file "COPYING" in the mai    
  4  * for more details.                              
  5  *                                                
  6  * Copyright (C) 1994 - 2002 by Ralf Baechle      
  7  * Copyright (C) 1999, 2000, 2001 Silicon Grap    
  8  * Copyright (C) 2002  Maciej W. Rozycki          
  9  */                                               
 10 #ifndef _ASM_PGTABLE_BITS_H                       
 11 #define _ASM_PGTABLE_BITS_H                       
 12                                                   
 13                                                   
 14 /*                                                
 15  * Note that we shift the lower 32bits of each    
 16  * 6 bits to the left. That way we can convert    
 17  * physical address by a single 'and' operatio    
 18  * bits for storing information which isn't pr    
 19  * MIPS page table.                               
 20  *                                                
 21  * Similar to the Alpha port, we need to keep     
 22  * and mod bits in software.  We have a softwa    
 23  * from this page" bit, and a hardware one whi    
 24  * process read from the page.  On the same to    
 25  * writable bit and the real hardware one whic    
 26  * process write to the page, this keeps a mod    
 27  * dirty bit.                                     
 28  *                                                
 29  * Certain revisions of the R4000 and R5000 ha    
 30  * certain sequence occurs in the last 3 instr    
 31  * page, and the following page is not mapped,    
 32  * unpredictable things.  The code (when it is    
 33  * this problem will be in the update_mmu_cach    
 34  */                                               
 35 #if defined(CONFIG_XPA)                           
 36                                                   
 37 /*                                                
 38  * Page table bit offsets used for 64 bit phys    
 39  * MIPS32r5 with XPA.                             
 40  */                                               
 41 enum pgtable_bits {                               
 42         /* Used by TLB hardware (placed in Ent    
 43         _PAGE_NO_EXEC_SHIFT,                      
 44         _PAGE_NO_READ_SHIFT,                      
 45         _PAGE_GLOBAL_SHIFT,                       
 46         _PAGE_VALID_SHIFT,                        
 47         _PAGE_DIRTY_SHIFT,                        
 48         _CACHE_SHIFT,                             
 49                                                   
 50         /* Used only by software (masked out b    
 51         _PAGE_PRESENT_SHIFT = 24,                 
 52         _PAGE_WRITE_SHIFT,                        
 53         _PAGE_ACCESSED_SHIFT,                     
 54         _PAGE_MODIFIED_SHIFT,                     
 55 #if defined(CONFIG_ARCH_HAS_PTE_SPECIAL)          
 56         _PAGE_SPECIAL_SHIFT,                      
 57 #endif                                            
 58 #if defined(CONFIG_HAVE_ARCH_SOFT_DIRTY)          
 59         _PAGE_SOFT_DIRTY_SHIFT,                   
 60 #endif                                            
 61 };                                                
 62                                                   
 63 /*                                                
 64  * Bits for extended EntryLo0/EntryLo1 registe    
 65  */                                               
 66 #define _PFNX_MASK              0xffffff          
 67                                                   
 68 #elif defined(CONFIG_PHYS_ADDR_T_64BIT) && def    
 69                                                   
 70 /*                                                
 71  * Page table bit offsets used for 36 bit phys    
 72  * for example with Alchemy or Netlogic XLP/XL    
 73  */                                               
 74 enum pgtable_bits {                               
 75         /* Used by TLB hardware (placed in Ent    
 76         _PAGE_GLOBAL_SHIFT,                       
 77         _PAGE_VALID_SHIFT,                        
 78         _PAGE_DIRTY_SHIFT,                        
 79         _CACHE_SHIFT,                             
 80                                                   
 81         /* Used only by software (masked out b    
 82         _PAGE_PRESENT_SHIFT = _CACHE_SHIFT + 3    
 83         _PAGE_NO_READ_SHIFT,                      
 84         _PAGE_WRITE_SHIFT,                        
 85         _PAGE_ACCESSED_SHIFT,                     
 86         _PAGE_MODIFIED_SHIFT,                     
 87 #if defined(CONFIG_ARCH_HAS_PTE_SPECIAL)          
 88         _PAGE_SPECIAL_SHIFT,                      
 89 #endif                                            
 90 #if defined(CONFIG_HAVE_ARCH_SOFT_DIRTY)          
 91         _PAGE_SOFT_DIRTY_SHIFT,                   
 92 #endif                                            
 93 };                                                
 94                                                   
 95 #elif defined(CONFIG_CPU_R3K_TLB)                 
 96                                                   
 97 /* Page table bits used for r3k systems */        
 98 enum pgtable_bits {                               
 99         /* Used only by software (writes to En    
100         _PAGE_PRESENT_SHIFT,                      
101         _PAGE_NO_READ_SHIFT,                      
102         _PAGE_WRITE_SHIFT,                        
103         _PAGE_ACCESSED_SHIFT,                     
104         _PAGE_MODIFIED_SHIFT,                     
105 #if defined(CONFIG_ARCH_HAS_PTE_SPECIAL)          
106         _PAGE_SPECIAL_SHIFT,                      
107 #endif                                            
108 #if defined(CONFIG_HAVE_ARCH_SOFT_DIRTY)          
109         _PAGE_SOFT_DIRTY_SHIFT,                   
110 #endif                                            
111                                                   
112         /* Used by TLB hardware (placed in Ent    
113         _PAGE_GLOBAL_SHIFT = 8,                   
114         _PAGE_VALID_SHIFT,                        
115         _PAGE_DIRTY_SHIFT,                        
116         _CACHE_UNCACHED_SHIFT,                    
117 };                                                
118                                                   
119 #else                                             
120                                                   
121 /* Page table bits used for r4k systems */        
122 enum pgtable_bits {                               
123         /* Used only by software (masked out b    
124         _PAGE_PRESENT_SHIFT,                      
125 #if !defined(CONFIG_CPU_HAS_RIXI)                 
126         _PAGE_NO_READ_SHIFT,                      
127 #endif                                            
128         _PAGE_WRITE_SHIFT,                        
129         _PAGE_ACCESSED_SHIFT,                     
130         _PAGE_MODIFIED_SHIFT,                     
131 #if defined(CONFIG_MIPS_HUGE_TLB_SUPPORT)         
132         _PAGE_HUGE_SHIFT,                         
133 #endif                                            
134 #if defined(CONFIG_ARCH_HAS_PTE_SPECIAL)          
135         _PAGE_SPECIAL_SHIFT,                      
136 #endif                                            
137 #if defined(CONFIG_HAVE_ARCH_SOFT_DIRTY)          
138         _PAGE_SOFT_DIRTY_SHIFT,                   
139 #endif                                            
140         /* Used by TLB hardware (placed in Ent    
141 #if defined(CONFIG_CPU_HAS_RIXI)                  
142         _PAGE_NO_EXEC_SHIFT,                      
143         _PAGE_NO_READ_SHIFT,                      
144 #endif                                            
145         _PAGE_GLOBAL_SHIFT,                       
146         _PAGE_VALID_SHIFT,                        
147         _PAGE_DIRTY_SHIFT,                        
148         _CACHE_SHIFT,                             
149 };                                                
150                                                   
151 #endif /* defined(CONFIG_PHYS_ADDR_T_64BIT &&     
152                                                   
153 /* Used only by software */                       
154 #define _PAGE_PRESENT           (1 << _PAGE_PR    
155 #define _PAGE_WRITE             (1 << _PAGE_WR    
156 #define _PAGE_ACCESSED          (1 << _PAGE_AC    
157 #define _PAGE_MODIFIED          (1 << _PAGE_MO    
158 #if defined(CONFIG_MIPS_HUGE_TLB_SUPPORT)         
159 # define _PAGE_HUGE             (1 << _PAGE_HU    
160 #endif                                            
161 #if defined(CONFIG_ARCH_HAS_PTE_SPECIAL)          
162 # define _PAGE_SPECIAL          (1 << _PAGE_SP    
163 #else                                             
164 # define _PAGE_SPECIAL          0                 
165 #endif                                            
166 #if defined(CONFIG_HAVE_ARCH_SOFT_DIRTY)          
167 # define _PAGE_SOFT_DIRTY       (1 << _PAGE_SO    
168 #else                                             
169 # define _PAGE_SOFT_DIRTY       0                 
170 #endif                                            
171                                                   
172 /* Used by TLB hardware (placed in EntryLo*) *    
173 #if defined(CONFIG_XPA)                           
174 # define _PAGE_NO_EXEC          (1 << _PAGE_NO    
175 #elif defined(CONFIG_CPU_HAS_RIXI)                
176 # define _PAGE_NO_EXEC          (cpu_has_rixi     
177 #endif                                            
178 #define _PAGE_NO_READ           (1 << _PAGE_NO    
179 #define _PAGE_GLOBAL            (1 << _PAGE_GL    
180 #define _PAGE_VALID             (1 << _PAGE_VA    
181 #define _PAGE_DIRTY             (1 << _PAGE_DI    
182 #if defined(CONFIG_CPU_R3K_TLB)                   
183 # define _CACHE_UNCACHED        (1 << _CACHE_U    
184 # define _CACHE_MASK            _CACHE_UNCACHE    
185 # define PFN_PTE_SHIFT          PAGE_SHIFT        
186 #else                                             
187 # define _CACHE_MASK            (7 << _CACHE_S    
188 # define PFN_PTE_SHIFT          (PAGE_SHIFT -     
189 #endif                                            
190                                                   
191 #ifndef _PAGE_NO_EXEC                             
192 #define _PAGE_NO_EXEC           0                 
193 #endif                                            
194                                                   
195 #define _PAGE_SILENT_READ       _PAGE_VALID       
196 #define _PAGE_SILENT_WRITE      _PAGE_DIRTY       
197                                                   
198 #define _PFN_MASK               (~((1 << (PFN_    
199                                                   
200 /*                                                
201  * The final layouts of the PTE bits are:         
202  *                                                
203  *   64-bit, R1 or earlier:     CCC D V G [S H    
204  *   32-bit, R1 or earlier:     CCC D V G M A     
205  *   64-bit, R2 or later:       CCC D V G RI/R    
206  *   32-bit, R2 or later:       CCC D V G RI/R    
207  */                                               
208                                                   
209                                                   
210 /*                                                
211  * pte_to_entrylo converts a page table entry     
212  * entrylo0/1 value.                              
213  */                                               
214 static inline uint64_t pte_to_entrylo(unsigned    
215 {                                                 
216 #ifdef CONFIG_CPU_HAS_RIXI                        
217         if (cpu_has_rixi) {                       
218                 int sa;                           
219 #ifdef CONFIG_32BIT                               
220                 sa = 31 - _PAGE_NO_READ_SHIFT;    
221 #else                                             
222                 sa = 63 - _PAGE_NO_READ_SHIFT;    
223 #endif                                            
224                 /*                                
225                  * C has no way to express tha    
226                  * _PAGE_NO_EXEC_SHIFT followe    
227                  * in the fast path this is do    
228                  */                               
229                 return (pte_val >> _PAGE_GLOBA    
230                         ((pte_val & (_PAGE_NO_    
231         }                                         
232 #endif                                            
233                                                   
234         return pte_val >> _PAGE_GLOBAL_SHIFT;     
235 }                                                 
236                                                   
237 /*                                                
238  * Cache attributes                               
239  */                                               
240 #if defined(CONFIG_CPU_R3K_TLB)                   
241                                                   
242 #define _CACHE_CACHABLE_NONCOHERENT 0             
243 #define _CACHE_UNCACHED_ACCELERATED _CACHE_UNC    
244                                                   
245 #elif defined(CONFIG_CPU_SB1)                     
246                                                   
247 /* No penalty for being coherent on the SB1, s    
248    use it for "noncoherent" spaces, too.  Shou    
249                                                   
250 #define _CACHE_CACHABLE_NONCOHERENT (5<<_CACHE    
251                                                   
252 #endif                                            
253                                                   
254 #ifndef _CACHE_CACHABLE_NO_WA                     
255 #define _CACHE_CACHABLE_NO_WA           (0<<_C    
256 #endif                                            
257 #ifndef _CACHE_CACHABLE_WA                        
258 #define _CACHE_CACHABLE_WA              (1<<_C    
259 #endif                                            
260 #ifndef _CACHE_UNCACHED                           
261 #define _CACHE_UNCACHED                 (2<<_C    
262 #endif                                            
263 #ifndef _CACHE_CACHABLE_NONCOHERENT               
264 #define _CACHE_CACHABLE_NONCOHERENT     (3<<_C    
265 #endif                                            
266 #ifndef _CACHE_CACHABLE_CE                        
267 #define _CACHE_CACHABLE_CE              (4<<_C    
268 #endif                                            
269 #ifndef _CACHE_CACHABLE_COW                       
270 #define _CACHE_CACHABLE_COW             (5<<_C    
271 #endif                                            
272 #ifndef _CACHE_CACHABLE_CUW                       
273 #define _CACHE_CACHABLE_CUW             (6<<_C    
274 #endif                                            
275 #ifndef _CACHE_UNCACHED_ACCELERATED               
276 #define _CACHE_UNCACHED_ACCELERATED     (7<<_C    
277 #endif                                            
278                                                   
279 #define __READABLE      (_PAGE_SILENT_READ | _    
280 #define __WRITEABLE     (_PAGE_SILENT_WRITE |     
281                                                   
282 #define _PAGE_CHG_MASK  (_PAGE_ACCESSED | _PAG    
283                          _PAGE_SOFT_DIRTY | _P    
284                          _CACHE_MASK | _PAGE_S    
285                                                   
286 #endif /* _ASM_PGTABLE_BITS_H */                  
287                                                   

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