diff options
author | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2005-02-08 19:57:24 +0000 |
---|---|---|
committer | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2005-02-08 19:57:24 +0000 |
commit | 5c74609870471f83fc12ddf799322975396dc0a7 (patch) | |
tree | 599bcae92649bd3047776a9c969ca1cae261bfd7 /xen/arch/x86/boot/x86_64.S | |
parent | 0bb3ebdb6caeeed458936bc0a2a16898c622302e (diff) | |
download | xen-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.S | 10 |
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 |