]>
Commit | Line | Data |
---|---|---|
52e0a4b2 | 1 | --- xc/programs/Xserver/hw/xfree86/fbdevhw/fbdevhw.c.orig 2006-03-16 17:50:24.000000000 +0100 |
2 | +++ xc/programs/Xserver/hw/xfree86/fbdevhw/fbdevhw.c 2006-06-11 09:00:06.306443728 +0200 | |
3 | @@ -14,7 +14,7 @@ | |
4 | #include "fbdevhw.h" | |
5 | #include "fbpriv.h" | |
6 | ||
7 | -#include "asm/page.h" /* #define for PAGE_* */ | |
b78f007d | 8 | +#include "page.h" /* #define for PAGE_* */ |
52e0a4b2 | 9 | |
10 | #include "globals.h" | |
11 | #define DPMS_SERVER | |
b78f007d | 12 | --- xc/programs/Xserver/hw/xfree86/fbdevhw/page.h.old 2006-05-19 10:06:31.436211880 +0200 |
13 | +++ xc/programs/Xserver/hw/xfree86/fbdevhw/page.h 2006-04-18 01:30:30.230704088 +0200 | |
14 | @@ -0,0 +1,174 @@ | |
15 | +#ifndef _I386_PAGE_H | |
16 | +#define _I386_PAGE_H | |
17 | + | |
18 | +/* PAGE_SHIFT determines the page size */ | |
19 | +#define PAGE_SHIFT 12 | |
20 | +#define PAGE_SIZE (1UL << PAGE_SHIFT) | |
21 | +#define PAGE_MASK (~(PAGE_SIZE-1)) | |
22 | + | |
23 | +#define LARGE_PAGE_MASK (~(LARGE_PAGE_SIZE-1)) | |
24 | +#define LARGE_PAGE_SIZE (1UL << PMD_SHIFT) | |
25 | + | |
26 | +#ifdef __KERNEL__ | |
27 | +#ifndef __ASSEMBLY__ | |
28 | + | |
29 | +#include <linux/config.h> | |
30 | + | |
31 | +#ifdef CONFIG_X86_USE_3DNOW | |
32 | + | |
33 | +#include <asm/mmx.h> | |
34 | + | |
35 | +#define clear_page(page) mmx_clear_page((void *)(page)) | |
36 | +#define copy_page(to,from) mmx_copy_page(to,from) | |
37 | + | |
38 | +#else | |
39 | + | |
40 | +/* | |
41 | + * On older X86 processors it's not a win to use MMX here it seems. | |
42 | + * Maybe the K6-III ? | |
43 | + */ | |
44 | + | |
45 | +#define clear_page(page) memset((void *)(page), 0, PAGE_SIZE) | |
46 | +#define copy_page(to,from) memcpy((void *)(to), (void *)(from), PAGE_SIZE) | |
47 | + | |
48 | +#endif | |
49 | + | |
50 | +#define clear_user_page(page, vaddr, pg) clear_page(page) | |
51 | +#define copy_user_page(to, from, vaddr, pg) copy_page(to, from) | |
52 | + | |
53 | +#define alloc_zeroed_user_highpage(vma, vaddr) alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO, vma, vaddr) | |
54 | +#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE | |
55 | + | |
56 | +/* | |
57 | + * These are used to make use of C type-checking.. | |
58 | + */ | |
59 | +extern int nx_enabled; | |
60 | +#ifdef CONFIG_X86_PAE | |
61 | +extern unsigned long long __supported_pte_mask; | |
62 | +typedef struct { unsigned long pte_low, pte_high; } pte_t; | |
63 | +typedef struct { unsigned long long pmd; } pmd_t; | |
64 | +typedef struct { unsigned long long pgd; } pgd_t; | |
65 | +typedef struct { unsigned long long pgprot; } pgprot_t; | |
66 | +#define pmd_val(x) ((x).pmd) | |
67 | +#define pte_val(x) ((x).pte_low | ((unsigned long long)(x).pte_high << 32)) | |
68 | +#define __pmd(x) ((pmd_t) { (x) } ) | |
69 | +#define HPAGE_SHIFT 21 | |
70 | +#else | |
71 | +typedef struct { unsigned long pte_low; } pte_t; | |
72 | +typedef struct { unsigned long pgd; } pgd_t; | |
73 | +typedef struct { unsigned long pgprot; } pgprot_t; | |
74 | +#define boot_pte_t pte_t /* or would you rather have a typedef */ | |
75 | +#define pte_val(x) ((x).pte_low) | |
76 | +#define HPAGE_SHIFT 22 | |
77 | +#endif | |
78 | +#define PTE_MASK PAGE_MASK | |
79 | + | |
80 | +#ifdef CONFIG_HUGETLB_PAGE | |
81 | +#define HPAGE_SIZE ((1UL) << HPAGE_SHIFT) | |
82 | +#define HPAGE_MASK (~(HPAGE_SIZE - 1)) | |
83 | +#define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT) | |
84 | +#define HAVE_ARCH_HUGETLB_UNMAPPED_AREA | |
85 | +#endif | |
86 | + | |
87 | +#define pgd_val(x) ((x).pgd) | |
88 | +#define pgprot_val(x) ((x).pgprot) | |
89 | + | |
90 | +#define __pte(x) ((pte_t) { (x) } ) | |
91 | +#define __pgd(x) ((pgd_t) { (x) } ) | |
92 | +#define __pgprot(x) ((pgprot_t) { (x) } ) | |
93 | + | |
94 | +#endif /* !__ASSEMBLY__ */ | |
95 | + | |
96 | +/* to align the pointer to the (next) page boundary */ | |
97 | +#define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK) | |
98 | + | |
99 | +/* | |
100 | + * This handles the memory map.. We could make this a config | |
101 | + * option, but too many people screw it up, and too few need | |
102 | + * it. | |
103 | + * | |
104 | + * A __PAGE_OFFSET of 0xC0000000 means that the kernel has | |
105 | + * a virtual address space of one gigabyte, which limits the | |
106 | + * amount of physical memory you can use to about 950MB. | |
107 | + * | |
108 | + * If you want more physical memory than this then see the CONFIG_HIGHMEM4G | |
109 | + * and CONFIG_HIGHMEM64G options in the kernel configuration. | |
110 | + */ | |
111 | + | |
112 | +#ifndef __ASSEMBLY__ | |
113 | + | |
114 | +/* | |
115 | + * This much address space is reserved for vmalloc() and iomap() | |
116 | + * as well as fixmap mappings. | |
117 | + */ | |
118 | +extern unsigned int __VMALLOC_RESERVE; | |
119 | + | |
120 | +extern int sysctl_legacy_va_layout; | |
121 | + | |
122 | +extern int page_is_ram(unsigned long pagenr); | |
123 | + | |
124 | +#endif /* __ASSEMBLY__ */ | |
125 | + | |
126 | +#if defined(CONFIG_VMSPLIT_3G_OPT) /* defined CONFIG_VMSPLIT_3G_OPT */ | |
127 | +#ifdef __ASSEMBLY__ | |
128 | +#define __PAGE_OFFSET (0xB0000000) | |
129 | +#define __PHYSICAL_START CONFIG_PHYSICAL_START | |
130 | +#else | |
131 | +#define __PAGE_OFFSET (0xB0000000UL) | |
132 | +#define __PHYSICAL_START ((unsigned long)CONFIG_PHYSICAL_START) | |
133 | +#endif | |
134 | +#elif defined(CONFIG_VMSPLIT_2G) /* defined CONFIG_VMSPLIT_2G */ | |
135 | +#ifdef __ASSEMBLY__ | |
136 | +#define __PAGE_OFFSET (0x78000000) | |
137 | +#define __PHYSICAL_START CONFIG_PHYSICAL_START | |
138 | +#else | |
139 | +#define __PAGE_OFFSET (0x78000000UL) | |
140 | +#define __PHYSICAL_START ((unsigned long)CONFIG_PHYSICAL_START) | |
141 | +#endif | |
142 | +#elif defined(CONFIG_VMSPLIT_1G) /* defined CONFIG_VMSPLIT_1G */ | |
143 | +#ifdef __ASSEMBLY__ | |
144 | +#define __PAGE_OFFSET (0x40000000) | |
145 | +#define __PHYSICAL_START CONFIG_PHYSICAL_START | |
146 | +#else | |
147 | +#define __PAGE_OFFSET (0x40000000UL) | |
148 | +#define __PHYSICAL_START ((unsigned long)CONFIG_PHYSICAL_START) | |
149 | +#endif | |
150 | +#else /* defined CONFIG_VMSPLIT_3G */ | |
151 | +#ifdef __ASSEMBLY__ | |
152 | +#define __PAGE_OFFSET (0xC0000000) | |
153 | +#define __PHYSICAL_START CONFIG_PHYSICAL_START | |
154 | +#else | |
155 | +#define __PAGE_OFFSET (0xC0000000UL) | |
156 | +#define __PHYSICAL_START ((unsigned long)CONFIG_PHYSICAL_START) | |
157 | +#endif | |
158 | +#endif /* end */ | |
159 | + | |
160 | + | |
161 | +#define __KERNEL_START (__PAGE_OFFSET + __PHYSICAL_START) | |
162 | + | |
163 | + | |
164 | +#define PAGE_OFFSET ((unsigned long)__PAGE_OFFSET) | |
165 | +#define VMALLOC_RESERVE ((unsigned long)__VMALLOC_RESERVE) | |
166 | +#define MAXMEM (-__PAGE_OFFSET-__VMALLOC_RESERVE) | |
167 | +#define __pa(x) ((unsigned long)(x)-PAGE_OFFSET) | |
168 | +#define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET)) | |
169 | +#define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT) | |
170 | +#ifdef CONFIG_FLATMEM | |
171 | +#define pfn_to_page(pfn) (mem_map + (pfn)) | |
172 | +#define page_to_pfn(page) ((unsigned long)((page) - mem_map)) | |
173 | +#define pfn_valid(pfn) ((pfn) < max_mapnr) | |
174 | +#endif /* CONFIG_FLATMEM */ | |
175 | +#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) | |
176 | + | |
177 | +#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) | |
178 | + | |
179 | +#define VM_DATA_DEFAULT_FLAGS \ | |
180 | + (VM_READ | VM_WRITE | \ | |
181 | + ((current->personality & READ_IMPLIES_EXEC) ? VM_EXEC : 0 ) | \ | |
182 | + VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) | |
183 | + | |
184 | +#endif /* __KERNEL__ */ | |
185 | + | |
186 | +#include <asm-generic/page.h> | |
187 | + | |
188 | +#endif /* _I386_PAGE_H */ |