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

TOMOYO Linux Cross Reference
Linux/arch/arm/mm/mm.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ 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 */
  2 #ifdef CONFIG_MMU
  3 #include <linux/list.h>
  4 #include <linux/vmalloc.h>
  5 #include <linux/pgtable.h>
  6 
  7 /* the upper-most page table pointer */
  8 extern pmd_t *top_pmd;
  9 
 10 extern int icache_size;
 11 
 12 /*
 13  * 0xffff8000 to 0xffffffff is reserved for any ARM architecture
 14  * specific hacks for copying pages efficiently, while 0xffff4000
 15  * is reserved for VIPT aliasing flushing by generic code.
 16  *
 17  * Note that we don't allow VIPT aliasing caches with SMP.
 18  */
 19 #define COPYPAGE_MINICACHE      0xffff8000
 20 #define COPYPAGE_V6_FROM        0xffff8000
 21 #define COPYPAGE_V6_TO          0xffffc000
 22 /* PFN alias flushing, for VIPT caches */
 23 #define FLUSH_ALIAS_START       0xffff4000
 24 
 25 static inline void set_top_pte(unsigned long va, pte_t pte)
 26 {
 27         pte_t *ptep = pte_offset_kernel(top_pmd, va);
 28         set_pte_ext(ptep, pte, 0);
 29         local_flush_tlb_kernel_page(va);
 30 }
 31 
 32 static inline pte_t get_top_pte(unsigned long va)
 33 {
 34         pte_t *ptep = pte_offset_kernel(top_pmd, va);
 35         return *ptep;
 36 }
 37 
 38 struct mem_type {
 39         pteval_t prot_pte;
 40         pteval_t prot_pte_s2;
 41         pmdval_t prot_l1;
 42         pmdval_t prot_sect;
 43         unsigned int domain;
 44 };
 45 
 46 const struct mem_type *get_mem_type(unsigned int type);
 47 
 48 void __flush_dcache_folio(struct address_space *mapping, struct folio *folio);
 49 
 50 /*
 51  * ARM specific vm_struct->flags bits.
 52  */
 53 
 54 /* (super)section-mapped I/O regions used by ioremap()/iounmap() */
 55 #define VM_ARM_SECTION_MAPPING  0x80000000
 56 
 57 /* permanent static mappings from iotable_init() */
 58 #define VM_ARM_STATIC_MAPPING   0x40000000
 59 
 60 /* empty mapping */
 61 #define VM_ARM_EMPTY_MAPPING    0x20000000
 62 
 63 /* mapping type (attributes) for permanent static mappings */
 64 #define VM_ARM_MTYPE(mt)                ((mt) << 20)
 65 #define VM_ARM_MTYPE_MASK       (0x1f << 20)
 66 
 67 
 68 struct static_vm {
 69         struct vm_struct vm;
 70         struct list_head list;
 71 };
 72 
 73 extern struct list_head static_vmlist;
 74 extern struct static_vm *find_static_vm_vaddr(void *vaddr);
 75 extern __init void add_static_vm_early(struct static_vm *svm);
 76 
 77 #endif
 78 
 79 #ifdef CONFIG_ZONE_DMA
 80 extern phys_addr_t arm_dma_limit;
 81 extern unsigned long arm_dma_pfn_limit;
 82 #else
 83 #define arm_dma_limit ((phys_addr_t)~0)
 84 #define arm_dma_pfn_limit (~0ul >> PAGE_SHIFT)
 85 #endif
 86 
 87 extern phys_addr_t arm_lowmem_limit;
 88 
 89 void __init bootmem_init(void);
 90 void arm_mm_memblock_reserve(void);
 91 #ifdef CONFIG_CMA_AREAS
 92 void dma_contiguous_remap(void);
 93 #else
 94 static inline void dma_contiguous_remap(void) { }
 95 #endif
 96 
 97 unsigned long __clear_cr(unsigned long mask);
 98 

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