~ubuntu-branches/ubuntu/utopic/xen/utopic

« back to all changes in this revision

Viewing changes to xen/include/asm-x86/config.h

  • Committer: Bazaar Package Importer
  • Author(s): Bastian Blank
  • Date: 2010-05-06 15:47:38 UTC
  • mto: (1.3.1) (15.1.1 sid) (4.1.1 experimental)
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20100506154738-agoz0rlafrh1fnq7
Tags: upstream-4.0.0
ImportĀ upstreamĀ versionĀ 4.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/******************************************************************************
 
2
 * config.h
 
3
 * 
 
4
 * A Linux-style configuration list.
 
5
 */
 
6
 
 
7
#ifndef __X86_CONFIG_H__
 
8
#define __X86_CONFIG_H__
 
9
 
 
10
#if defined(__x86_64__)
 
11
# define CONFIG_PAGING_LEVELS 4
 
12
#else
 
13
# define CONFIG_PAGING_LEVELS 3
 
14
#endif
 
15
 
 
16
#define CONFIG_X86 1
 
17
#define CONFIG_X86_HT 1
 
18
#define CONFIG_PAGING_ASSISTANCE 1
 
19
#define CONFIG_SMP 1
 
20
#define CONFIG_X86_LOCAL_APIC 1
 
21
#define CONFIG_X86_GOOD_APIC 1
 
22
#define CONFIG_X86_IO_APIC 1
 
23
#define CONFIG_X86_PM_TIMER 1
 
24
#define CONFIG_HPET_TIMER 1
 
25
#define CONFIG_X86_MCE_THERMAL 1
 
26
#define CONFIG_NUMA 1
 
27
#define CONFIG_DISCONTIGMEM 1
 
28
#define CONFIG_NUMA_EMU 1
 
29
#define CONFIG_PAGEALLOC_MAX_ORDER (2 * PAGETABLE_ORDER)
 
30
 
 
31
/* Intel P4 currently has largest cache line (L2 line size is 128 bytes). */
 
32
#define CONFIG_X86_L1_CACHE_SHIFT 7
 
33
 
 
34
#define CONFIG_ACPI 1
 
35
#define CONFIG_ACPI_BOOT 1
 
36
#define CONFIG_ACPI_SLEEP 1
 
37
#define CONFIG_ACPI_NUMA 1
 
38
#define CONFIG_ACPI_SRAT 1
 
39
#define CONFIG_ACPI_CSTATE 1
 
40
 
 
41
#define CONFIG_VGA 1
 
42
 
 
43
#define CONFIG_HOTPLUG 1
 
44
#define CONFIG_HOTPLUG_CPU 1
 
45
 
 
46
#define HZ 100
 
47
 
 
48
#define OPT_CONSOLE_STR "vga"
 
49
 
 
50
#ifdef MAX_PHYS_CPUS
 
51
#define NR_CPUS MAX_PHYS_CPUS
 
52
#else
 
53
#define NR_CPUS 128
 
54
#endif
 
55
 
 
56
#ifdef __i386__
 
57
/* Maximum number of virtual CPUs in multi-processor guests. */
 
58
#define MAX_VIRT_CPUS XEN_LEGACY_MAX_VCPUS
 
59
#endif
 
60
 
 
61
/* Maximum we can support with current vLAPIC ID mapping. */
 
62
#define MAX_HVM_VCPUS 128
 
63
 
 
64
#ifdef CONFIG_X86_SUPERVISOR_MODE_KERNEL
 
65
# define supervisor_mode_kernel (1)
 
66
#else
 
67
# define supervisor_mode_kernel (0)
 
68
#endif
 
69
 
 
70
/* Linkage for x86 */
 
71
#define __ALIGN .align 16,0x90
 
72
#define __ALIGN_STR ".align 16,0x90"
 
73
#ifdef __ASSEMBLY__
 
74
#define ALIGN __ALIGN
 
75
#define ALIGN_STR __ALIGN_STR
 
76
#define ENTRY(name)                             \
 
77
  .globl name;                                  \
 
78
  ALIGN;                                        \
 
79
  name:
 
80
#endif
 
81
 
 
82
#define NR_hypercalls 64
 
83
 
 
84
#ifndef NDEBUG
 
85
#define MEMORY_GUARD
 
86
#endif
 
87
 
 
88
#ifdef __i386__
 
89
#define STACK_ORDER 2
 
90
#else
 
91
#define STACK_ORDER 3
 
92
#endif
 
93
#define STACK_SIZE  (PAGE_SIZE << STACK_ORDER)
 
94
 
 
95
/* Primary stack is restricted to 8kB by guard pages. */
 
96
#define PRIMARY_STACK_SIZE 8192
 
97
 
 
98
#define BOOT_TRAMPOLINE 0x88000
 
99
#define bootsym_phys(sym)                                 \
 
100
    (((unsigned long)&(sym)-(unsigned long)&trampoline_start)+BOOT_TRAMPOLINE)
 
101
#define bootsym(sym)                                      \
 
102
    (*RELOC_HIDE((typeof(&(sym)))__va(__pa(&(sym))),      \
 
103
                 BOOT_TRAMPOLINE-__pa(trampoline_start)))
 
104
#ifndef __ASSEMBLY__
 
105
extern char trampoline_start[], trampoline_end[];
 
106
extern char trampoline_realmode_entry[];
 
107
extern unsigned int trampoline_xen_phys_start;
 
108
extern unsigned char trampoline_cpu_started;
 
109
extern char wakeup_start[];
 
110
extern unsigned int video_mode, video_flags;
 
111
#endif
 
112
 
 
113
#if defined(__x86_64__)
 
114
 
 
115
#define CONFIG_X86_64 1
 
116
#define CONFIG_COMPAT 1
 
117
 
 
118
#define asmlinkage
 
119
 
 
120
#define PML4_ENTRY_BITS  39
 
121
#ifndef __ASSEMBLY__
 
122
#define PML4_ENTRY_BYTES (1UL << PML4_ENTRY_BITS)
 
123
#define PML4_ADDR(_slot)                             \
 
124
    ((((_slot ## UL) >> 8) * 0xffff000000000000UL) | \
 
125
     (_slot ## UL << PML4_ENTRY_BITS))
 
126
#define GB(_gb) (_gb ## UL << 30)
 
127
#else
 
128
#define PML4_ENTRY_BYTES (1 << PML4_ENTRY_BITS)
 
129
#define PML4_ADDR(_slot)                             \
 
130
    (((_slot >> 8) * 0xffff000000000000) | (_slot << PML4_ENTRY_BITS))
 
131
#define GB(_gb) (_gb << 30)
 
132
#endif
 
133
 
 
134
/*
 
135
 * Memory layout:
 
136
 *  0x0000000000000000 - 0x00007fffffffffff [128TB, 2^47 bytes, PML4:0-255]
 
137
 *    Guest-defined use (see below for compatibility mode guests).
 
138
 *  0x0000800000000000 - 0xffff7fffffffffff [16EB]
 
139
 *    Inaccessible: current arch only supports 48-bit sign-extended VAs.
 
140
 *  0xffff800000000000 - 0xffff803fffffffff [256GB, 2^38 bytes, PML4:256]
 
141
 *    Read-only machine-to-phys translation table (GUEST ACCESSIBLE).
 
142
 *  0xffff804000000000 - 0xffff807fffffffff [256GB, 2^38 bytes, PML4:256]
 
143
 *    Reserved for future shared info with the guest OS (GUEST ACCESSIBLE).
 
144
 *  0xffff808000000000 - 0xffff80ffffffffff [512GB, 2^39 bytes, PML4:257]
 
145
 *    ioremap for PCI mmconfig space
 
146
 *  0xffff810000000000 - 0xffff817fffffffff [512GB, 2^39 bytes, PML4:258]
 
147
 *    Guest linear page table.
 
148
 *  0xffff818000000000 - 0xffff81ffffffffff [512GB, 2^39 bytes, PML4:259]
 
149
 *    Shadow linear page table.
 
150
 *  0xffff820000000000 - 0xffff827fffffffff [512GB, 2^39 bytes, PML4:260]
 
151
 *    Per-domain mappings (e.g., GDT, LDT).
 
152
 *  0xffff828000000000 - 0xffff82bfffffffff [256GB, 2^38 bytes, PML4:261]
 
153
 *    Machine-to-phys translation table.
 
154
 *  0xffff82c000000000 - 0xffff82c3ffffffff [16GB,  2^34 bytes, PML4:261]
 
155
 *    ioremap()/fixmap area.
 
156
 *  0xffff82c400000000 - 0xffff82c43fffffff [1GB,   2^30 bytes, PML4:261]
 
157
 *    Compatibility machine-to-phys translation table.
 
158
 *  0xffff82c440000000 - 0xffff82c47fffffff [1GB,   2^30 bytes, PML4:261]
 
159
 *    High read-only compatibility machine-to-phys translation table.
 
160
 *  0xffff82c480000000 - 0xffff82c4bfffffff [1GB,   2^30 bytes, PML4:261]
 
161
 *    Xen text, static data, bss.
 
162
 *  0xffff82c4c0000000 - 0xffff82f5ffffffff [197GB,             PML4:261]
 
163
 *    Reserved for future use.
 
164
 *  0xffff82f600000000 - 0xffff82ffffffffff [40GB,  2^38 bytes, PML4:261]
 
165
 *    Page-frame information array.
 
166
 *  0xffff830000000000 - 0xffff87ffffffffff [5TB, 5*2^40 bytes, PML4:262-271]
 
167
 *    1:1 direct mapping of all physical memory.
 
168
 *  0xffff880000000000 - 0xffffffffffffffff [120TB, PML4:272-511]
 
169
 *    Guest-defined use.
 
170
 *
 
171
 * Compatibility guest area layout:
 
172
 *  0x0000000000000000 - 0x00000000f57fffff [3928MB,            PML4:0]
 
173
 *    Guest-defined use.
 
174
 *  0x00000000f5800000 - 0x00000000ffffffff [168MB,             PML4:0]
 
175
 *    Read-only machine-to-phys translation table (GUEST ACCESSIBLE).
 
176
 *  0x0000000100000000 - 0x0000007fffffffff [508GB,             PML4:0]
 
177
 *    Unused.
 
178
 *  0x0000008000000000 - 0x000000ffffffffff [512GB, 2^39 bytes, PML4:1]
 
179
 *    Hypercall argument translation area.
 
180
 *  0x0000010000000000 - 0x00007fffffffffff [127TB, 2^46 bytes, PML4:2-255]
 
181
 *    Reserved for future use.
 
182
 */
 
183
 
 
184
 
 
185
#define ROOT_PAGETABLE_FIRST_XEN_SLOT 256
 
186
#define ROOT_PAGETABLE_LAST_XEN_SLOT  271
 
187
#define ROOT_PAGETABLE_XEN_SLOTS \
 
188
    (ROOT_PAGETABLE_LAST_XEN_SLOT - ROOT_PAGETABLE_FIRST_XEN_SLOT + 1)
 
189
 
 
190
/* Hypervisor reserves PML4 slots 256 to 271 inclusive. */
 
191
#define HYPERVISOR_VIRT_START   (PML4_ADDR(256))
 
192
#define HYPERVISOR_VIRT_END     (HYPERVISOR_VIRT_START + PML4_ENTRY_BYTES*16)
 
193
/* Slot 256: read-only guest-accessible machine-to-phys translation table. */
 
194
#define RO_MPT_VIRT_START       (PML4_ADDR(256))
 
195
#define MPT_VIRT_SIZE           (PML4_ENTRY_BYTES / 2)
 
196
#define RO_MPT_VIRT_END         (RO_MPT_VIRT_START + MPT_VIRT_SIZE)
 
197
/* Slot 257: ioremap for PCI mmconfig space for 2048 segments (512GB)
 
198
 *     - full 16-bit segment support needs 44 bits
 
199
 *     - since PML4 slot has 39 bits, we limit segments to 2048 (11-bits)
 
200
 */
 
201
#define PCI_MCFG_VIRT_START     (PML4_ADDR(257))
 
202
#define PCI_MCFG_VIRT_END       (PCI_MCFG_VIRT_START + PML4_ENTRY_BYTES)
 
203
/* Slot 258: linear page table (guest table). */
 
204
#define LINEAR_PT_VIRT_START    (PML4_ADDR(258))
 
205
#define LINEAR_PT_VIRT_END      (LINEAR_PT_VIRT_START + PML4_ENTRY_BYTES)
 
206
/* Slot 259: linear page table (shadow table). */
 
207
#define SH_LINEAR_PT_VIRT_START (PML4_ADDR(259))
 
208
#define SH_LINEAR_PT_VIRT_END   (SH_LINEAR_PT_VIRT_START + PML4_ENTRY_BYTES)
 
209
/* Slot 260: per-domain mappings. */
 
210
#define PERDOMAIN_VIRT_START    (PML4_ADDR(260))
 
211
#define PERDOMAIN_VIRT_END      (PERDOMAIN_VIRT_START + (PERDOMAIN_MBYTES<<20))
 
212
#define PERDOMAIN_MBYTES        (PML4_ENTRY_BYTES >> (20 + PAGETABLE_ORDER))
 
213
/* Slot 261: machine-to-phys conversion table (256GB). */
 
214
#define RDWR_MPT_VIRT_START     (PML4_ADDR(261))
 
215
#define RDWR_MPT_VIRT_END       (RDWR_MPT_VIRT_START + MPT_VIRT_SIZE)
 
216
/* Slot 261: ioremap()/fixmap area (16GB). */
 
217
#define IOREMAP_VIRT_START      RDWR_MPT_VIRT_END
 
218
#define IOREMAP_VIRT_END        (IOREMAP_VIRT_START + GB(16))
 
219
/* Slot 261: compatibility machine-to-phys conversion table (1GB). */
 
220
#define RDWR_COMPAT_MPT_VIRT_START IOREMAP_VIRT_END
 
221
#define RDWR_COMPAT_MPT_VIRT_END (RDWR_COMPAT_MPT_VIRT_START + GB(1))
 
222
/* Slot 261: high read-only compat machine-to-phys conversion table (1GB). */
 
223
#define HIRO_COMPAT_MPT_VIRT_START RDWR_COMPAT_MPT_VIRT_END
 
224
#define HIRO_COMPAT_MPT_VIRT_END (HIRO_COMPAT_MPT_VIRT_START + GB(1))
 
225
/* Slot 261: xen text, static data and bss (1GB). */
 
226
#define XEN_VIRT_START          (HIRO_COMPAT_MPT_VIRT_END)
 
227
#define XEN_VIRT_END            (XEN_VIRT_START + GB(1))
 
228
/* Slot 261: page-frame information array (40GB). */
 
229
#define FRAMETABLE_VIRT_END     DIRECTMAP_VIRT_START
 
230
#define FRAMETABLE_SIZE         ((DIRECTMAP_SIZE >> PAGE_SHIFT) * \
 
231
                                 sizeof(struct page_info))
 
232
#define FRAMETABLE_VIRT_START   (FRAMETABLE_VIRT_END - FRAMETABLE_SIZE)
 
233
/* Slot 262-271: A direct 1:1 mapping of all of physical memory. */
 
234
#define DIRECTMAP_VIRT_START    (PML4_ADDR(262))
 
235
#define DIRECTMAP_SIZE          (PML4_ENTRY_BYTES*10)
 
236
#define DIRECTMAP_VIRT_END      (DIRECTMAP_VIRT_START + DIRECTMAP_SIZE)
 
237
 
 
238
#ifndef __ASSEMBLY__
 
239
 
 
240
/* This is not a fixed value, just a lower limit. */
 
241
#define __HYPERVISOR_COMPAT_VIRT_START 0xF5800000
 
242
#define HYPERVISOR_COMPAT_VIRT_START(d) ((d)->arch.hv_compat_vstart)
 
243
#define MACH2PHYS_COMPAT_VIRT_START    HYPERVISOR_COMPAT_VIRT_START
 
244
#define MACH2PHYS_COMPAT_VIRT_END      0xFFE00000
 
245
#define MACH2PHYS_COMPAT_NR_ENTRIES(d) \
 
246
    ((MACH2PHYS_COMPAT_VIRT_END-MACH2PHYS_COMPAT_VIRT_START(d))>>2)
 
247
 
 
248
#define COMPAT_L2_PAGETABLE_FIRST_XEN_SLOT(d) \
 
249
    l2_table_offset(HYPERVISOR_COMPAT_VIRT_START(d))
 
250
#define COMPAT_L2_PAGETABLE_LAST_XEN_SLOT  l2_table_offset(~0U)
 
251
#define COMPAT_L2_PAGETABLE_XEN_SLOTS(d) \
 
252
    (COMPAT_L2_PAGETABLE_LAST_XEN_SLOT - COMPAT_L2_PAGETABLE_FIRST_XEN_SLOT(d) + 1)
 
253
 
 
254
#define COMPAT_LEGACY_MAX_VCPUS XEN_LEGACY_MAX_VCPUS
 
255
 
 
256
#endif
 
257
 
 
258
#define PGT_base_page_table     PGT_l4_page_table
 
259
 
 
260
#define __HYPERVISOR_CS64 0xe008
 
261
#define __HYPERVISOR_CS32 0xe038
 
262
#define __HYPERVISOR_CS   __HYPERVISOR_CS64
 
263
#define __HYPERVISOR_DS64 0x0000
 
264
#define __HYPERVISOR_DS32 0xe010
 
265
#define __HYPERVISOR_DS   __HYPERVISOR_DS64
 
266
 
 
267
#define SYMBOLS_ORIGIN XEN_VIRT_START
 
268
 
 
269
/* For generic assembly code: use macros to define operation/operand sizes. */
 
270
#define __OS          "q"  /* Operation Suffix */
 
271
#define __OP          "r"  /* Operand Prefix */
 
272
#define __FIXUP_ALIGN ".align 8"
 
273
#define __FIXUP_WORD  ".quad"
 
274
 
 
275
#elif defined(__i386__)
 
276
 
 
277
#define CONFIG_X86_32      1
 
278
#define CONFIG_DOMAIN_PAGE 1
 
279
 
 
280
#define asmlinkage __attribute__((regparm(0)))
 
281
 
 
282
/*
 
283
 * Memory layout (high to low):                          PAE-SIZE
 
284
 *                                                       ------
 
285
 *  I/O remapping area                                   ( 4MB)
 
286
 *  Direct-map (1:1) area [Xen code/data/heap]           (12MB)
 
287
 *  Per-domain mappings (inc. 4MB map_domain_page cache) ( 8MB)
 
288
 *  Shadow linear pagetable                              ( 8MB)
 
289
 *  Guest linear pagetable                               ( 8MB)
 
290
 *  Machine-to-physical translation table [writable]     (16MB)
 
291
 *  Frame-info table                                     (96MB)
 
292
 *   * Start of guest inaccessible area
 
293
 *  Machine-to-physical translation table [read-only]    (16MB)
 
294
 *   * Start of guest unmodifiable area
 
295
 */
 
296
 
 
297
#define IOREMAP_MBYTES           4
 
298
#define DIRECTMAP_MBYTES        12
 
299
#define MAPCACHE_MBYTES          4
 
300
#define PERDOMAIN_MBYTES         8
 
301
 
 
302
#define LINEARPT_MBYTES          8
 
303
#define MACHPHYS_MBYTES         16 /* 1 MB needed per 1 GB memory */
 
304
#define FRAMETABLE_MBYTES       (MACHPHYS_MBYTES * 6)
 
305
 
 
306
#define IOREMAP_VIRT_END        0UL
 
307
#define IOREMAP_VIRT_START      (IOREMAP_VIRT_END - (IOREMAP_MBYTES<<20))
 
308
#define DIRECTMAP_VIRT_END      IOREMAP_VIRT_START
 
309
#define DIRECTMAP_VIRT_START    (DIRECTMAP_VIRT_END - (DIRECTMAP_MBYTES<<20))
 
310
#define MAPCACHE_VIRT_END       DIRECTMAP_VIRT_START
 
311
#define MAPCACHE_VIRT_START     (MAPCACHE_VIRT_END - (MAPCACHE_MBYTES<<20))
 
312
#define PERDOMAIN_VIRT_END      DIRECTMAP_VIRT_START
 
313
#define PERDOMAIN_VIRT_START    (PERDOMAIN_VIRT_END - (PERDOMAIN_MBYTES<<20))
 
314
#define SH_LINEAR_PT_VIRT_END   PERDOMAIN_VIRT_START
 
315
#define SH_LINEAR_PT_VIRT_START (SH_LINEAR_PT_VIRT_END - (LINEARPT_MBYTES<<20))
 
316
#define LINEAR_PT_VIRT_END      SH_LINEAR_PT_VIRT_START
 
317
#define LINEAR_PT_VIRT_START    (LINEAR_PT_VIRT_END - (LINEARPT_MBYTES<<20))
 
318
#define RDWR_MPT_VIRT_END       LINEAR_PT_VIRT_START
 
319
#define RDWR_MPT_VIRT_START     (RDWR_MPT_VIRT_END - (MACHPHYS_MBYTES<<20))
 
320
#define FRAMETABLE_VIRT_END     RDWR_MPT_VIRT_START
 
321
#define FRAMETABLE_SIZE         (FRAMETABLE_MBYTES<<20)
 
322
#define FRAMETABLE_VIRT_START   (FRAMETABLE_VIRT_END - FRAMETABLE_SIZE)
 
323
#define RO_MPT_VIRT_END         FRAMETABLE_VIRT_START
 
324
#define RO_MPT_VIRT_START       (RO_MPT_VIRT_END - (MACHPHYS_MBYTES<<20))
 
325
 
 
326
#define DIRECTMAP_PHYS_END      (DIRECTMAP_MBYTES<<20)
 
327
 
 
328
/* Maximum linear address accessible via guest memory segments. */
 
329
#define GUEST_SEGMENT_MAX_ADDR  RO_MPT_VIRT_END
 
330
 
 
331
/* Hypervisor owns top 168MB of virtual address space. */
 
332
#define HYPERVISOR_VIRT_START   mk_unsigned_long(0xF5800000)
 
333
 
 
334
#define L2_PAGETABLE_FIRST_XEN_SLOT \
 
335
    (HYPERVISOR_VIRT_START >> L2_PAGETABLE_SHIFT)
 
336
#define L2_PAGETABLE_LAST_XEN_SLOT  \
 
337
    (~0UL >> L2_PAGETABLE_SHIFT)
 
338
#define L2_PAGETABLE_XEN_SLOTS \
 
339
    (L2_PAGETABLE_LAST_XEN_SLOT - L2_PAGETABLE_FIRST_XEN_SLOT + 1)
 
340
 
 
341
#define PGT_base_page_table     PGT_l3_page_table
 
342
 
 
343
#define __HYPERVISOR_CS 0xe008
 
344
#define __HYPERVISOR_DS 0xe010
 
345
 
 
346
/* For generic assembly code: use macros to define operation/operand sizes. */
 
347
#define __OS          "l"  /* Operation Suffix */
 
348
#define __OP          "e"  /* Operand Prefix */
 
349
#define __FIXUP_ALIGN ".align 4"
 
350
#define __FIXUP_WORD  ".long"
 
351
 
 
352
#endif /* __i386__ */
 
353
 
 
354
#ifndef __ASSEMBLY__
 
355
extern unsigned long xen_phys_start;
 
356
#if defined(__i386__)
 
357
extern unsigned long xenheap_phys_end;
 
358
#endif
 
359
#endif
 
360
 
 
361
/* GDT/LDT shadow mapping area. The first per-domain-mapping sub-area. */
 
362
#define GDT_LDT_VCPU_SHIFT       5
 
363
#define GDT_LDT_VCPU_VA_SHIFT    (GDT_LDT_VCPU_SHIFT + PAGE_SHIFT)
 
364
#ifdef MAX_VIRT_CPUS
 
365
#define GDT_LDT_MBYTES           (MAX_VIRT_CPUS >> (20-GDT_LDT_VCPU_VA_SHIFT))
 
366
#else
 
367
#define GDT_LDT_MBYTES           PERDOMAIN_MBYTES
 
368
#define MAX_VIRT_CPUS            (GDT_LDT_MBYTES << (20-GDT_LDT_VCPU_VA_SHIFT))
 
369
#endif
 
370
#define GDT_LDT_VIRT_START       PERDOMAIN_VIRT_START
 
371
#define GDT_LDT_VIRT_END         (GDT_LDT_VIRT_START + (GDT_LDT_MBYTES << 20))
 
372
 
 
373
/* The address of a particular VCPU's GDT or LDT. */
 
374
#define GDT_VIRT_START(v)    \
 
375
    (PERDOMAIN_VIRT_START + ((v)->vcpu_id << GDT_LDT_VCPU_VA_SHIFT))
 
376
#define LDT_VIRT_START(v)    \
 
377
    (GDT_VIRT_START(v) + (64*1024))
 
378
 
 
379
#define PDPT_L1_ENTRIES       \
 
380
    ((PERDOMAIN_VIRT_END - PERDOMAIN_VIRT_START) >> PAGE_SHIFT)
 
381
#define PDPT_L2_ENTRIES       \
 
382
    ((PDPT_L1_ENTRIES + (1 << PAGETABLE_ORDER) - 1) >> PAGETABLE_ORDER)
 
383
 
 
384
#if defined(__x86_64__)
 
385
#define ELFSIZE 64
 
386
#else
 
387
#define ELFSIZE 32
 
388
#endif
 
389
 
 
390
#define ARCH_CRASH_SAVE_VMCOREINFO
 
391
 
 
392
#endif /* __X86_CONFIG_H__ */