execve: must clear current->clear_child_tid
[linux/fpc-iii.git] / include / asm-x86 / page_32.h
blobab8528793f081bef8d7c945b7bddbaf1bff54073
1 #ifndef _ASM_X86_PAGE_32_H
2 #define _ASM_X86_PAGE_32_H
4 /*
5 * This handles the memory map.
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.
11 * If you want more physical memory than this then see the CONFIG_HIGHMEM4G
12 * and CONFIG_HIGHMEM64G options in the kernel configuration.
14 #define __PAGE_OFFSET _AC(CONFIG_PAGE_OFFSET, UL)
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)
24 #ifdef CONFIG_X86_PAE
25 /* 44=32+12, the limit we can fit into an unsigned long pfn */
26 #define __PHYSICAL_MASK_SHIFT 44
27 #define __VIRTUAL_MASK_SHIFT 32
28 #define PAGETABLE_LEVELS 3
30 #ifndef __ASSEMBLY__
31 typedef u64 pteval_t;
32 typedef u64 pmdval_t;
33 typedef u64 pudval_t;
34 typedef u64 pgdval_t;
35 typedef u64 pgprotval_t;
36 typedef u64 phys_addr_t;
38 typedef union {
39 struct {
40 unsigned long pte_low, pte_high;
42 pteval_t pte;
43 } pte_t;
44 #endif /* __ASSEMBLY__
46 #else /* !CONFIG_X86_PAE */
47 #define __PHYSICAL_MASK_SHIFT 32
48 #define __VIRTUAL_MASK_SHIFT 32
49 #define PAGETABLE_LEVELS 2
51 #ifndef __ASSEMBLY__
52 typedef unsigned long pteval_t;
53 typedef unsigned long pmdval_t;
54 typedef unsigned long pudval_t;
55 typedef unsigned long pgdval_t;
56 typedef unsigned long pgprotval_t;
57 typedef unsigned long phys_addr_t;
59 typedef union {
60 pteval_t pte;
61 pteval_t pte_low;
62 } pte_t;
64 #endif /* __ASSEMBLY__ */
65 #endif /* CONFIG_X86_PAE */
67 #ifndef __ASSEMBLY__
68 typedef struct page *pgtable_t;
69 #endif
71 #ifdef CONFIG_HUGETLB_PAGE
72 #define HAVE_ARCH_HUGETLB_UNMAPPED_AREA
73 #endif
75 #ifndef __ASSEMBLY__
76 #define __phys_addr(x) ((x) - PAGE_OFFSET)
77 #define __phys_reloc_hide(x) RELOC_HIDE((x), 0)
79 #ifdef CONFIG_FLATMEM
80 #define pfn_valid(pfn) ((pfn) < max_mapnr)
81 #endif /* CONFIG_FLATMEM */
83 extern int nx_enabled;
86 * This much address space is reserved for vmalloc() and iomap()
87 * as well as fixmap mappings.
89 extern unsigned int __VMALLOC_RESERVE;
90 extern int sysctl_legacy_va_layout;
92 #define VMALLOC_RESERVE ((unsigned long)__VMALLOC_RESERVE)
93 #define MAXMEM (-__PAGE_OFFSET - __VMALLOC_RESERVE)
95 extern void find_low_pfn_range(void);
96 extern unsigned long init_memory_mapping(unsigned long start,
97 unsigned long end);
98 extern void initmem_init(unsigned long, unsigned long);
99 extern void setup_bootmem_allocator(void);
102 #ifdef CONFIG_X86_USE_3DNOW
103 #include <asm/mmx.h>
105 static inline void clear_page(void *page)
107 mmx_clear_page(page);
110 static inline void copy_page(void *to, void *from)
112 mmx_copy_page(to, from);
114 #else /* !CONFIG_X86_USE_3DNOW */
115 #include <linux/string.h>
117 static inline void clear_page(void *page)
119 memset(page, 0, PAGE_SIZE);
122 static inline void copy_page(void *to, void *from)
124 memcpy(to, from, PAGE_SIZE);
126 #endif /* CONFIG_X86_3DNOW */
127 #endif /* !__ASSEMBLY__ */
129 #endif /* _ASM_X86_PAGE_32_H */