From 1c4c51ae503a37f83f21f2efaeab0c1ae148f321 Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Sat, 14 Jul 2012 12:15:01 +0200 Subject: [PATCH] port esp0-patch to x86_64 --- arch/x86/kernel/entry64.asm | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/arch/x86/kernel/entry64.asm b/arch/x86/kernel/entry64.asm index f70d9f44..ba38163c 100644 --- a/arch/x86/kernel/entry64.asm +++ b/arch/x86/kernel/entry64.asm @@ -1146,8 +1146,14 @@ common_switch: xor rax, rax %endif add rax, task_state_segments - ; set rsp0 in TSS - mov [rax+4], rsp + + ; determine and set esp0 in TSS + mov rbx, rsp + mov rcx, KERNEL_STACK_SIZE-1 + not rcx + and rbx, rcx + add rbx, KERNEL_STACK_SIZE-16 + mov [rax+4], rbx ; call cleanup code call finish_task_switch