cregit-Linux how code gets into the kernel

Release 4.11 arch/arm/include/asm/page.h

/*
 *  arch/arm/include/asm/page.h
 *
 *  Copyright (C) 1995-2003 Russell King
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */
#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 \
	(((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0) | \
         VM_READ | VM_WRITE | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)

#include <asm-generic/getorder.h>

#endif

Overall Contributors

PersonTokensPropCommitsCommitProp
Russell King28966.44%1948.72%
Linus Torvalds (pre-git)4811.03%512.82%
Lennert Buytenhek409.20%25.13%
Paulius Zaleckas204.60%12.56%
Catalin Marinas132.99%25.13%
Will Deacon71.61%25.13%
Martin Schwidefsky61.38%12.56%
David Mosberger-Tang30.69%12.56%
Greg Ungerer30.69%12.56%
Ralph Siemsen20.46%12.56%
Cyril Chemparathy10.23%12.56%
Arnd Bergmann10.23%12.56%
David Howells10.23%12.56%
Linus Walleij10.23%12.56%
Total435100.00%39100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.