aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/boot/x86_64.S
diff options
context:
space:
mode:
authorkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>2005-02-08 19:57:24 +0000
committerkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>2005-02-08 19:57:24 +0000
commit5c74609870471f83fc12ddf799322975396dc0a7 (patch)
tree599bcae92649bd3047776a9c969ca1cae261bfd7 /xen/arch/x86/boot/x86_64.S
parent0bb3ebdb6caeeed458936bc0a2a16898c622302e (diff)
downloadxen-5c74609870471f83fc12ddf799322975396dc0a7.tar.gz
xen-5c74609870471f83fc12ddf799322975396dc0a7.tar.bz2
xen-5c74609870471f83fc12ddf799322975396dc0a7.zip
bitkeeper revision 1.1159.256.1 (420919a4fFt2x7Ej4o_xqAI2CSYN8Q)
mmu_update fixes for x86_64. About halfway there. Signed-off-by: keir.fraser@cl.cam.ac.uk
Diffstat (limited to 'xen/arch/x86/boot/x86_64.S')
-rw-r--r--xen/arch/x86/boot/x86_64.S10
1 files changed, 7 insertions, 3 deletions
diff --git a/xen/arch/x86/boot/x86_64.S b/xen/arch/x86/boot/x86_64.S
index 9d61523138..2b89d9caa4 100644
--- a/xen/arch/x86/boot/x86_64.S
+++ b/xen/arch/x86/boot/x86_64.S
@@ -75,6 +75,7 @@ __start:
cpuid
bt $29,%edx # Long mode feature?
jnc bad_cpu
+ mov %edx,%edi
skip_boot_checks:
/* Set up FPU. */
@@ -91,9 +92,12 @@ skip_boot_checks:
/* Set up EFER (Extended Feature Enable Register). */
movl $MSR_EFER, %ecx
rdmsr
- /* Long Mode, SYSCALL/SYSRET, No-Execute */
- movl $(EFER_LME|EFER_SCE|EFER_NX),%eax
- wrmsr
+ btsl $_EFER_LME,%eax /* Long Mode */
+ btsl $_EFER_SCE,%eax /* SYSCALL/SYSRET */
+ btl $20,%edi /* CPUID 0x80000001, EDX[20] */
+ jnc 1f
+ btsl $_EFER_NX,%eax /* No-Execute */
+1: wrmsr
mov $0x80050033,%eax /* hi-to-lo: PG,AM,WP,NE,ET,MP,PE */
mov %eax,%cr0