|
@@ -429,12 +429,14 @@ is386: movl $2,%ecx # set MP
|
|
ljmp $(__KERNEL_CS),$1f
|
|
ljmp $(__KERNEL_CS),$1f
|
|
1: movl $(__KERNEL_DS),%eax # reload all the segment registers
|
|
1: movl $(__KERNEL_DS),%eax # reload all the segment registers
|
|
movl %eax,%ss # after changing gdt.
|
|
movl %eax,%ss # after changing gdt.
|
|
- movl %eax,%fs # gets reset once there's real percpu
|
|
|
|
|
|
|
|
movl $(__USER_DS),%eax # DS/ES contains default USER segment
|
|
movl $(__USER_DS),%eax # DS/ES contains default USER segment
|
|
movl %eax,%ds
|
|
movl %eax,%ds
|
|
movl %eax,%es
|
|
movl %eax,%es
|
|
|
|
|
|
|
|
+ movl $(__KERNEL_PERCPU), %eax
|
|
|
|
+ movl %eax,%fs # set this cpu's percpu
|
|
|
|
+
|
|
xorl %eax,%eax # Clear GS and LDT
|
|
xorl %eax,%eax # Clear GS and LDT
|
|
movl %eax,%gs
|
|
movl %eax,%gs
|
|
lldt %ax
|
|
lldt %ax
|
|
@@ -446,8 +448,6 @@ is386: movl $2,%ecx # set MP
|
|
movb $1, ready
|
|
movb $1, ready
|
|
cmpb $0,%cl # the first CPU calls start_kernel
|
|
cmpb $0,%cl # the first CPU calls start_kernel
|
|
je 1f
|
|
je 1f
|
|
- movl $(__KERNEL_PERCPU), %eax
|
|
|
|
- movl %eax,%fs # set this cpu's percpu
|
|
|
|
movl (stack_start), %esp
|
|
movl (stack_start), %esp
|
|
1:
|
|
1:
|
|
#endif /* CONFIG_SMP */
|
|
#endif /* CONFIG_SMP */
|