18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * Copyright (C) 2005-2017 Andes Technology Corporation
48c2ecf20Sopenharmony_ci */
58c2ecf20Sopenharmony_ci
68c2ecf20Sopenharmony_ci#ifndef _ASMNDS32_PAGE_H
78c2ecf20Sopenharmony_ci#define _ASMNDS32_PAGE_H
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ci#ifdef CONFIG_ANDES_PAGE_SIZE_4KB
108c2ecf20Sopenharmony_ci#define PAGE_SHIFT      12
118c2ecf20Sopenharmony_ci#endif
128c2ecf20Sopenharmony_ci#ifdef CONFIG_ANDES_PAGE_SIZE_8KB
138c2ecf20Sopenharmony_ci#define PAGE_SHIFT      13
148c2ecf20Sopenharmony_ci#endif
158c2ecf20Sopenharmony_ci#include <linux/const.h>
168c2ecf20Sopenharmony_ci#define PAGE_SIZE       (_AC(1,UL) << PAGE_SHIFT)
178c2ecf20Sopenharmony_ci#define PAGE_MASK       (~(PAGE_SIZE-1))
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci#ifdef __KERNEL__
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci#ifndef __ASSEMBLY__
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_cistruct page;
248c2ecf20Sopenharmony_cistruct vm_area_struct;
258c2ecf20Sopenharmony_ci#ifdef CONFIG_CPU_CACHE_ALIASING
268c2ecf20Sopenharmony_ciextern void copy_user_highpage(struct page *to, struct page *from,
278c2ecf20Sopenharmony_ci			       unsigned long vaddr, struct vm_area_struct *vma);
288c2ecf20Sopenharmony_ciextern void clear_user_highpage(struct page *page, unsigned long vaddr);
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_civoid copy_user_page(void *vto, void *vfrom, unsigned long vaddr,
318c2ecf20Sopenharmony_ci		    struct page *to);
328c2ecf20Sopenharmony_civoid clear_user_page(void *addr, unsigned long vaddr, struct page *page);
338c2ecf20Sopenharmony_ci#define __HAVE_ARCH_COPY_USER_HIGHPAGE
348c2ecf20Sopenharmony_ci#define clear_user_highpage	clear_user_highpage
358c2ecf20Sopenharmony_ci#else
368c2ecf20Sopenharmony_ci#define clear_user_page(page, vaddr, pg)        clear_page(page)
378c2ecf20Sopenharmony_ci#define copy_user_page(to, from, vaddr, pg)     copy_page(to, from)
388c2ecf20Sopenharmony_ci#endif
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_civoid clear_page(void *page);
418c2ecf20Sopenharmony_civoid copy_page(void *to, void *from);
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_citypedef unsigned long pte_t;
448c2ecf20Sopenharmony_citypedef unsigned long pgd_t;
458c2ecf20Sopenharmony_citypedef unsigned long pgprot_t;
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci#define pte_val(x)      (x)
488c2ecf20Sopenharmony_ci#define pgd_val(x)	(x)
498c2ecf20Sopenharmony_ci#define pgprot_val(x)   (x)
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_ci#define __pte(x)        (x)
528c2ecf20Sopenharmony_ci#define __pgd(x)        (x)
538c2ecf20Sopenharmony_ci#define __pgprot(x)     (x)
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_citypedef struct page *pgtable_t;
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_ci#include <asm/memory.h>
588c2ecf20Sopenharmony_ci#include <asm-generic/getorder.h>
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_ci#endif /* !__ASSEMBLY__ */
618c2ecf20Sopenharmony_ci
628c2ecf20Sopenharmony_ci#endif /* __KERNEL__ */
638c2ecf20Sopenharmony_ci
648c2ecf20Sopenharmony_ci#endif
65