125 #define pgd_offset_gate(mm, addr) pgd_offset(mm, addr) |
125 #define pgd_offset_gate(mm, addr) pgd_offset(mm, addr) |
126 #endif |
126 #endif |
127 |
127 |
128 #ifndef __HAVE_ARCH_MOVE_PTE |
128 #ifndef __HAVE_ARCH_MOVE_PTE |
129 #define move_pte(pte, prot, old_addr, new_addr) (pte) |
129 #define move_pte(pte, prot, old_addr, new_addr) (pte) |
|
130 #endif |
|
131 |
|
132 #ifndef pgprot_writecombine |
|
133 #define pgprot_writecombine pgprot_noncached |
130 #endif |
134 #endif |
131 |
135 |
132 /* |
136 /* |
133 * When walking page tables, get the address of the next boundary, |
137 * When walking page tables, get the address of the next boundary, |
134 * or the end address of the range if that comes earlier. Although no |
138 * or the end address of the range if that comes earlier. Although no |
287 #define arch_enter_lazy_cpu_mode() do {} while (0) |
291 #define arch_enter_lazy_cpu_mode() do {} while (0) |
288 #define arch_leave_lazy_cpu_mode() do {} while (0) |
292 #define arch_leave_lazy_cpu_mode() do {} while (0) |
289 #define arch_flush_lazy_cpu_mode() do {} while (0) |
293 #define arch_flush_lazy_cpu_mode() do {} while (0) |
290 #endif |
294 #endif |
291 |
295 |
|
296 #ifndef __HAVE_PFNMAP_TRACKING |
|
297 /* |
|
298 * Interface that can be used by architecture code to keep track of |
|
299 * memory type of pfn mappings (remap_pfn_range, vm_insert_pfn) |
|
300 * |
|
301 * track_pfn_vma_new is called when a _new_ pfn mapping is being established |
|
302 * for physical range indicated by pfn and size. |
|
303 */ |
|
304 static inline int track_pfn_vma_new(struct vm_area_struct *vma, pgprot_t *prot, |
|
305 unsigned long pfn, unsigned long size) |
|
306 { |
|
307 return 0; |
|
308 } |
|
309 |
|
310 /* |
|
311 * Interface that can be used by architecture code to keep track of |
|
312 * memory type of pfn mappings (remap_pfn_range, vm_insert_pfn) |
|
313 * |
|
314 * track_pfn_vma_copy is called when vma that is covering the pfnmap gets |
|
315 * copied through copy_page_range(). |
|
316 */ |
|
317 static inline int track_pfn_vma_copy(struct vm_area_struct *vma) |
|
318 { |
|
319 return 0; |
|
320 } |
|
321 |
|
322 /* |
|
323 * Interface that can be used by architecture code to keep track of |
|
324 * memory type of pfn mappings (remap_pfn_range, vm_insert_pfn) |
|
325 * |
|
326 * untrack_pfn_vma is called while unmapping a pfnmap for a region. |
|
327 * untrack can be called for a specific region indicated by pfn and size or |
|
328 * can be for the entire vma (in which case size can be zero). |
|
329 */ |
|
330 static inline void untrack_pfn_vma(struct vm_area_struct *vma, |
|
331 unsigned long pfn, unsigned long size) |
|
332 { |
|
333 } |
|
334 #else |
|
335 extern int track_pfn_vma_new(struct vm_area_struct *vma, pgprot_t *prot, |
|
336 unsigned long pfn, unsigned long size); |
|
337 extern int track_pfn_vma_copy(struct vm_area_struct *vma); |
|
338 extern void untrack_pfn_vma(struct vm_area_struct *vma, unsigned long pfn, |
|
339 unsigned long size); |
|
340 #endif |
|
341 |
292 #endif /* !__ASSEMBLY__ */ |
342 #endif /* !__ASSEMBLY__ */ |
293 |
343 |
294 #endif /* _ASM_GENERIC_PGTABLE_H */ |
344 #endif /* _ASM_GENERIC_PGTABLE_H */ |