LCOV - code coverage report
Current view: top level - arch/x86/include/asm - page.h (source / functions) Hit Total Coverage
Test: landlock.info Lines: 4 4 100.0 %
Date: 2021-04-22 12:43:58 Functions: 0 0 -

          Line data    Source code
       1             : /* SPDX-License-Identifier: GPL-2.0 */
       2             : #ifndef _ASM_X86_PAGE_H
       3             : #define _ASM_X86_PAGE_H
       4             : 
       5             : #include <linux/types.h>
       6             : 
       7             : #ifdef __KERNEL__
       8             : 
       9             : #include <asm/page_types.h>
      10             : 
      11             : #ifdef CONFIG_X86_64
      12             : #include <asm/page_64.h>
      13             : #else
      14             : #include <asm/page_32.h>
      15             : #endif  /* CONFIG_X86_64 */
      16             : 
      17             : #ifndef __ASSEMBLY__
      18             : 
      19             : struct page;
      20             : 
      21             : #include <linux/range.h>
      22             : extern struct range pfn_mapped[];
      23             : extern int nr_pfn_mapped;
      24             : 
      25        9718 : static inline void clear_user_page(void *page, unsigned long vaddr,
      26             :                                    struct page *pg)
      27             : {
      28        9718 :         clear_page(page);
      29             : }
      30             : 
      31       37990 : static inline void copy_user_page(void *to, void *from, unsigned long vaddr,
      32             :                                   struct page *topage)
      33             : {
      34       37990 :         copy_page(to, from);
      35             : }
      36             : 
      37             : #define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \
      38             :         alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr)
      39             : #define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
      40             : 
      41             : #ifndef __pa
      42             : #define __pa(x)         __phys_addr((unsigned long)(x))
      43             : #endif
      44             : 
      45             : #define __pa_nodebug(x) __phys_addr_nodebug((unsigned long)(x))
      46             : /* __pa_symbol should be used for C visible symbols.
      47             :    This seems to be the official gcc blessed way to do such arithmetic. */
      48             : /*
      49             :  * We need __phys_reloc_hide() here because gcc may assume that there is no
      50             :  * overflow during __pa() calculation and can optimize it unexpectedly.
      51             :  * Newer versions of gcc provide -fno-strict-overflow switch to handle this
      52             :  * case properly. Once all supported versions of gcc understand it, we can
      53             :  * remove this Voodoo magic stuff. (i.e. once gcc3.x is deprecated)
      54             :  */
      55             : #define __pa_symbol(x) \
      56             :         __phys_addr_symbol(__phys_reloc_hide((unsigned long)(x)))
      57             : 
      58             : #ifndef __va
      59             : #define __va(x)                 ((void *)((unsigned long)(x)+PAGE_OFFSET))
      60             : #endif
      61             : 
      62             : #define __boot_va(x)            __va(x)
      63             : #define __boot_pa(x)            __pa(x)
      64             : 
      65             : /*
      66             :  * virt_to_page(kaddr) returns a valid pointer if and only if
      67             :  * virt_addr_valid(kaddr) returns true.
      68             :  */
      69             : #define virt_to_page(kaddr)     pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
      70             : #define pfn_to_kaddr(pfn)      __va((pfn) << PAGE_SHIFT)
      71             : extern bool __virt_addr_valid(unsigned long kaddr);
      72             : #define virt_addr_valid(kaddr)  __virt_addr_valid((unsigned long) (kaddr))
      73             : 
      74             : #endif  /* __ASSEMBLY__ */
      75             : 
      76             : #include <asm-generic/memory_model.h>
      77             : #include <asm-generic/getorder.h>
      78             : 
      79             : #define HAVE_ARCH_HUGETLB_UNMAPPED_AREA
      80             : 
      81             : #endif  /* __KERNEL__ */
      82             : #endif /* _ASM_X86_PAGE_H */

Generated by: LCOV version 1.14