Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 56673
b: refs/heads/master
c: 39427d6
h: refs/heads/master
i:
  56671: 12a3856
v: v3
  • Loading branch information
Andi Kleen authored and Linus Torvalds committed May 21, 2007
1 parent c522667 commit 90fc7df
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 4c1f59d8be7e5da75d9380da23671005b363c45c
refs/heads/master: 39427d6e595ebee38fdd77bcf55d6b13d7a4324a
27 changes: 27 additions & 0 deletions trunk/arch/i386/kernel/verify_cpu.S
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
This runs in 16bit mode so that the caller can still use the BIOS
to output errors on the screen */
#include <asm/cpufeature.h>
#include <asm/msr.h>

verify_cpu:
pushfl # Save caller passed flags
Expand Down Expand Up @@ -45,6 +46,32 @@ verify_cpu:
cmpl $0x1,%eax
jb bad # no cpuid 1

#if REQUIRED_MASK1 & NEED_CMPXCHG64
/* Some VIA C3s need magic MSRs to enable CX64. Do this here */
cmpl $0x746e6543,%ebx # Cent
jne 1f
cmpl $0x48727561,%edx # aurH
jne 1f
cmpl $0x736c7561,%ecx # auls
jne 1f
movl $1,%eax # check model
cpuid
movl %eax,%ebx
shr $8,%ebx
andl $0xf,%ebx
cmp $6,%ebx # check family == 6
jne 1f
shr $4,%eax
andl $0xf,%eax
cmpl $6,%eax # check model >= 6
jb 1f
# assume models >= 6 all support this MSR
movl $MSR_VIA_FCR,%ecx
rdmsr
orl $((1<<1)|(1<<7)),%eax # enable CMPXCHG64 and PGE
wrmsr
1:
#endif
movl $0x1,%eax # Does the cpu have what it takes
cpuid

Expand Down

0 comments on commit 90fc7df

Please sign in to comment.