summaryrefslogtreecommitdiff
path: root/kvm
diff options
context:
space:
mode:
Diffstat (limited to 'kvm')
-rw-r--r--kvm/user/test/x86/cstart64.S11
1 files changed, 11 insertions, 0 deletions
diff --git a/kvm/user/test/x86/cstart64.S b/kvm/user/test/x86/cstart64.S
index e5554baff..f1a9d0955 100644
--- a/kvm/user/test/x86/cstart64.S
+++ b/kvm/user/test/x86/cstart64.S
@@ -80,9 +80,19 @@ mb_flags = 0x0
# multiboot header
.long mb_magic, mb_flags, 0 - (mb_magic + mb_flags)
+MSR_GS_BASE = 0xc0000101
+
+.macro setup_percpu_area
+ lea -4096(%esp), %eax
+ mov $0, %edx
+ mov $MSR_GS_BASE, %ecx
+ wrmsr
+.endm
+
.globl start
start:
mov $stacktop, %esp
+ setup_percpu_area
call prepare_64
jmpl $8, $start64
@@ -142,6 +152,7 @@ ap_start32:
mov %ax, %ss
mov $-4096, %esp
lock/xaddl %esp, smp_stacktop
+ setup_percpu_area
call prepare_64
ljmpl $8, $ap_start64