OpenCores
URL https://opencores.org/ocsvn/c0or1k/c0or1k/trunk

Subversion Repositories c0or1k

[/] [c0or1k/] [trunk/] [include/] [l4/] [glue/] [arm/] [mapping.h] - Rev 2

Compare with Previous | Blame | View Log

/*
 * Generic mapping operations
 *
 * Operations on address space mappings that
 * all subarchitectures support generically.
 *
 * Copyright (C) 2008 - 2010 B Labs Ltd.
 * Written by Bahadir Balban
 */
 
#ifndef __ARM_GLUE_MAPPING_H__
#define __ARM_GLUE_MAPPING_H__
 
#include INC_SUBARCH(mm.h)
 
#define TASK_PGD(x)		(x)->space->pgd
 
unsigned int space_flags_to_ptflags(unsigned int flags);
 
void add_mapping_pgd(unsigned long paddr, unsigned long vaddr,
		     unsigned int size, unsigned int flags,
		     pgd_table_t *pgd);
 
void add_mapping(unsigned long paddr, unsigned long vaddr,
		 unsigned int size, unsigned int flags);
 
void add_boot_mapping(unsigned long paddr, unsigned long vaddr,
		      unsigned int size, unsigned int flags);
 
int remove_mapping(unsigned long vaddr);
int remove_mapping_pgd(pgd_table_t *pgd, unsigned long vaddr);
void remove_mapping_pgd_all_user(pgd_table_t *pgd);
 
int check_mapping_pgd(unsigned long vaddr, unsigned long size,
		      unsigned int flags, pgd_table_t *pgd);
 
int check_mapping(unsigned long vaddr, unsigned long size,
		  unsigned int flags);
 
void copy_pgd_kern_all(pgd_table_t *);
 
struct address_space;
int delete_page_tables(struct address_space *space);
int copy_user_tables(struct address_space *new, struct address_space *orig);
void remap_as_pages(void *vstart, void *vend);
 
void copy_pgds_by_vrange(pgd_table_t *to, pgd_table_t *from,
			 unsigned long start, unsigned long end);
 
/*
 * TODO: Some of these may be made inline by
 * removing their signature from here completely
 * and creating an arch-specific mapping.h which
 * has inline definitions or just signatures.
 */
 
pte_t virt_to_pte(unsigned long vaddr);
pte_t *virt_to_ptep(unsigned long vaddr);
pte_t virt_to_pte_from_pgd(pgd_table_t *pgd, unsigned long vaddr);
unsigned long virt_to_phys_by_pgd(pgd_table_t *pgd, unsigned long vaddr);
 
void arch_prepare_pte(u32 paddr, u32 vaddr, unsigned int flags,
		      pte_t *ptep);
 
void arch_write_pte(pte_t *ptep, pte_t pte, u32 vaddr);
 
void arch_prepare_write_pte(u32 paddr, u32 vaddr,
			    unsigned int flags, pte_t *ptep);
 
pmd_t *arch_pick_pmd(pgd_table_t *pgd, unsigned long vaddr);
 
void arch_write_pmd(pmd_t *pmd_entry, u32 pmd_phys, u32 vaddr);
 
int arch_check_pte_access_perms(pte_t pte, unsigned int flags);
 
pgd_table_t *arch_realloc_page_tables(void);
 
void arch_copy_pgd_kernel_entries(pgd_table_t *to);
 
int is_global_pgdi(int i);
 
struct ktcb;
void arch_space_switch(struct ktcb *task);
 
int pgd_count_boot_pmds();
 
void idle_task(void);
 
#endif /* __ARM_GLUE_MAPPING_H__ */
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.