14baa9922SRussell King /* 24baa9922SRussell King * arch/arm/include/asm/pgtable-nommu.h 34baa9922SRussell King * 44baa9922SRussell King * Copyright (C) 1995-2002 Russell King 54baa9922SRussell King * Copyright (C) 2004 Hyok S. Choi 64baa9922SRussell King * 74baa9922SRussell King * This program is free software; you can redistribute it and/or modify 84baa9922SRussell King * it under the terms of the GNU General Public License version 2 as 94baa9922SRussell King * published by the Free Software Foundation. 104baa9922SRussell King */ 114baa9922SRussell King #ifndef _ASMARM_PGTABLE_NOMMU_H 124baa9922SRussell King #define _ASMARM_PGTABLE_NOMMU_H 134baa9922SRussell King 144baa9922SRussell King #ifndef __ASSEMBLY__ 154baa9922SRussell King 164baa9922SRussell King #include <linux/slab.h> 174baa9922SRussell King #include <asm/processor.h> 184baa9922SRussell King #include <asm/page.h> 194baa9922SRussell King 204baa9922SRussell King /* 214baa9922SRussell King * Trivial page table functions. 224baa9922SRussell King */ 234baa9922SRussell King #define pgd_present(pgd) (1) 244baa9922SRussell King #define pgd_none(pgd) (0) 254baa9922SRussell King #define pgd_bad(pgd) (0) 264baa9922SRussell King #define pgd_clear(pgdp) 274baa9922SRussell King #define kern_addr_valid(addr) (1) 284baa9922SRussell King #define pmd_offset(a, b) ((void *)0) 294baa9922SRussell King /* FIXME */ 304baa9922SRussell King /* 314baa9922SRussell King * PMD_SHIFT determines the size of the area a second-level page table can map 324baa9922SRussell King * PGDIR_SHIFT determines what a third-level page table entry can map 334baa9922SRussell King */ 344baa9922SRussell King #define PGDIR_SHIFT 21 354baa9922SRussell King 364baa9922SRussell King #define PGDIR_SIZE (1UL << PGDIR_SHIFT) 374baa9922SRussell King #define PGDIR_MASK (~(PGDIR_SIZE-1)) 384baa9922SRussell King /* FIXME */ 394baa9922SRussell King 404baa9922SRussell King #define PAGE_NONE __pgprot(0) 414baa9922SRussell King #define PAGE_SHARED __pgprot(0) 424baa9922SRussell King #define PAGE_COPY __pgprot(0) 434baa9922SRussell King #define PAGE_READONLY __pgprot(0) 444baa9922SRussell King #define PAGE_KERNEL __pgprot(0) 454baa9922SRussell King 464baa9922SRussell King #define swapper_pg_dir ((pgd_t *) 0) 474baa9922SRussell King 484baa9922SRussell King #define __swp_type(x) (0) 494baa9922SRussell King #define __swp_offset(x) (0) 504baa9922SRussell King #define __swp_entry(typ,off) ((swp_entry_t) { ((typ) | ((off) << 7)) }) 514baa9922SRussell King #define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) }) 524baa9922SRussell King #define __swp_entry_to_pte(x) ((pte_t) { (x).val }) 534baa9922SRussell King 544baa9922SRussell King 554baa9922SRussell King typedef pte_t *pte_addr_t; 564baa9922SRussell King 574baa9922SRussell King static inline int pte_file(pte_t pte) { return 0; } 584baa9922SRussell King 594baa9922SRussell King /* 604baa9922SRussell King * ZERO_PAGE is a global shared page that is always zero: used 614baa9922SRussell King * for zero-mapped memory areas etc.. 624baa9922SRussell King */ 634baa9922SRussell King #define ZERO_PAGE(vaddr) (virt_to_page(0)) 644baa9922SRussell King 654baa9922SRussell King /* 664baa9922SRussell King * Mark the prot value as uncacheable and unbufferable. 674baa9922SRussell King */ 684baa9922SRussell King #define pgprot_noncached(prot) __pgprot(0) 694baa9922SRussell King #define pgprot_writecombine(prot) __pgprot(0) 704baa9922SRussell King 714baa9922SRussell King 724baa9922SRussell King /* 734baa9922SRussell King * These would be in other places but having them here reduces the diffs. 744baa9922SRussell King */ 754baa9922SRussell King extern unsigned int kobjsize(const void *objp); 764baa9922SRussell King 774baa9922SRussell King /* 784baa9922SRussell King * No page table caches to initialise. 794baa9922SRussell King */ 804baa9922SRussell King #define pgtable_cache_init() do { } while (0) 814baa9922SRussell King #define io_remap_page_range remap_page_range 824baa9922SRussell King #define io_remap_pfn_range remap_pfn_range 834baa9922SRussell King 844baa9922SRussell King 854baa9922SRussell King /* 864baa9922SRussell King * All 32bit addresses are effectively valid for vmalloc... 874baa9922SRussell King * Sort of meaningless for non-VM targets. 884baa9922SRussell King */ 89*c931b4f6SFenkart/Bostandzhyan #define VMALLOC_START 0UL 90*c931b4f6SFenkart/Bostandzhyan #define VMALLOC_END 0xffffffffUL 914baa9922SRussell King 924baa9922SRussell King #define FIRST_USER_ADDRESS (0) 934baa9922SRussell King 944baa9922SRussell King #include <asm-generic/pgtable.h> 954baa9922SRussell King 964baa9922SRussell King #else 974baa9922SRussell King 984baa9922SRussell King /* 994baa9922SRussell King * dummy tlb and user structures. 1004baa9922SRussell King */ 1014baa9922SRussell King #define v3_tlb_fns (0) 1024baa9922SRussell King #define v4_tlb_fns (0) 1034baa9922SRussell King #define v4wb_tlb_fns (0) 1044baa9922SRussell King #define v4wbi_tlb_fns (0) 1054baa9922SRussell King #define v6wbi_tlb_fns (0) 1064baa9922SRussell King #define v7wbi_tlb_fns (0) 1074baa9922SRussell King 1084baa9922SRussell King #define v3_user_fns (0) 1094baa9922SRussell King #define v4_user_fns (0) 1104baa9922SRussell King #define v4_mc_user_fns (0) 1114baa9922SRussell King #define v4wb_user_fns (0) 1124baa9922SRussell King #define v4wt_user_fns (0) 1134baa9922SRussell King #define v6_user_fns (0) 1144baa9922SRussell King #define xscale_mc_user_fns (0) 1154baa9922SRussell King 1164baa9922SRussell King #endif /*__ASSEMBLY__*/ 1174baa9922SRussell King 1184baa9922SRussell King #endif /* _ASMARM_PGTABLE_H */ 119