Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/jk/spufs into...
[deliverable/linux.git] / arch / x86 / include / asm / page_32.h
CommitLineData
1965aae3
PA
1#ifndef _ASM_X86_PAGE_32_H
2#define _ASM_X86_PAGE_32_H
11b7c7dc
JF
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
b84200b3
CL
16#ifdef CONFIG_4KSTACKS
17#define THREAD_ORDER 0
18#else
19#define THREAD_ORDER 1
20#endif
21#define THREAD_SIZE (PAGE_SIZE << THREAD_ORDER)
22
699d2937
AH
23#define STACKFAULT_STACK 0
24#define DOUBLEFAULT_STACK 1
25#define NMI_STACK 0
26#define DEBUG_STACK 0
27#define MCE_STACK 0
28#define N_EXCEPTION_STACKS 1
b84200b3 29
11b7c7dc 30#ifdef CONFIG_X86_PAE
ad524d46
JF
31/* 44=32+12, the limit we can fit into an unsigned long pfn */
32#define __PHYSICAL_MASK_SHIFT 44
11b7c7dc
JF
33#define __VIRTUAL_MASK_SHIFT 32
34#define PAGETABLE_LEVELS 3
1da177e4 35
1da177e4 36#ifndef __ASSEMBLY__
11b7c7dc
JF
37typedef u64 pteval_t;
38typedef u64 pmdval_t;
39typedef u64 pudval_t;
40typedef u64 pgdval_t;
41typedef u64 pgprotval_t;
1da177e4 42
c8e5393a
JF
43typedef union {
44 struct {
45 unsigned long pte_low, pte_high;
46 };
47 pteval_t pte;
48} pte_t;
11b7c7dc 49#endif /* __ASSEMBLY__
1da177e4 50 */
11b7c7dc
JF
51#else /* !CONFIG_X86_PAE */
52#define __PHYSICAL_MASK_SHIFT 32
53#define __VIRTUAL_MASK_SHIFT 32
54#define PAGETABLE_LEVELS 2
55
56#ifndef __ASSEMBLY__
57typedef unsigned long pteval_t;
58typedef unsigned long pmdval_t;
59typedef unsigned long pudval_t;
60typedef unsigned long pgdval_t;
61typedef unsigned long pgprotval_t;
3dc494e8 62
095d1c4e
JP
63typedef union {
64 pteval_t pte;
65 pteval_t pte_low;
66} pte_t;
11b7c7dc 67
11b7c7dc
JF
68#endif /* __ASSEMBLY__ */
69#endif /* CONFIG_X86_PAE */
70
3bf8f5a9
IM
71#ifndef __ASSEMBLY__
72typedef struct page *pgtable_t;
73#endif
74
11b7c7dc
JF
75#ifdef CONFIG_HUGETLB_PAGE
76#define HAVE_ARCH_HUGETLB_UNMAPPED_AREA
77#endif
1da177e4 78
1da177e4 79#ifndef __ASSEMBLY__
af5c2bd1 80#define __phys_addr_nodebug(x) ((x) - PAGE_OFFSET)
a1bf9631 81#ifdef CONFIG_DEBUG_VIRTUAL
59ea7463 82extern unsigned long __phys_addr(unsigned long);
a1bf9631 83#else
af5c2bd1 84#define __phys_addr(x) __phys_addr_nodebug(x)
a1bf9631 85#endif
11b7c7dc
JF
86#define __phys_reloc_hide(x) RELOC_HIDE((x), 0)
87
88#ifdef CONFIG_FLATMEM
89#define pfn_valid(pfn) ((pfn) < max_mapnr)
90#endif /* CONFIG_FLATMEM */
91
92extern int nx_enabled;
93
94/*
95 * This much address space is reserved for vmalloc() and iomap()
96 * as well as fixmap mappings.
97 */
98extern unsigned int __VMALLOC_RESERVE;
99extern int sysctl_legacy_va_layout;
11b7c7dc 100
2ec65f8b 101extern void find_low_pfn_range(void);
4e29684c
YL
102extern unsigned long init_memory_mapping(unsigned long start,
103 unsigned long end);
2ec65f8b 104extern void initmem_init(unsigned long, unsigned long);
a80495ec 105extern void free_initmem(void);
b2ac82a0
YL
106extern void setup_bootmem_allocator(void);
107
108
11b7c7dc
JF
109#ifdef CONFIG_X86_USE_3DNOW
110#include <asm/mmx.h>
e6e5494c 111
11b7c7dc
JF
112static inline void clear_page(void *page)
113{
114 mmx_clear_page(page);
115}
1da177e4 116
11b7c7dc
JF
117static inline void copy_page(void *to, void *from)
118{
119 mmx_copy_page(to, from);
120}
121#else /* !CONFIG_X86_USE_3DNOW */
122#include <linux/string.h>
1da177e4 123
11b7c7dc
JF
124static inline void clear_page(void *page)
125{
126 memset(page, 0, PAGE_SIZE);
127}
fd4fd5aa 128
11b7c7dc
JF
129static inline void copy_page(void *to, void *from)
130{
131 memcpy(to, from, PAGE_SIZE);
132}
133#endif /* CONFIG_X86_3DNOW */
134#endif /* !__ASSEMBLY__ */
cd469e0c 135
1965aae3 136#endif /* _ASM_X86_PAGE_32_H */
This page took 0.481626 seconds and 5 git commands to generate.