diff options
Diffstat (limited to 'arch/i386/boot/pm.c')
-rw-r--r-- | arch/i386/boot/pm.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/i386/boot/pm.c b/arch/i386/boot/pm.c index 6be9ca811d17..09fb342cc62e 100644 --- a/arch/i386/boot/pm.c +++ b/arch/i386/boot/pm.c | |||
@@ -122,7 +122,11 @@ static void setup_gdt(void) | |||
122 | /* DS: data, read/write, 4 GB, base 0 */ | 122 | /* DS: data, read/write, 4 GB, base 0 */ |
123 | [GDT_ENTRY_BOOT_DS] = GDT_ENTRY(0xc093, 0, 0xfffff), | 123 | [GDT_ENTRY_BOOT_DS] = GDT_ENTRY(0xc093, 0, 0xfffff), |
124 | }; | 124 | }; |
125 | struct gdt_ptr gdt; | 125 | /* Xen HVM incorrectly stores a pointer to the gdt_ptr, instead |
126 | of the gdt_ptr contents. Thus, make it static so it will | ||
127 | stay in memory, at least long enough that we switch to the | ||
128 | proper kernel GDT. */ | ||
129 | static struct gdt_ptr gdt; | ||
126 | 130 | ||
127 | gdt.len = sizeof(boot_gdt)-1; | 131 | gdt.len = sizeof(boot_gdt)-1; |
128 | gdt.ptr = (u32)&boot_gdt + (ds() << 4); | 132 | gdt.ptr = (u32)&boot_gdt + (ds() << 4); |