]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blame - include/asm-x86/page_32.h
Merge branches 'pxa-ian' and 'pxa-xm270' into pxa
[mirror_ubuntu-artful-kernel.git] / include / asm-x86 / page_32.h
CommitLineData
11b7c7dc
JF
1#ifndef _ASM_X86_PAGE_32_H
2#define _ASM_X86_PAGE_32_H
3
4/*
5 * This handles the memory map.
6 *
7 * A __PAGE_OFFSET of 0xC0000000 means that the kernel has
8 * a virtual address space of one gigabyte, which limits the
9 * amount of physical memory you can use to about 950MB.
10 *
11 * If you want more physical memory than this then see the CONFIG_HIGHMEM4G
12 * and CONFIG_HIGHMEM64G options in the kernel configuration.
13 */
14#define __PAGE_OFFSET _AC(CONFIG_PAGE_OFFSET, UL)
15
16#ifdef CONFIG_X86_PAE
ad524d46
JF
17/* 44=32+12, the limit we can fit into an unsigned long pfn */
18#define __PHYSICAL_MASK_SHIFT 44
11b7c7dc
JF
19#define __VIRTUAL_MASK_SHIFT 32
20#define PAGETABLE_LEVELS 3
1da177e4 21
1da177e4 22#ifndef __ASSEMBLY__
11b7c7dc
JF
23typedef u64 pteval_t;
24typedef u64 pmdval_t;
25typedef u64 pudval_t;
26typedef u64 pgdval_t;
27typedef u64 pgprotval_t;
28typedef u64 phys_addr_t;
1da177e4 29
c8e5393a
JF
30typedef union {
31 struct {
32 unsigned long pte_low, pte_high;
33 };
34 pteval_t pte;
35} pte_t;
11b7c7dc 36#endif /* __ASSEMBLY__
1da177e4 37 */
11b7c7dc
JF
38#else /* !CONFIG_X86_PAE */
39#define __PHYSICAL_MASK_SHIFT 32
40#define __VIRTUAL_MASK_SHIFT 32
41#define PAGETABLE_LEVELS 2
42
43#ifndef __ASSEMBLY__
44typedef unsigned long pteval_t;
45typedef unsigned long pmdval_t;
46typedef unsigned long pudval_t;
47typedef unsigned long pgdval_t;
48typedef unsigned long pgprotval_t;
49typedef unsigned long phys_addr_t;
3dc494e8 50
095d1c4e
JP
51typedef union {
52 pteval_t pte;
53 pteval_t pte_low;
54} pte_t;
11b7c7dc 55
11b7c7dc
JF
56#endif /* __ASSEMBLY__ */
57#endif /* CONFIG_X86_PAE */
58
3bf8f5a9
IM
59#ifndef __ASSEMBLY__
60typedef struct page *pgtable_t;
61#endif
62
11b7c7dc
JF
63#ifdef CONFIG_HUGETLB_PAGE
64#define HAVE_ARCH_HUGETLB_UNMAPPED_AREA
65#endif
1da177e4 66
1da177e4 67#ifndef __ASSEMBLY__
095d1c4e 68#define __phys_addr(x) ((x) - PAGE_OFFSET)
11b7c7dc
JF
69#define __phys_reloc_hide(x) RELOC_HIDE((x), 0)
70
71#ifdef CONFIG_FLATMEM
72#define pfn_valid(pfn) ((pfn) < max_mapnr)
73#endif /* CONFIG_FLATMEM */
74
75extern int nx_enabled;
76
77/*
78 * This much address space is reserved for vmalloc() and iomap()
79 * as well as fixmap mappings.
80 */
81extern unsigned int __VMALLOC_RESERVE;
82extern int sysctl_legacy_va_layout;
11b7c7dc
JF
83
84#define VMALLOC_RESERVE ((unsigned long)__VMALLOC_RESERVE)
095d1c4e 85#define MAXMEM (-__PAGE_OFFSET - __VMALLOC_RESERVE)
1da177e4 86
11b7c7dc
JF
87#ifdef CONFIG_X86_USE_3DNOW
88#include <asm/mmx.h>
e6e5494c 89
11b7c7dc
JF
90static inline void clear_page(void *page)
91{
92 mmx_clear_page(page);
93}
1da177e4 94
11b7c7dc
JF
95static inline void copy_page(void *to, void *from)
96{
97 mmx_copy_page(to, from);
98}
99#else /* !CONFIG_X86_USE_3DNOW */
100#include <linux/string.h>
1da177e4 101
11b7c7dc
JF
102static inline void clear_page(void *page)
103{
104 memset(page, 0, PAGE_SIZE);
105}
fd4fd5aa 106
11b7c7dc
JF
107static inline void copy_page(void *to, void *from)
108{
109 memcpy(to, from, PAGE_SIZE);
110}
111#endif /* CONFIG_X86_3DNOW */
112#endif /* !__ASSEMBLY__ */
cd469e0c 113
11b7c7dc 114#endif /* _ASM_X86_PAGE_32_H */