LCOV - code coverage report
Current view: top level - arch/arm/mm - mm.h (source / functions) Hit Total Coverage
Test: gcov_data_raspi2_qemu_modules_combined.info Lines: 1 5 20.0 %
Date: 2020-09-30 20:25:01 Functions: 0 1 0.0 %
Branches: 0 0 -

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

Generated by: LCOV version 1.14