summaryrefslogtreecommitdiffstats
path: root/arch/x86/secondary.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/secondary.S')
-rw-r--r--arch/x86/secondary.S7
1 files changed, 4 insertions, 3 deletions
diff --git a/arch/x86/secondary.S b/arch/x86/secondary.S
index 8c9ea898fbe1..7d795cfd3976 100644
--- a/arch/x86/secondary.S
+++ b/arch/x86/secondary.S
@@ -24,12 +24,13 @@
.text
.globl _secondary_start, _secondary_start_end
_secondary_start:
+1:
.code16
.balign 4096
cli
+ movl $1b, %ebx
xorl %eax, %eax
movl %eax, %cr3 /* Invalidate TLB*/
-
/* On hyper threaded cpus, invalidating the cache here is
* very very bad. Don't.
*/
@@ -60,8 +61,8 @@ secondary32:
lidt idtarg
/* Set the stack pointer */
- movl $_secondary_start-4,%eax
- movl 0x0(%eax),%esp
+ movl -4(%ebx),%esp
+ movl $0, -4(%ebx)
call secondary_cpu_init
1: hlt