diff options
author | Borislav Petkov <bp@suse.de> | 2013-02-11 15:22:17 +0100 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2013-02-12 15:48:42 -0800 |
commit | c3a22a26d07d928e2b74b58e2f9d2436958620f0 (patch) | |
tree | 9587a420b765651c13765311ee97ba0bcc753104 | |
parent | 9efb58de919efa8312861d454be014094f6f0ffc (diff) |
x86, head_32: Remove second CPUID detection from default_entry
We do that once earlier now and cache it into new_cpu_data.cpuid_level
so no need for the EFLAGS.ID toggling dance anymore.
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: http://lkml.kernel.org/r/1360592538-10643-4-git-send-email-bp@alien8.de
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
-rw-r--r-- | arch/x86/kernel/head_32.S | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S index e3725a0f432..2e8532e7c80 100644 --- a/arch/x86/kernel/head_32.S +++ b/arch/x86/kernel/head_32.S @@ -399,18 +399,7 @@ default_entry: /* * Check if it is 486 */ - movl $-1,X86_CPUID # -1 for no CPUID initially - movb $4,X86 # at least 486 - pushfl # push EFLAGS - popl %eax # get EFLAGS - movl %eax,%ecx # save original EFLAGS - xorl $0x200000,%eax # flip ID bit in EFLAGS - pushl %eax # copy to EFLAGS - popfl # set EFLAGS - pushfl # get new EFLAGS - popl %eax # put it in eax - xorl %ecx,%eax # change in flags - testl $0x200000,%eax # check if ID bit changed + cmpl $-1,X86_CPUID je is486 /* get vendor info */ @@ -436,7 +425,9 @@ default_entry: movb %cl,X86_MASK movl %edx,X86_CAPABILITY -is486: movl $0x50022,%ecx # set AM, WP, NE and MP +is486: + movb $4,X86 + movl $0x50022,%ecx # set AM, WP, NE and MP movl %cr0,%eax andl $0x80000011,%eax # Save PG,PE,ET orl %ecx,%eax |