mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
168 lines
3.4 KiB
168 lines
3.4 KiB
/* SPDX-License-Identifier: GPL-2.0-only */ |
|
/* |
|
* arch/arm/include/asm/page.h |
|
* |
|
* Copyright (C) 1995-2003 Russell King |
|
*/ |
|
#ifndef _ASMARM_PAGE_H |
|
#define _ASMARM_PAGE_H |
|
|
|
/* PAGE_SHIFT determines the page size */ |
|
#define PAGE_SHIFT 12 |
|
#define PAGE_SIZE (_AC(1,UL) << PAGE_SHIFT) |
|
#define PAGE_MASK (~((1 << PAGE_SHIFT) - 1)) |
|
|
|
#ifndef __ASSEMBLY__ |
|
|
|
#ifndef CONFIG_MMU |
|
|
|
#include <asm/page-nommu.h> |
|
|
|
#else |
|
|
|
#include <asm/glue.h> |
|
|
|
/* |
|
* User Space Model |
|
* ================ |
|
* |
|
* This section selects the correct set of functions for dealing with |
|
* page-based copying and clearing for user space for the particular |
|
* processor(s) we're building for. |
|
* |
|
* We have the following to choose from: |
|
* v4wt - ARMv4 with writethrough cache, without minicache |
|
* v4wb - ARMv4 with writeback cache, without minicache |
|
* v4_mc - ARMv4 with minicache |
|
* xscale - Xscale |
|
* xsc3 - XScalev3 |
|
*/ |
|
#undef _USER |
|
#undef MULTI_USER |
|
|
|
#ifdef CONFIG_CPU_COPY_V4WT |
|
# ifdef _USER |
|
# define MULTI_USER 1 |
|
# else |
|
# define _USER v4wt |
|
# endif |
|
#endif |
|
|
|
#ifdef CONFIG_CPU_COPY_V4WB |
|
# ifdef _USER |
|
# define MULTI_USER 1 |
|
# else |
|
# define _USER v4wb |
|
# endif |
|
#endif |
|
|
|
#ifdef CONFIG_CPU_COPY_FEROCEON |
|
# ifdef _USER |
|
# define MULTI_USER 1 |
|
# else |
|
# define _USER feroceon |
|
# endif |
|
#endif |
|
|
|
#ifdef CONFIG_CPU_COPY_FA |
|
# ifdef _USER |
|
# define MULTI_USER 1 |
|
# else |
|
# define _USER fa |
|
# endif |
|
#endif |
|
|
|
#ifdef CONFIG_CPU_SA1100 |
|
# ifdef _USER |
|
# define MULTI_USER 1 |
|
# else |
|
# define _USER v4_mc |
|
# endif |
|
#endif |
|
|
|
#ifdef CONFIG_CPU_XSCALE |
|
# ifdef _USER |
|
# define MULTI_USER 1 |
|
# else |
|
# define _USER xscale_mc |
|
# endif |
|
#endif |
|
|
|
#ifdef CONFIG_CPU_XSC3 |
|
# ifdef _USER |
|
# define MULTI_USER 1 |
|
# else |
|
# define _USER xsc3_mc |
|
# endif |
|
#endif |
|
|
|
#ifdef CONFIG_CPU_COPY_V6 |
|
# define MULTI_USER 1 |
|
#endif |
|
|
|
#if !defined(_USER) && !defined(MULTI_USER) |
|
#error Unknown user operations model |
|
#endif |
|
|
|
struct page; |
|
struct vm_area_struct; |
|
|
|
struct cpu_user_fns { |
|
void (*cpu_clear_user_highpage)(struct page *page, unsigned long vaddr); |
|
void (*cpu_copy_user_highpage)(struct page *to, struct page *from, |
|
unsigned long vaddr, struct vm_area_struct *vma); |
|
}; |
|
|
|
#ifdef MULTI_USER |
|
extern struct cpu_user_fns cpu_user; |
|
|
|
#define __cpu_clear_user_highpage cpu_user.cpu_clear_user_highpage |
|
#define __cpu_copy_user_highpage cpu_user.cpu_copy_user_highpage |
|
|
|
#else |
|
|
|
#define __cpu_clear_user_highpage __glue(_USER,_clear_user_highpage) |
|
#define __cpu_copy_user_highpage __glue(_USER,_copy_user_highpage) |
|
|
|
extern void __cpu_clear_user_highpage(struct page *page, unsigned long vaddr); |
|
extern void __cpu_copy_user_highpage(struct page *to, struct page *from, |
|
unsigned long vaddr, struct vm_area_struct *vma); |
|
#endif |
|
|
|
#define clear_user_highpage(page,vaddr) \ |
|
__cpu_clear_user_highpage(page, vaddr) |
|
|
|
#define __HAVE_ARCH_COPY_USER_HIGHPAGE |
|
#define copy_user_highpage(to,from,vaddr,vma) \ |
|
__cpu_copy_user_highpage(to, from, vaddr, vma) |
|
|
|
#define clear_page(page) memset((void *)(page), 0, PAGE_SIZE) |
|
extern void copy_page(void *to, const void *from); |
|
|
|
#ifdef CONFIG_KUSER_HELPERS |
|
#define __HAVE_ARCH_GATE_AREA 1 |
|
#endif |
|
|
|
#ifdef CONFIG_ARM_LPAE |
|
#include <asm/pgtable-3level-types.h> |
|
#else |
|
#include <asm/pgtable-2level-types.h> |
|
#endif |
|
|
|
#endif /* CONFIG_MMU */ |
|
|
|
typedef struct page *pgtable_t; |
|
|
|
#ifdef CONFIG_HAVE_ARCH_PFN_VALID |
|
extern int pfn_valid(unsigned long); |
|
#endif |
|
|
|
#include <asm/memory.h> |
|
|
|
#endif /* !__ASSEMBLY__ */ |
|
|
|
#define VM_DATA_DEFAULT_FLAGS VM_DATA_FLAGS_TSK_EXEC |
|
|
|
#include <asm-generic/getorder.h> |
|
|
|
#endif
|
|
|