page.h (2288B)
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 */