hw: prevent segment register re-loading

Fix #2497
This commit is contained in:
Stefan Kalkowski 2017-08-18 13:14:59 +02:00 committed by Christian Helmuth
parent e90d21c9ab
commit 264e64d3ec
2 changed files with 3 additions and 20 deletions

View File

@ -91,12 +91,10 @@
_start64:
/*
* Set up kernel segment selectors
* Set up segment selectors fs and gs to zero
* ignore ss, cs and ds because they are ignored by hardware in long mode
*/
mov $0x10, %eax
mov %eax, %ss
mov %eax, %ds
mov %eax, %es
mov $0x0, %eax
mov %eax, %fs
mov %eax, %gs

View File

@ -181,14 +181,6 @@
pushq %r9
pushq %r8
/* Restore kernel segment registers */
mov $0x10, %rbx
mov %rbx, %ss
mov %rbx, %ds
mov %rbx, %es
mov %rbx, %fs
mov %rbx, %gs
/* Restore register values from kernel context */
mov $_mt_master_context_begin+R8_OFFSET, %rsp
popq %r8
@ -224,13 +216,6 @@
pushq $0x1b
pushq (%rax)
/* Restore segment registers */
mov $0x23, %rbx
mov %rbx, %ds
mov %rbx, %es
mov %rbx, %fs
mov %rbx, %gs
/* Restore register values from client context */
lea R8_OFFSET(%rax), %rsp
popq %r8