xref: /openbmc/linux/arch/arm/include/asm/pgtable-nommu.h (revision 4baa9922430662431231ac637adedddbb0cfb2d7)
1*4baa9922SRussell King /*
2*4baa9922SRussell King  *  arch/arm/include/asm/pgtable-nommu.h
3*4baa9922SRussell King  *
4*4baa9922SRussell King  *  Copyright (C) 1995-2002 Russell King
5*4baa9922SRussell King  *  Copyright (C) 2004  Hyok S. Choi
6*4baa9922SRussell King  *
7*4baa9922SRussell King  * This program is free software; you can redistribute it and/or modify
8*4baa9922SRussell King  * it under the terms of the GNU General Public License version 2 as
9*4baa9922SRussell King  * published by the Free Software Foundation.
10*4baa9922SRussell King  */
11*4baa9922SRussell King #ifndef _ASMARM_PGTABLE_NOMMU_H
12*4baa9922SRussell King #define _ASMARM_PGTABLE_NOMMU_H
13*4baa9922SRussell King 
14*4baa9922SRussell King #ifndef __ASSEMBLY__
15*4baa9922SRussell King 
16*4baa9922SRussell King #include <linux/slab.h>
17*4baa9922SRussell King #include <asm/processor.h>
18*4baa9922SRussell King #include <asm/page.h>
19*4baa9922SRussell King 
20*4baa9922SRussell King /*
21*4baa9922SRussell King  * Trivial page table functions.
22*4baa9922SRussell King  */
23*4baa9922SRussell King #define pgd_present(pgd)	(1)
24*4baa9922SRussell King #define pgd_none(pgd)		(0)
25*4baa9922SRussell King #define pgd_bad(pgd)		(0)
26*4baa9922SRussell King #define pgd_clear(pgdp)
27*4baa9922SRussell King #define kern_addr_valid(addr)	(1)
28*4baa9922SRussell King #define	pmd_offset(a, b)	((void *)0)
29*4baa9922SRussell King /* FIXME */
30*4baa9922SRussell King /*
31*4baa9922SRussell King  * PMD_SHIFT determines the size of the area a second-level page table can map
32*4baa9922SRussell King  * PGDIR_SHIFT determines what a third-level page table entry can map
33*4baa9922SRussell King  */
34*4baa9922SRussell King #define PGDIR_SHIFT		21
35*4baa9922SRussell King 
36*4baa9922SRussell King #define PGDIR_SIZE		(1UL << PGDIR_SHIFT)
37*4baa9922SRussell King #define PGDIR_MASK		(~(PGDIR_SIZE-1))
38*4baa9922SRussell King /* FIXME */
39*4baa9922SRussell King 
40*4baa9922SRussell King #define PAGE_NONE	__pgprot(0)
41*4baa9922SRussell King #define PAGE_SHARED	__pgprot(0)
42*4baa9922SRussell King #define PAGE_COPY	__pgprot(0)
43*4baa9922SRussell King #define PAGE_READONLY	__pgprot(0)
44*4baa9922SRussell King #define PAGE_KERNEL	__pgprot(0)
45*4baa9922SRussell King 
46*4baa9922SRussell King #define swapper_pg_dir ((pgd_t *) 0)
47*4baa9922SRussell King 
48*4baa9922SRussell King #define __swp_type(x)		(0)
49*4baa9922SRussell King #define __swp_offset(x)		(0)
50*4baa9922SRussell King #define __swp_entry(typ,off)	((swp_entry_t) { ((typ) | ((off) << 7)) })
51*4baa9922SRussell King #define __pte_to_swp_entry(pte)	((swp_entry_t) { pte_val(pte) })
52*4baa9922SRussell King #define __swp_entry_to_pte(x)	((pte_t) { (x).val })
53*4baa9922SRussell King 
54*4baa9922SRussell King 
55*4baa9922SRussell King typedef pte_t *pte_addr_t;
56*4baa9922SRussell King 
57*4baa9922SRussell King static inline int pte_file(pte_t pte) { return 0; }
58*4baa9922SRussell King 
59*4baa9922SRussell King /*
60*4baa9922SRussell King  * ZERO_PAGE is a global shared page that is always zero: used
61*4baa9922SRussell King  * for zero-mapped memory areas etc..
62*4baa9922SRussell King  */
63*4baa9922SRussell King #define ZERO_PAGE(vaddr)	(virt_to_page(0))
64*4baa9922SRussell King 
65*4baa9922SRussell King /*
66*4baa9922SRussell King  * Mark the prot value as uncacheable and unbufferable.
67*4baa9922SRussell King  */
68*4baa9922SRussell King #define pgprot_noncached(prot)	__pgprot(0)
69*4baa9922SRussell King #define pgprot_writecombine(prot) __pgprot(0)
70*4baa9922SRussell King 
71*4baa9922SRussell King 
72*4baa9922SRussell King /*
73*4baa9922SRussell King  * These would be in other places but having them here reduces the diffs.
74*4baa9922SRussell King  */
75*4baa9922SRussell King extern unsigned int kobjsize(const void *objp);
76*4baa9922SRussell King 
77*4baa9922SRussell King /*
78*4baa9922SRussell King  * No page table caches to initialise.
79*4baa9922SRussell King  */
80*4baa9922SRussell King #define pgtable_cache_init()	do { } while (0)
81*4baa9922SRussell King #define io_remap_page_range	remap_page_range
82*4baa9922SRussell King #define io_remap_pfn_range	remap_pfn_range
83*4baa9922SRussell King 
84*4baa9922SRussell King 
85*4baa9922SRussell King /*
86*4baa9922SRussell King  * All 32bit addresses are effectively valid for vmalloc...
87*4baa9922SRussell King  * Sort of meaningless for non-VM targets.
88*4baa9922SRussell King  */
89*4baa9922SRussell King #define	VMALLOC_START	0
90*4baa9922SRussell King #define	VMALLOC_END	0xffffffff
91*4baa9922SRussell King 
92*4baa9922SRussell King #define FIRST_USER_ADDRESS      (0)
93*4baa9922SRussell King 
94*4baa9922SRussell King #include <asm-generic/pgtable.h>
95*4baa9922SRussell King 
96*4baa9922SRussell King #else
97*4baa9922SRussell King 
98*4baa9922SRussell King /*
99*4baa9922SRussell King  * dummy tlb and user structures.
100*4baa9922SRussell King  */
101*4baa9922SRussell King #define v3_tlb_fns	(0)
102*4baa9922SRussell King #define v4_tlb_fns	(0)
103*4baa9922SRussell King #define v4wb_tlb_fns	(0)
104*4baa9922SRussell King #define v4wbi_tlb_fns	(0)
105*4baa9922SRussell King #define v6wbi_tlb_fns	(0)
106*4baa9922SRussell King #define v7wbi_tlb_fns	(0)
107*4baa9922SRussell King 
108*4baa9922SRussell King #define v3_user_fns	(0)
109*4baa9922SRussell King #define v4_user_fns	(0)
110*4baa9922SRussell King #define v4_mc_user_fns	(0)
111*4baa9922SRussell King #define v4wb_user_fns	(0)
112*4baa9922SRussell King #define v4wt_user_fns	(0)
113*4baa9922SRussell King #define v6_user_fns	(0)
114*4baa9922SRussell King #define xscale_mc_user_fns (0)
115*4baa9922SRussell King 
116*4baa9922SRussell King #endif /*__ASSEMBLY__*/
117*4baa9922SRussell King 
118*4baa9922SRussell King #endif /* _ASMARM_PGTABLE_H */
119