linux/arch/openrisc/include/asm/page.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-or-later */
   2/*
   3 * OpenRISC Linux
   4 *
   5 * Linux architectural port borrowing liberally from similar works of
   6 * others.  All original copyrights apply as per the original source
   7 * declaration.
   8 *
   9 * OpenRISC implementation:
  10 * Copyright (C) 2003 Matjaz Breskvar <phoenix@bsemi.com>
  11 * Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se>
  12 * et al.
  13 */
  14
  15#ifndef __ASM_OPENRISC_PAGE_H
  16#define __ASM_OPENRISC_PAGE_H
  17
  18
  19/* PAGE_SHIFT determines the page size */
  20
  21#define PAGE_SHIFT      13
  22#ifdef __ASSEMBLY__
  23#define PAGE_SIZE       (1 << PAGE_SHIFT)
  24#else
  25#define PAGE_SIZE       (1UL << PAGE_SHIFT)
  26#endif
  27#define PAGE_MASK       (~(PAGE_SIZE-1))
  28
  29#define PAGE_OFFSET     0xc0000000
  30#define KERNELBASE      PAGE_OFFSET
  31
  32/* This is not necessarily the right place for this, but it's needed by
  33 * drivers/of/fdt.c
  34 */
  35#include <asm/setup.h>
  36
  37#ifndef __ASSEMBLY__
  38
  39#define clear_page(page)        memset((page), 0, PAGE_SIZE)
  40#define copy_page(to, from)     memcpy((to), (from), PAGE_SIZE)
  41
  42#define clear_user_page(page, vaddr, pg)        clear_page(page)
  43#define copy_user_page(to, from, vaddr, pg)     copy_page(to, from)
  44
  45/*
  46 * These are used to make use of C type-checking..
  47 */
  48typedef struct {
  49        unsigned long pte;
  50} pte_t;
  51typedef struct {
  52        unsigned long pgd;
  53} pgd_t;
  54typedef struct {
  55        unsigned long pgprot;
  56} pgprot_t;
  57typedef struct page *pgtable_t;
  58
  59#define pte_val(x)      ((x).pte)
  60#define pgd_val(x)      ((x).pgd)
  61#define pgprot_val(x)   ((x).pgprot)
  62
  63#define __pte(x)        ((pte_t) { (x) })
  64#define __pgd(x)        ((pgd_t) { (x) })
  65#define __pgprot(x)     ((pgprot_t) { (x) })
  66
  67#endif /* !__ASSEMBLY__ */
  68
  69
  70#ifndef __ASSEMBLY__
  71
  72#define __va(x) ((void *)((unsigned long)(x) + PAGE_OFFSET))
  73#define __pa(x) ((unsigned long) (x) - PAGE_OFFSET)
  74
  75#define virt_to_pfn(kaddr)      (__pa(kaddr) >> PAGE_SHIFT)
  76#define pfn_to_virt(pfn)        __va((pfn) << PAGE_SHIFT)
  77
  78#define virt_to_page(addr) \
  79        (mem_map + (((unsigned long)(addr)-PAGE_OFFSET) >> PAGE_SHIFT))
  80
  81#define page_to_phys(page)      ((dma_addr_t)page_to_pfn(page) << PAGE_SHIFT)
  82
  83#define pfn_valid(pfn)          ((pfn) < max_mapnr)
  84
  85#define virt_addr_valid(kaddr)  (pfn_valid(virt_to_pfn(kaddr)))
  86
  87#endif /* __ASSEMBLY__ */
  88
  89#include <asm-generic/memory_model.h>
  90#include <asm-generic/getorder.h>
  91
  92#endif /* __ASM_OPENRISC_PAGE_H */
  93