diff options
Diffstat (limited to 'arch/x86/boot/pm.c')
-rw-r--r-- | arch/x86/boot/pm.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/x86/boot/pm.c b/arch/x86/boot/pm.c index 09fb342cc62e..1a0f936c160b 100644 --- a/arch/x86/boot/pm.c +++ b/arch/x86/boot/pm.c | |||
@@ -104,7 +104,7 @@ static void reset_coprocessor(void) | |||
104 | (((u64)(base & 0xff000000) << 32) | \ | 104 | (((u64)(base & 0xff000000) << 32) | \ |
105 | ((u64)flags << 40) | \ | 105 | ((u64)flags << 40) | \ |
106 | ((u64)(limit & 0x00ff0000) << 32) | \ | 106 | ((u64)(limit & 0x00ff0000) << 32) | \ |
107 | ((u64)(base & 0x00ffff00) << 16) | \ | 107 | ((u64)(base & 0x00ffffff) << 16) | \ |
108 | ((u64)(limit & 0x0000ffff))) | 108 | ((u64)(limit & 0x0000ffff))) |
109 | 109 | ||
110 | struct gdt_ptr { | 110 | struct gdt_ptr { |
@@ -121,6 +121,10 @@ static void setup_gdt(void) | |||
121 | [GDT_ENTRY_BOOT_CS] = GDT_ENTRY(0xc09b, 0, 0xfffff), | 121 | [GDT_ENTRY_BOOT_CS] = GDT_ENTRY(0xc09b, 0, 0xfffff), |
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 | /* TSS: 32-bit tss, 104 bytes, base 4096 */ | ||
125 | /* We only have a TSS here to keep Intel VT happy; | ||
126 | we don't actually use it for anything. */ | ||
127 | [GDT_ENTRY_BOOT_TSS] = GDT_ENTRY(0x0089, 4096, 103), | ||
124 | }; | 128 | }; |
125 | /* Xen HVM incorrectly stores a pointer to the gdt_ptr, instead | 129 | /* Xen HVM incorrectly stores a pointer to the gdt_ptr, instead |
126 | of the gdt_ptr contents. Thus, make it static so it will | 130 | of the gdt_ptr contents. Thus, make it static so it will |