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

TOMOYO Linux Cross Reference
Linux/arch/nds32/include/asm/memory.h

Version: ~ [ linux-6.2-rc3 ] ~ [ linux-6.1.5 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.87 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.162 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.228 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.269 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.302 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.302 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ 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 // Copyright (C) 2005-2017 Andes Technology Corporation
  3 
  4 #ifndef __ASM_NDS32_MEMORY_H
  5 #define __ASM_NDS32_MEMORY_H
  6 
  7 #include <linux/compiler.h>
  8 #include <linux/sizes.h>
  9 
 10 #ifndef __ASSEMBLY__
 11 #include <asm/page.h>
 12 #endif
 13 
 14 #ifndef PHYS_OFFSET
 15 #define PHYS_OFFSET     (0x0)
 16 #endif
 17 
 18 /*
 19  * TASK_SIZE - the maximum size of a user space task.
 20  * TASK_UNMAPPED_BASE - the lower boundary of the mmap VM area
 21  */
 22 #define TASK_SIZE               ((CONFIG_PAGE_OFFSET) - (SZ_32M))
 23 #define TASK_UNMAPPED_BASE      ALIGN(TASK_SIZE / 3, SZ_32M)
 24 #define PAGE_OFFSET             (CONFIG_PAGE_OFFSET)
 25 
 26 /*
 27  * Physical vs virtual RAM address space conversion.  These are
 28  * private definitions which should NOT be used outside memory.h
 29  * files.  Use virt_to_phys/phys_to_virt/__pa/__va instead.
 30  */
 31 #ifndef __virt_to_phys
 32 #define __virt_to_phys(x)       ((x) - PAGE_OFFSET + PHYS_OFFSET)
 33 #define __phys_to_virt(x)       ((x) - PHYS_OFFSET + PAGE_OFFSET)
 34 #endif
 35 
 36 /*
 37  * The module space lives between the addresses given by TASK_SIZE
 38  * and PAGE_OFFSET - it must be within 32MB of the kernel text.
 39  */
 40 #define MODULES_END     (PAGE_OFFSET)
 41 #define MODULES_VADDR   (MODULES_END - SZ_32M)
 42 
 43 #if TASK_SIZE > MODULES_VADDR
 44 #error Top of user space clashes with start of module space
 45 #endif
 46 
 47 #ifndef __ASSEMBLY__
 48 
 49 /*
 50  * PFNs are used to describe any physical page; this means
 51  * PFN 0 == physical address 0.
 52  *
 53  * This is the PFN of the first RAM page in the kernel
 54  * direct-mapped view.  We assume this is the first page
 55  * of RAM in the mem_map as well.
 56  */
 57 #define PHYS_PFN_OFFSET (PHYS_OFFSET >> PAGE_SHIFT)
 58 
 59 /*
 60  * Drivers should NOT use these either.
 61  */
 62 #define __pa(x)                 __virt_to_phys((unsigned long)(x))
 63 #define __va(x)                 ((void *)__phys_to_virt((unsigned long)(x)))
 64 
 65 /*
 66  * Conversion between a struct page and a physical address.
 67  *
 68  * Note: when converting an unknown physical address to a
 69  * struct page, the resulting pointer must be validated
 70  * using VALID_PAGE().  It must return an invalid struct page
 71  * for any physical address not corresponding to a system
 72  * RAM address.
 73  *
 74  *  pfn_valid(pfn)      indicates whether a PFN number is valid
 75  *
 76  *  virt_to_page(k)     convert a _valid_ virtual address to struct page *
 77  *  virt_addr_valid(k)  indicates whether a virtual address is valid
 78  */
 79 #define ARCH_PFN_OFFSET         PHYS_PFN_OFFSET
 80 #define pfn_valid(pfn)          ((pfn) >= PHYS_PFN_OFFSET && (pfn) < (PHYS_PFN_OFFSET + max_mapnr))
 81 
 82 #define virt_to_page(kaddr)     (pfn_to_page(__pa(kaddr) >> PAGE_SHIFT))
 83 #define virt_addr_valid(kaddr)  ((unsigned long)(kaddr) >= PAGE_OFFSET && (unsigned long)(kaddr) < (unsigned long)high_memory)
 84 
 85 #define page_to_phys(page)      (page_to_pfn(page) << PAGE_SHIFT)
 86 
 87 #endif
 88 
 89 #include <asm-generic/memory_model.h>
 90 
 91 #endif
 92 

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

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | 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.

osdn.jp