2006-11-30 13:53:54 +00:00
# ifdef CONFIG_MMU
2008-09-16 13:05:53 -04:00
/* the upper-most page table pointer */
2006-08-21 17:06:38 +01:00
extern pmd_t * top_pmd ;
2011-07-02 14:46:27 +01:00
/*
* 0xffff8000 to 0xffffffff is reserved for any ARM architecture
* specific hacks for copying pages efficiently , while 0xffff4000
* is reserved for VIPT aliasing flushing by generic code .
*
* Note that we don ' t allow VIPT aliasing caches with SMP .
*/
# define COPYPAGE_MINICACHE 0xffff8000
# define COPYPAGE_V6_FROM 0xffff8000
# define COPYPAGE_V6_TO 0xffffc000
/* PFN alias flushing, for VIPT caches */
# define FLUSH_ALIAS_START 0xffff4000
2011-07-02 15:20:44 +01:00
static inline void set_top_pte ( unsigned long va , pte_t pte )
{
2011-07-04 11:25:53 +01:00
pte_t * ptep = pte_offset_kernel ( top_pmd , va ) ;
set_pte_ext ( ptep , pte , 0 ) ;
2011-07-02 15:20:44 +01:00
local_flush_tlb_kernel_page ( va ) ;
}
2011-07-04 11:22:27 +01:00
static inline pte_t get_top_pte ( unsigned long va )
{
2011-07-04 11:25:53 +01:00
pte_t * ptep = pte_offset_kernel ( top_pmd , va ) ;
return * ptep ;
2011-07-04 11:22:27 +01:00
}
2006-08-21 17:06:38 +01:00
static inline pmd_t * pmd_off_k ( unsigned long virt )
{
2011-05-26 19:50:30 +01:00
return pmd_offset ( pud_offset ( pgd_offset_k ( virt ) , virt ) , virt ) ;
2006-08-21 17:06:38 +01:00
}
2007-04-21 10:47:29 +01:00
struct mem_type {
2010-11-16 00:22:09 +00:00
pteval_t prot_pte ;
2011-09-05 17:51:56 +01:00
pmdval_t prot_l1 ;
pmdval_t prot_sect ;
2007-04-21 10:47:29 +01:00
unsigned int domain ;
} ;
const struct mem_type * get_mem_type ( unsigned int type ) ;
2009-10-24 14:11:59 +01:00
extern void __flush_dcache_page ( struct address_space * mapping , struct page * page ) ;
2011-09-16 01:14:23 -04:00
/*
* ARM specific vm_struct - > flags bits .
*/
/* (super)section-mapped I/O regions used by ioremap()/iounmap() */
# define VM_ARM_SECTION_MAPPING 0x80000000
/* permanent static mappings from iotable_init() */
# define VM_ARM_STATIC_MAPPING 0x40000000
2012-08-25 09:03:15 +01:00
/* empty mapping */
# define VM_ARM_EMPTY_MAPPING 0x20000000
2011-09-16 01:14:23 -04:00
/* mapping type (attributes) for permanent static mappings */
# define VM_ARM_MTYPE(mt) ((mt) << 20)
# define VM_ARM_MTYPE_MASK (0x1f << 20)
2012-07-30 09:11:33 +02:00
/* consistent regions used by dma_alloc_attrs() */
# define VM_ARM_DMA_CONSISTENT 0x20000000
2006-11-30 13:53:54 +00:00
# endif
2011-07-08 21:26:59 +01:00
# ifdef CONFIG_ZONE_DMA
2012-06-06 12:05:01 +02:00
extern phys_addr_t arm_dma_limit ;
2011-07-08 21:26:59 +01:00
# else
2012-07-05 13:11:31 +01:00
# define arm_dma_limit ((phys_addr_t)~0)
2011-07-08 21:26:59 +01:00
# endif
2011-12-29 13:09:51 +01:00
extern phys_addr_t arm_lowmem_limit ;
2010-05-22 19:47:18 +01:00
void __init bootmem_init ( void ) ;
2010-07-09 16:27:52 +01:00
void arm_mm_memblock_reserve ( void ) ;
2011-12-29 13:09:51 +01:00
void dma_contiguous_remap ( void ) ;