diff options
-rw-r--r-- | arch/x86/kernel/head_32.S | 6 | ||||
-rw-r--r-- | arch/x86/kernel/verify_cpu.S | 1 |
2 files changed, 7 insertions, 0 deletions
diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S index bcece91dd311..fdaea523ac8f 100644 --- a/arch/x86/kernel/head_32.S +++ b/arch/x86/kernel/head_32.S | |||
@@ -314,6 +314,10 @@ ENTRY(startup_32_smp) | |||
314 | subl $0x80000001, %eax | 314 | subl $0x80000001, %eax |
315 | cmpl $(0x8000ffff-0x80000001), %eax | 315 | cmpl $(0x8000ffff-0x80000001), %eax |
316 | ja 6f | 316 | ja 6f |
317 | |||
318 | /* Clear bogus XD_DISABLE bits */ | ||
319 | call verify_cpu | ||
320 | |||
317 | mov $0x80000001, %eax | 321 | mov $0x80000001, %eax |
318 | cpuid | 322 | cpuid |
319 | /* Execute Disable bit supported? */ | 323 | /* Execute Disable bit supported? */ |
@@ -609,6 +613,8 @@ ignore_int: | |||
609 | #endif | 613 | #endif |
610 | iret | 614 | iret |
611 | 615 | ||
616 | #include "verify_cpu.S" | ||
617 | |||
612 | __REFDATA | 618 | __REFDATA |
613 | .align 4 | 619 | .align 4 |
614 | ENTRY(initial_code) | 620 | ENTRY(initial_code) |
diff --git a/arch/x86/kernel/verify_cpu.S b/arch/x86/kernel/verify_cpu.S index ccb4136da0aa..5644b4b7ed28 100644 --- a/arch/x86/kernel/verify_cpu.S +++ b/arch/x86/kernel/verify_cpu.S | |||
@@ -19,6 +19,7 @@ | |||
19 | * | 19 | * |
20 | * arch/x86_64/boot/compressed/head_64.S: Boot cpu verification | 20 | * arch/x86_64/boot/compressed/head_64.S: Boot cpu verification |
21 | * arch/x86_64/kernel/trampoline_64.S: secondary processor verfication | 21 | * arch/x86_64/kernel/trampoline_64.S: secondary processor verfication |
22 | * arch/x86_64/kernel/head_32.S: processor startup | ||
22 | * | 23 | * |
23 | * verify_cpu, returns the status of longmode and SSE in register %eax. | 24 | * verify_cpu, returns the status of longmode and SSE in register %eax. |
24 | * 0: Success 1: Failure | 25 | * 0: Success 1: Failure |